< Todos los temas
Imprimir

Estructuras de control

Este tema es un poco conocido para nosotros, ya que en Scratch estudiamos algo llamado bloques de control, estos, en pocas palabras, nos servian para controlar el flujo de nuestra aplicación. Es decir, si queriamos realizar alguna toma de decisión o repetir alguna instrucción, nos dirigiamos a la categoría de bloques de control. Esto no es tan diferente en C, basicamente la lógica es la misma, pero la sintaxis va a cambiar. En caso de que no nos acordemos, ya estaremos repasando este tema.

Operadores

Para hablar de estructuras de control, primero debemos estudiar lo que son los operadores. Estos son herramentas o símbolos que existen en matemáticas y programación, los cuales podemos utilizar para indicarle a nuestro programa que realice una acción específica o que evalue ciertos valores. Estos se dividen en tres grupos:

Operadores aritméticos

Estos son aquellos que utilizamos para realizar operaciones matemáticas básicas, entre las cuales encontramos la suma (+), multiplicación (*), resta (-) y división (/). A estos 4 también le agregaremos uno llamado modulo (%), el cual ocupamos para obtener el residuo de una división.

Operadores relacionales

Este tipo de operadores nos permiten comparar dos valores, estos valores pueden estar definidos dentro de una variable o no. Entre estos tenemos los siguientes:

OperadorDefiniciónEjemplo
<Menor quex < y
>Mayor quex > y
<=Menor o igual quex <= y
>=Mayor o igual quex >= y
==Igualx == y
!=Diferentex != y

Operadores lógicos

¿Qué pasa si quiero evaluar mas de dos datos? Bueno, los operadores lógicos nos solucionan esto, nos permiten agrupar varias comparaciones en una sola, veamos cuales existen:

OperadorDefiniciónEjemplo
&&Devuelve true cuando ambas condiciones se cumplen.(x < y && y > 1)
||Devuelve true cuando una o ambas condiciones se cumplen.( x< y || y > z)
!Devuelve true cuando no se cumple la condición.!(x > z)

Condiciones

En algún momento de nuestro proceso de desarrollo, nos vamos a encontrar con la situación de que debe existir una o mas opciones para el flujo de nuestro programa. Dependiendo de que si la respuesta a esta pregunta, la cual es una expresión booleana, nuestro código sigue ciertas acciones e ignora otras. Veamos las sintaxis.

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int x = get_int("Ingrese el primer numero: ");
    int y = get_int("Ingrese otro numero: ");

    if(x > y)
    {
        printf("%d es mayor que %d\n", x, y);
    }

    return 0;
}

También podemos tener código que se ejecute en caso de que la condición no se cumpla, a eso le vamos a conocer como else.

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int x = get_int("Ingrese el primer numero: ");
    int y = get_int("Ingrese otro numero: ");

    if(x > y)
    {
        printf("%d es mayor que %d\n", x, y);
    }
    else
    {
        printf("%d es mayor que %d\n", y, x);

    }

    return 0;
}

Por ultimo, también podemos agregar mas casos, no solo el que existe en el if, para esto usamos:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int x = get_int("Ingrese el primer numero: ");
    int y = get_int("Ingrese otro numero: ");

    if(x > y)
    {
        printf("%d es mayor que %d\n", x, y);
    }
    else if (x < y)
    {
        printf("%d es mayor que %d\n", y, x);
    }
    else
    {
        printf("Ambos numeros son iguales\n");
    }

    return 0;
}

Ciclos

Los ciclos, o también llamados bucles, son una forma de decirle a nuestro programa que repita o vuelva a ejecutar una instrucción, esto siempre y cuando se cumpla una condición. En C vamos a conocer 3 estructuras de repetición.

Ciclo while

Este ciclo se ejecuta siempre y cuando una condición se cumpla. Lo podemos ocupar para cuando no sabemos un numero exacto de repeticiones que queremos, pero si sabemos que debe de existir un caso o condición para que este se ejecute o no.

#include <cs50.h>
#include <stdio.h>

int main(void) 
{
    int numero;

    numero = get_int("Ingrese un número mayor que 0: ");

    while (numero <= 0)
    {
        numero = get_int("El número no es válido. Inténtelo de nuevo: ");
    }

    printf("El número es: %d\n", numero);

    return 0;
}

Ciclo do-while

Este funciona similar al ciclo while, este ejecuta la instrucción que deseamos y luego evalua una condición para saber si se repetirá la instrucción o no. Así que a diferencia del while, este al menos se va a ejecutar 1 vez.

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int numero;

    do
    {
        numero = get_int("Ingrese un número mayor que 0: ");
    } while (numero <= 0);

    printf("El número es: %d\n", numero);

    return 0;
}

Ciclo for

Este tipo de ciclo tiene una estructura un poco más compleja, se utiliza en muchos lenguajes de programación para ejecutar un bloque de código repetidamente un número específico de veces. El ciclo for consta de tres partes principales separadas por punto y coma (;):

  • Inicialización: En esta parte, se inicializa una variable de control del ciclo y se le asigna un valor inicial. Esta variable se utiliza para contar las iteraciones del ciclo.
  • Condición: Esta parte define la condición que debe cumplirse para que el ciclo continúe ejecutándose. Mientras esta condición sea verdadera, el ciclo continuará ejecutándose; de lo contrario, se detendrá.
  • Actualización: En esta parte, se actualiza la variable de control del ciclo después de cada iteración. Esto se hace típicamente para avanzar o cambiar el estado de la variable de control, de manera que eventualmente la condición de terminación se vuelva falsa y el ciclo se detenga.

Veamos un ejemplo:

#include <stdio.h>

int main() {
    
    // Ciclo for que imprime los números del 0 al 5
    for (int i = 0; i <= 5; i++) 
    {
        printf("%d ", i); // i es nuestra variable iteradora
    }
   
    return 0;
}

Con esto terminamos lo que son estructuras de control, aún hay mas temas que explorar y prácticar próximamente, asi que  ¡Te esperamos en OH!

Tabla de contenidos