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?