certmundo.
es‑mx

6 min de lectura

¿Cómo usar ciclos for, while y foreach en C#?

Los ciclos son estructuras que repiten un bloque de código varias veces sin que tengas que escribirlo una y otra vez.

En C# existen tres ciclos principales: for, while y foreach. Cada uno tiene un uso ideal según la situación.


Sintaxis de los tres ciclos

Ciclo for

Usa for cuando sabes exactamente cuántas veces quieres repetir algo.

for (inicialización; condición; incremento)
{
    // código que se repite
}
  • Inicialización: crea la variable contadora, por ejemplo int i = 0.
  • Condición: el ciclo continúa mientras sea true.
  • Incremento: cambia la variable al final de cada vuelta, por ejemplo i++.

Ciclo while

Usa while cuando no sabes de antemano cuántas veces se repetirá el código.

while (condición)
{
    // código que se repite
}

El ciclo revisa la condición antes de ejecutar el bloque. Si la condición es false desde el inicio, el bloque nunca se ejecuta.

Ciclo foreach

Usa foreach para recorrer todos los elementos de una colección, como un arreglo o una lista.

foreach (tipo variable in colección)
{
    // código que se repite
}

foreach avanza automáticamente al siguiente elemento. No necesitas manejar un contador.


Ejemplos prácticos

Ejemplo 1 — Ciclo for: imprimir números de venta

Imagina que tienes 5 vendedores en Liverpool y quieres imprimir el número de cada uno.

for (int i = 1; i <= 5; i++)
{
    Console.WriteLine("Vendedor número: " + i);
}

Salida en consola:

Vendedor número: 1
Vendedor número: 2
Vendedor número: 3
Vendedor número: 4
Vendedor número: 5

El ciclo empieza en i = 1. Continúa mientras i <= 5. Cada vuelta suma 1 con i++.


Ejemplo 2 — Ciclo for: calcular total de ventas

Tienes un arreglo con las ventas diarias de una tienda Bimbo durante una semana. Quieres sumar el total.

int[] ventas = { 12500, 9800, 15200, 11000, 13400, 8700, 16000 };
int total = 0;

for (int i = 0; i < ventas.Length; i++)
{
    total = total + ventas[i];
}

Console.WriteLine("Total de ventas de la semana: $" + total);

Salida en consola:

Total de ventas de la semana: $86,600

ventas.Length regresa el número de elementos del arreglo. Así el ciclo no se pasa del límite.


Ejemplo 3 — Ciclo while: procesar pedidos pendientes

En Mercado Libre hay pedidos pendientes de procesar. El sistema procesa uno por uno hasta que no queden más.

int pedidosPendientes = 8;

while (pedidosPendientes > 0)
{
    Console.WriteLine("Procesando pedido. Pendientes: " + pedidosPendientes);
    pedidosPendientes--;
}

Console.WriteLine("Todos los pedidos fueron procesados.");

Salida en consola:

Procesando pedido. Pendientes: 8
Procesando pedido. Pendientes: 7
Procesando pedido. Pendientes: 6
Procesando pedido. Pendientes: 5
Procesando pedido. Pendientes: 4
Procesando pedido. Pendientes: 3
Procesando pedido. Pendientes: 2
Procesando pedido. Pendientes: 1
Todos los pedidos fueron procesados.

pedidosPendientes-- resta 1 en cada vuelta. Cuando llega a 0, la condición es false y el ciclo termina.


Ejemplo 4 — Ciclo foreach: listar productos con precio

Tienes una lista de productos de FEMSA con sus precios. Quieres mostrar cada uno en pantalla.

string[] productos = { "Coca-Cola 600ml", "Agua Ciel 1L", "Sidral Mundet 355ml" };
int[] precios = { 18, 12, 15 };

for (int i = 0; i < productos.Length; i++)
{
    Console.WriteLine(productos[i] + " — $" + precios[i]);
}

Salida en consola:

Coca-Cola 600ml — $18
Agua Ciel 1L — $12
Sidral Mundet 355ml — $15

Ahora el mismo resultado usando foreach con solo los nombres de producto:

string[] productos = { "Coca-Cola 600ml", "Agua Ciel 1L", "Sidral Mundet 355ml" };

foreach (string producto in productos)
{
    Console.WriteLine("Producto disponible: " + producto);
}

Salida en consola:

Producto disponible: Coca-Cola 600ml
Producto disponible: Agua Ciel 1L
Producto disponible: Sidral Mundet 355ml

foreach recorre cada string del arreglo automáticamente. No necesitas índice ni contador.


Ejemplo 5 — Ciclo foreach con cálculo: total de nómina

Tienes los salarios de cinco empleados de una empresa distribuidora. Quieres calcular el total de nómina mensual.

int[] salarios = { 18500, 22000, 15000, 28000, 19500 };
int totalNomina = 0;

foreach (int salario in salarios)
{
    totalNomina = totalNomina + salario;
}

Console.WriteLine("Total de nómina mensual: $" + totalNomina);

Salida en consola:

Total de nómina mensual: $103,000

Este patrón —acumular valores con foreach— es muy común en sistemas de nómina y reportes financieros.


Tabla comparativa: ¿cuándo usar cada ciclo?

Ciclo Úsalo cuando… ¿Necesita contador?
for Sabes cuántas repeticiones habrá
while La cantidad de repeticiones depende de una condición dinámica Opcional
foreach Quieres recorrer todos los elementos de una colección No

Errores comunes

Error 1 — Ciclo infinito en while

Si olvidas modificar la variable dentro del while, el ciclo nunca termina.

// ❌ Ciclo infinito — el programa se congela
int contador = 0;
while (contador < 5)
{
    Console.WriteLine("Vuelta: " + contador);
    // falta: contador++
}

Corrección: siempre modifica la variable que controla la condición dentro del bloque.

// ✅ Correcto
int contador = 0;
while (contador < 5)
{
    Console.WriteLine("Vuelta: " + contador);
    contador++;
}

Error 2 — Índice fuera de rango en for

Los arreglos en C# usan índices desde 0. Si usas <= en lugar de <, accedes a una posición que no existe.

// ❌ Error de ejecución: índice fuera de rango
string[] tiendas = { "Liverpool Perisur", "Liverpool Santa Fe", "Liverpool Insurgentes" };

for (int i = 0; i <= tiendas.Length; i++)
{
    Console.WriteLine(tiendas[i]);
}

Corrección: usa i < tiendas.Length, no i <= tiendas.Length.

// ✅ Correcto
for (int i = 0; i < tiendas.Length; i++)
{
    Console.WriteLine(tiendas[i]);
}

Error 3 — Modificar la colección dentro de foreach

foreach no permite modificar la colección mientras la recorre. Hacerlo genera un error en tiempo de ejecución.

// ❌ No se puede modificar la lista dentro de foreach
List<string> productos = new List<string> { "Pan Bimbo", "Marinela", "Twinkie" };

foreach (string p in productos)
{
    productos.Remove(p); // Error en ejecución
}

Corrección: si necesitas modificar la colección, usa un ciclo for en reversa o crea una lista temporal.


Error 4 — Condición incorrecta desde el inicio en while

Si la condición es false desde antes de entrar al ciclo, el bloque nunca se ejecuta. Esto puede ser un bug difícil de detectar.

// ❌ El ciclo nunca se ejecuta
int pedidos = 0;

while (pedidos > 0)
{
    Console.WriteLine("Procesando...");
    pedidos--;
}

Revisa siempre el valor inicial de tus variables antes de escribir la condición del while.


Resumen rápido

  • for es ideal para repeticiones con un número conocido de vueltas.
  • while es ideal cuando la repetición depende de algo que cambia durante la ejecución.
  • foreach es la opción más limpia para recorrer arreglos y listas sin manejar índices.
  • Todos los ciclos ejecutan su bloque entre llaves {} y terminan cuando su condición se vuelve false.

Puntos clave

  • Usa `for` cuando conoces de antemano el número exacto de repeticiones, por ejemplo recorrer los 7 días de ventas de una semana.
  • Usa `while` cuando la cantidad de repeticiones depende de una condición dinámica, como procesar pedidos hasta que la cola esté vacía.
  • Usa `foreach` para recorrer todos los elementos de un arreglo o lista sin necesitar un contador; es la opción más limpia y segura.
  • El error más común en `while` es olvidar modificar la variable de control, lo que provoca un ciclo infinito que congela el programa.
  • En un ciclo `for` con arreglos, la condición siempre debe usar `i < arreglo.Length`, nunca `i <= arreglo.Length`, para evitar errores de índice fuera de rango.

Comparte esta lección:

¿Cómo usar ciclos for, while y foreach en C#? | C# Básico: Aprende a Programar desde Cero | Certmundo