Pages - Menu

martes, 7 de mayo de 2013

Curso básico de C 5/10: Control de flujo, Estructuras iterativas

Ya hemos aprendido los elementos básicos de un programa en C, la estructurade un programa, librerías, directivas, estructuras condicionales, etc. Ahora en ésta quinta entrega del curso básico de C vamos a ver otro tipo de estructuras de control de flujo, las estructuras iterativas.


Programación, estructuras iterativas y bucles
Foto tomada de freedigitalphotos.net

Con las estructuras iterativas (o bucles) podemos alterar el flujo de ejecución haciendo que una serie de instrucciones se repitan un número determinado de veces. Esto es útil para los casos en los que necesitemos recorrer arrays de datos o representar información repetitiva por pantalla, así nos ahorramos poner una instrucción por cada resultado.

Existen 3 tipos de estructuras iterativas, los bucles While, Do-While y For.

Los tres tipos de bucle funcionan de la misma forma, analizan una expresión y si su resultado es TRUE ejecutará las acciones que contenga, en caso de ser FALSE no entrará en el bucle. La diferencia entre las 3 estructuras es su modo de construirla.

Bucle While

El bucle While primero analiza una expresión, y si el resultado es TRUE procederá a ejecutar las sentencias pertinentes.

Su estructura es la siguiente:

while (expresión) {
sentencias;
}

Un ejemplo podría ser el de un programa que escriba la tabla de multiplicar del 2:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
            int i;
           
            i=1;

            while (i<=10){
                        printf("2 x %d = %d \n",i,2*i);
                        i++;
            }

system("PAUSE");    
return 0;
}

Es importante tener en cuenta la variable que está siendo evaluada en la expresión, tenemos que asegurarnos que modificamos su valor para que, llegados a cierto momento, el bucle pueda terminar, en caso contrario el bucle jamás parará y el programa no funcionará.

Bucle Do-While

El bucle Do-While es similar al bucle While excepto que en el While si la expresión resulta ser FALSE no ejecuta nada y en el Do-While ejecuta al menos una vez.

Su estructura es la siguiente:

do {
sentencias;
} while (expresión);

Un ejemplo muy típico es el de un menú por pantalla, de tal forma que al seleccionar una opción que no es válida el menú no realizará ninguna acción:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
            int opcion;
           
            do
            {
         printf("Seleccione opción:\n");
         printf("1 - Opción uno\n");
         printf("2 - Opción dos\n");
         printf("3 - Salir\n");
        
         scanf("%d",&opcion);
        
     }while(opcion!=3);

system("PAUSE");    
return 0;
}

Bucle For

El bucle for es similar al bucle while solo que en éste caso definimos dentro de su estructura la condición para salir y la modificación que la variable va a sufrir para que el bucle termine.

Su estructura es la siguiente:

for (inicialización variable; expresión a valorar; modificación variable) {
sentencias;
}

Un ejemplo perfecto es el que hemos visto antes de las tablas de multiplicar, con el bucle while era necesario controlar manualmente todas estas cosas, llegando a ésta estructura:

inicialización variable;
while (expresión a valorar) {
sentencias;
modificación variable;
}

Con el bucle for nos ahorramos este control ya que su propia estructura lo requiere (facilitando así la programación y el control de posibles errores como el del bucle infinito).

Veamos el ejemplo de las tablas de multiplicar realizado con un bucle for:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
            int i;

            for(i=1;i<=10;i++){
                        printf("2 x %d = %d \n",i,2*i);
}

system("PAUSE");    
return 0;
}

Conclusiones

La utilización de bucles es esencial para el manejo correcto de una gran cantidad de datos (como veremos en próximos capítulos), para mostrar mucha información de forma fácil y rápida y para realizar determinados cálculos, entre otras muchas cosas.

Hemos llegado al ecuador del curso básico de C, con éste quinto capítulo hemos visto lo que prácticamente son los pilares fundamentales de la programación en cualquier lenguaje, por lo que es conveniente tener dominado cuanto antes todo lo que hemos visto hasta ahora. Da igual que comencemos con un nuevo entorno o que el lenguaje sea distinto, el manejo de las variables, librerías, condicionales, bucles, constantes y el concepto de algoritmo son piezas fundamentales que nos acompañarán durante toda nuestra carrera de desarrollador.

En el siguiente capítulo entraremos de lleno en los arrays o tablas, veremos cómo recorrer un array, insertar datos, borrarlos, modificarlos, etc. Parte muy útil para el manejo de datos en ficheros externos o gestión de inventarios dentro de los videojuegos.

¿Qué otras formas de estructuras de control de flujo iterativas conocéis de otros lenguajes?