Las estructuras de ciclos o también llamados bucles, son secciones de programa que permiten la repetición de secciones de código de forma controlada.
Existen cuatro tipos de ciclos de repetición, y estos son:
Todas tienen como objetivo ejecutar un bloque de código cierto número de veces en función de una condición.
while (condición) {Bloque de código}
Esta sintaxis permite ejecutar el bloque de código mientras la condición es verdadera. Se evalúa la condición incluso antes del primer paso en el bucle. Por lo tanto, el bloque de código podrá no ejecutarse nunca si la condición es falsa desde el principio. En caso de que la condición sea verdadera en el primer paso, el bloque de código se ejecuta. La condición se prueba otra vez y, si es verdadera, se vuelve a ejecutar el bloque de código. En el caso contrario, la próxima instrucción ejecutada será la que sigue al bloque de código. Sin embargo es posible prever una salida «prematura» del bucle utilizando la instrucción break. La ejecución se retoma, por lo tanto, en la línea que sigue inmediatamente al bloque de código.
La estructura do while utiliza la sintaxis siguiente:
do
{Bloque de código}
while (condition);
Esta sintaxis nos permite garantizar que el bloque de código se ejecutará al menos una vez, ya que la condición se probará al final del bloque de código.
Cuando conoce el número de iteraciones que se deben realizar en un bucle, es preferible utilizar la estructura for. Para poder utilizar esta instrucción, debe declarar previamente una variable que actúe de contador. Esta variable puede declarase en la estructura for o fuera. En este caso, se debe declarar antes de la estructura "for".
La sintaxis general es la siguiente:
for(inicialización del contador ;condición ;instrucción de iteración)
{
Bloque de código
}
La parte de inicialización se ejecuta una sola vez en el momento de la entrada en el bucle. La parte de condición se evalúa en el momento de entrar en el bucle, y luego en cada iteración. El resultado de la evaluación de la condición determina si el bloque de código se ejecuta. Para ello, hace falta que la condición sea evaluada como true. Después de la ejecución del bloque de código se ejecuta a su vez la instrucción de iteración. Luego se prueba de nuevo la condición, y así sucesivamente hasta que la condición se evalúa como false.
A continuación, dos bucles for en acción para visualizar una tabla de multiplicar.
int k;
for(k=1;k<10;k++)
{
for (int l = 1; l < 10; l++)
{
Console.Write(k * l + "\t");
}
Console.WriteLine();
}
Obtenemos el siguiente resultado:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
La instrucción "break" puede utilizarse para provocar una salida prematura del bucle. La instrucción continúe permite volver inmediatamente a la evaluación de la condición. Por supuesto, se deben ejecutar estas dos instrucciones de manera condicional; si no, las líneas de código ubicadas después no se ejecutarán nunca.
Otra sintaxis del bucle for permite ejecutar un bloque de código para cada elemento contenido en una matriz o en una colección. La sintaxis general de esta instrucción es la siguiente:
foreach (elemento in matriz)
{Bloque de código}
No hay noción de contador en esta estructura, ya que efectúa ella misma las iteraciones en todos los elementos presentes en la matriz o la colección. La variable elemento sirve para extraer los elementos de la matriz o de la colección para que el bloque pueda manejarla. El tipo de la variable elemento debe ser compatible con el tipo de elementos almacenados en la matriz o la colección. Por el contrario, no debe preocuparse del número de elementos, ya que la instrucción foreach es capaz de gestionar ella misma el desplazamiento en la matriz o la colección. ¡A continuación se muestra un ejemplo para aclarar la situación!
Con un bucle clásico:
string[] matriz={"rojo","verde","azul","blanco"};
int contador;
for (contador = 0; contador < matriz.Length; contador++)
{
Console.WriteLine(matriz[contador]);
}
Con el bucle foreach:
string[] matriz={"rojo","verde","azul","blanco"};
foreach (string s in matriz)
{
Console.WriteLine(s);
}
La variable utilizada para recorrer la matriz debe ser declarada obligatoriamente en la
instrucción "foreach", y no fuera.