Cargando...

Bucles en C++: for, while, do-while

Aprende bucles en C++ con for, while y do-while para repetir tareas y controlar el flujo del programa.

En los lenguajes de programación, los bucles (loops) permiten repetir una operación varias veces. En C++, las estructuras de bucle más comunes son for, while y do-while. Los bucles se utilizan para tareas repetitivas como recorrer arreglos, realizar cálculos o leer datos del usuario.


1. Bucle for

El bucle for es el más utilizado cuando se conoce el número de repeticiones. Consta de tres partes: inicialización, condición e incremento/decremento.


for (inicialización; condición; incremento) {
    // Instrucciones a repetir
}

Ejemplo:


#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << "Número: " << i << endl;
    }
    return 0;
}

Salida:


Número: 1
Número: 2
Número: 3
Número: 4
Número: 5

2. Bucle while

El bucle while se ejecuta mientras la condición sea verdadera. La condición se evalúa al inicio de cada iteración; por lo tanto, si es falsa al principio, el bucle no se ejecutará.


int numero = 1;

while (numero <= 5) {
    cout << "Número: " << numero << endl;
    numero++;
}

Este ejemplo produce el mismo resultado que el bucle for, pero tiene una estructura más flexible. Se utiliza comúnmente cuando el número de repeticiones no se conoce de antemano (por ejemplo, al leer entradas del usuario).


3. Bucle do-while

En un bucle do-while, la condición se verifica al final, por lo que el bloque se ejecuta al menos una vez.


int numero = 1;

do {
    cout << "Número: " << numero << endl;
    numero++;
} while (numero <= 5);

La salida nuevamente muestra los números del 1 al 5. Como la condición se evalúa al final, la primera iteración se ejecuta sin importar la condición.


4. Bucles infinitos

Si la condición de un bucle nunca se vuelve false, el bucle se ejecutará indefinidamente. Los bucles infinitos generalmente se terminan usando break o return.


while (true) {
    cout << "Este mensaje se muestra continuamente." << endl;
    break; // Detiene el bucle infinito
}

Nota: Los bucles infinitos deben usarse con precaución; de lo contrario, el programa nunca terminará.


5. Palabras clave break y continue

Se utilizan dos instrucciones especiales para cambiar el flujo de control del bucle:


for (int i = 1; i <= 10; i++) {
    if (i == 5)
        continue; // Omite el 5
    if (i == 8)
        break;    // Detiene el bucle al llegar a 8
    cout << i << " ";
}

Salida:


1 2 3 4 6 7

6. Bucles anidados (Nested Loops)

Se puede definir un bucle dentro de otro. Esta estructura es especialmente útil al trabajar con tablas, matrices o datos multidimensionales.


#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 4; j++) {
            cout << "(" << i << "," << j << ") ";
        }
        cout << endl;
    }
    return 0;
}

Salida:


(1,1) (1,2) (1,3) (1,4)
(2,1) (2,2) (2,3) (2,4)
(3,1) (3,2) (3,3) (3,4)

Aquí el bucle externo (i) representa las filas y el bucle interno (j) representa las columnas. Esta estructura es muy útil al trabajar con arreglos multidimensionales.


7. Ejemplo práctico: Tabla de multiplicar

Uno de los ejemplos más comunes del uso de bucles anidados es la tabla de multiplicar.


#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= 5; j++) {
            cout.width(4);
            cout << i * j;
        }
        cout << endl;
    }
    return 0;
}

Salida:


   1   2   3   4   5
   2   4   6   8  10
   3   6   9  12  15
   4   8  12  16  20
   5  10  15  20  25

8. while y do-while con entrada del usuario

Los bucles también pueden usarse para solicitar datos al usuario repetidamente hasta que se ingrese un valor válido.


#include <iostream>
using namespace std;

int main() {
    int numero;
    do {
        cout << "Ingrese un número positivo: ";
        cin >> numero;
    } while (numero <= 0);

    cout << "Número ingresado: " << numero << endl;
    return 0;
}

Si el usuario ingresa un número negativo, el bucle se repetirá; cuando se ingrese un número positivo, el bucle terminará.


9. TL;DR

  • for → se usa cuando se conoce el número de iteraciones.
  • while → se ejecuta mientras la condición sea verdadera.
  • do-while → se ejecuta al menos una vez y luego verifica la condición.
  • break → termina el bucle, continue → pasa a la siguiente iteración.
  • Los bucles anidados se usan en operaciones con tablas o matrices.
  • Todos los ejemplos pueden ejecutarse en Visual Studio 2022 o GCC 11+.

Artículos relacionados