Casos de uso: Se emplea cuando el número de iteraciones es conocido de antemano. Ofrece una sintaxis concisa para inicializar, evaluar y actualizar la variable del bucle.
for (inicio; condición; actualización)
{
// Instrucciones
}
Flujo de ejecución:
- Inicio: Se ejecuta una sola vez antes del comienzo del bucle.
- Condición: Se evalúa antes de cada iteración. Si es verdadera, se ejecuta el cuerpo del bucle; si es falsa, el bucle termina.
- Cuerpo: Se ejecutan las instrucciones contenidas.
- Actualización: Se ejecuta después de cada iteración.
- Se repiten los pasos 2-4 hasta que la condición sea falsa.
for (int contador = 0; contador < 10; contador++)
{
Console.WriteLine(contador);
}
Bucles anidados: Es posible anidar bucles for dentro de otros para manejar estructuras de datos multidimensionales o requerimientos de iteración múltiple.
for (int fila = 0; fila < 3; fila++)
{
for (int columna = 0; columna < 2; columna++)
{
Console.WriteLine($"Fila: {fila}, Columna: {columna}");
}
}
- Bucle while
Casos de uso: Repite un bloque de código mientras una condición booleana se mantenga verdadera. Resulta útil cuando el número de iteraciones no se conoce previamente.
while (condición)
{
// Instrucciones
}
Flujo de ejecución:
- Condición: Se comprueba antes de cada iteración.
- Cuerpo: Si la condición es verdadera, se ejecuta el bloque de código.
- Se repite el paso 1 hasta que la condición se vuelva falsa.
int índice = 0;
while (índice < 10)
{
Console.WriteLine(índice);
índice++;
}
Sentencias de control:
break: Provoca la salida inmediata del bucle.continue: Omite el resto de la iteración actual y avanza a la siguiente.
Si la condición del bucle nunca se vuelve falsa, se genera un bucle infinito. Una forma sencilla de crearlo es:
while (true)
{
// Código a repetir indefinidamente
}
- Bucle do-while
Casos de uso: Similar al bucle while, pero garantiza que el bloque de código se ejecute al menos una vez, ya que la condición se evalúa después de la primera iteración.
do
{
// Instrucciones
} while (condición);
Flujo de ejecución:
- Cuerpo: Se ejecutan las instrucciones.
- Condición: Se evalúa después de cada iteración.
- Si la condición es verdadera, se repite el proceso; si es falsa, el bucle finaliza.
int valor = 0;
do
{
Console.WriteLine(valor);
valor++;
} while (valor < 10);
Diferencia clave: El bucle while evalúa la condición antes de la primera ejecución del cuerpo, mientras que do-while la evalúa después, asegurando la ejecución inicial.
- Bucle foreach
Casos de uso: Diseñado para iterar sobre los elementos de una colección (como arreglos, listas, etc.) de manera sencilla y segura.
foreach (tipo elemento in colección)
{
// Instrucciones
}
Flujo de ejecución:
- Elemento: Se asigna el siguiente elemento de la colección a la variable de iteración.
- Cuerpo: Se ejecuta el bloque de código.
- Se repite el proceso hasta recorrer todos los elementos de la colección.
int[] datos = { 1, 2, 3, 4, 5 };
foreach (int dato in datos)
{
Console.WriteLine(dato);
}
Consideraciones Generales
- Bucles infinitos: Siempre se debe asegurar que la condición de salida pueda volverse falsa.
- Anidamiento: Los bucles puedan anidarse, pero se recomienda limitar la profundidad para mantener la legibilidad del código.
- Rendimiento: Al trabajar con grandes volúmenes de datos, es importante optimizar el código dentro del cuerpo del bucle.