certmundo.
es‑mx

6 min de lectura

¿Cómo repetir acciones con ciclos for y while en C++?

Los ciclos en C++ te permiten repetir un bloque de código varias veces sin tener que escribirlo de nuevo cada vez.

Imagina este problema

Tienes que imprimir los precios de 100 productos de Liverpool. Escribir 100 líneas de cout sería absurdo. Un ciclo hace ese trabajo en 5 líneas. Esa es la diferencia entre programar con inteligencia y programar con esfuerzo.

En la lección anterior aprendiste a tomar decisiones con if y switch. Ahora vas a aprender a repetir esas decisiones automáticamente.

El sistema de los dos ciclos

C++ tiene dos ciclos principales para principiantes: for y while. Cada uno tiene su caso ideal.

Piénsalos así: el for es como un contador con fecha de inicio y fecha de fin conocidas. El while es como un guardia que trabaja mientras se cumpla una condición, sin saber exactamente cuántas horas va a durar.

Usas for cuando sabes cuántas veces quieres repetir algo. Usas while cuando no sabes cuántas veces, pero sí sabes cuándo parar.

El ciclo for: repetir un número fijo de veces

Esta es la estructura del ciclo for:

for (inicio; condicion; incremento) {
    // código que se repite
}

Tiene tres partes separadas por punto y coma:

  1. Inicio: crea la variable contadora y le da un valor inicial.
  2. Condición: el ciclo continúa mientras esta condición sea verdadera.
  3. Incremento: actualiza la variable contadora en cada repetición.

Ejemplo 1: Imprimir productos de un catálogo

Supón que tienes un sistema de inventario para una tienda como Liverpool. Quieres imprimir los números del 1 al 10 para etiquetar productos.

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 10; i++) {
        cout << "Producto #" << i << endl;
    }
    return 0;
}

Salida:

Producto #1
Producto #2
...
Producto #10

El ciclo empieza con i = 1. Revisa que i <= 10 sea verdadero. Ejecuta el cout. Luego suma 1 a i con i++. Repite hasta que i llega a 11 y la condición es falsa.

Ejemplo 2: Calcular el total de ventas de Bimbo

Imagina que tienes 5 días de ventas y quieres sumar el total.

#include <iostream>
using namespace std;

int main() {
    int ventas[] = {3200, 4100, 2800, 5000, 3700};
    int total = 0;

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

    cout << "Total de ventas: $" << total << endl;
    return 0;
}

Salida:

Total de ventas: $18,800

El ciclo recorre los 5 elementos del arreglo y los va sumando uno por uno. Esto es mucho más limpio que escribir total = ventas[0] + ventas[1] + ventas[2]...

El ciclo while: repetir mientras algo sea verdadero

Esta es la estructura del ciclo while:

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

El while revisa la condición antes de ejecutar el código. Si la condición es falsa desde el principio, el bloque nunca se ejecuta.

Ejemplo 3: Validar el saldo de un usuario en Mercado Libre

Imagina que un usuario tiene un saldo inicial de $500 y hace compras hasta que su saldo sea menor a $100.

#include <iostream>
using namespace std;

int main() {
    int saldo = 500;
    int compra = 120;
    int operaciones = 0;

    while (saldo >= 100) {
        saldo = saldo - compra;
        operaciones++;
        cout << "Compra realizada. Saldo restante: $" << saldo << endl;
    }

    cout << "Saldo insuficiente. Operaciones realizadas: " << operaciones << endl;
    return 0;
}

Salida:

Compra realizada. Saldo restante: $380
Compra realizada. Saldo restante: $260
Compra realizada. Saldo restante: $140
Compra realizada. Saldo restante: $20
Saldo insuficiente. Operaciones realizadas: 4

Aquí no sabes de antemano cuántas compras va a hacer el usuario. El while es perfecto para esto.

Ejemplo 4: Sistema de login con intentos limitados

Un sistema de recursos humanos de FEMSA da máximo 3 intentos para ingresar la contraseña correcta.

#include <iostream>
using namespace std;

int main() {
    int contrasena_correcta = 1234;
    int intento = 0;
    int intentos_restantes = 3;

    while (intentos_restantes > 0) {
        cout << "Ingresa tu contraseña: ";
        cin >> intento;

        if (intento == contrasena_correcta) {
            cout << "Acceso concedido." << endl;
            break;
        } else {
            intentos_restantes--;
            cout << "Contraseña incorrecta. Intentos restantes: " << intentos_restantes << endl;
        }
    }

    if (intentos_restantes == 0) {
        cout << "Cuenta bloqueada. Contacta a RRHH." << endl;
    }

    return 0;
}

Este ejemplo combina while con if y el comando break. El break sale del ciclo inmediatamente cuando la condición se cumple.

Comparación directa: for vs while

Situación Ciclo recomendado
Recorrer un arreglo de 10 productos for
Esperar a que el usuario ingrese datos válidos while
Imprimir los primeros 20 empleados de una nómina for
Procesar pedidos hasta que el inventario llegue a cero while
Repetir exactamente N veces for
Repetir hasta que una condición cambie while

Errores comunes que debes evitar

1. El ciclo infinito

Este es el error más peligroso con while. Si la condición nunca se vuelve falsa, el programa nunca para.

// ¡INCORRECTO! Ciclo infinito
int contador = 1;
while (contador > 0) {
    cout << contador << endl;
    // Se te olvidó cambiar el valor de contador
}

Siempre verifica que algo dentro del while modifique la variable de la condición.

2. El error de uno (off-by-one)

Es cuando tu ciclo repite una vez de más o una vez de menos.

// Querías imprimir del 1 al 5, pero escribiste < en lugar de <=
for (int i = 1; i < 5; i++) {
    cout << i << endl;  // Solo imprime 1, 2, 3, 4
}

Revisa bien si tu condición usa < o <=. Un carácter cambia el resultado completo.

3. Modificar la variable del ciclo adentro del for

Cambiar i dentro del cuerpo de un for genera comportamiento difícil de predecir. Deja que el incremento del for controle solo la variable.

// Confuso y propenso a errores
for (int i = 0; i < 10; i++) {
    i = i + 2;  // No hagas esto
    cout << i << endl;
}

4. Olvidar las llaves en ciclos de una sola línea

Si tu ciclo solo tiene una instrucción puedes omitir las llaves, pero es una mala práctica. Si después agregas más código, el ciclo no lo incluirá.

// Funciona, pero es peligroso al editar
for (int i = 0; i < 5; i++)
    cout << i << endl;

// Mejor así, siempre con llaves
for (int i = 0; i < 5; i++) {
    cout << i << endl;
}

Cómo aplicar esto en tu próximo programa

Antes de escribir un ciclo, hazte estas dos preguntas:

  1. ¿Sé exactamente cuántas veces necesito repetir esto? → Usa for.
  2. ¿Voy a repetir hasta que algo cambie, sin saber cuándo? → Usa while.

Después verifica tres cosas en tu ciclo:

  • Que la condición eventualmente se vuelva falsa.
  • Que el incremento o la modificación estén en el lugar correcto.
  • Que usaste < o <= según lo que necesitas.

Los ciclos no hacen magia: hacen exactamente lo que tú les indicas, y si hay un error en la condición, lo van a repetir fielmente.

Puntos clave

  • Usa `for` cuando sabes cuántas veces quieres repetir algo; usa `while` cuando repites hasta que una condición cambie.
  • Todo ciclo `while` debe modificar la variable de la condición dentro de su bloque. Si no lo hace, creas un ciclo infinito.
  • El error de uno (off-by-one) es el más común en `for`: revisa si necesitas `<` o `<=` en tu condición.
  • Puedes combinar ciclos con `if` y `break` para crear lógica más compleja, como límites de intentos o validaciones de saldo.
  • Siempre escribe las llaves `{}` en tus ciclos, aunque solo tengan una línea. Es más seguro al modificar el código después.

Comparte esta lección:

¿Cómo repetir acciones con ciclos for y while en C++? | C++ para Principiantes | Certmundo