DMarlon Studio

Lección 8 · 8 de 20

while y do-while · C++

Repita código en C++ con while mientras se cumpla una condición, con do-while al menos una vez, y controle el bucle con break y continue.

C++ · while y do-while en DMarlon Studio: el código del ejemplo y su salida en la terminal

`while` repite un bloque mientras la condición sea verdadera. Ahorrando 120 euros al mes, el bucle da vueltas hasta que savings llega a 500: en 5 meses junta 600. Algo dentro del bucle tiene que acabar cambiando la condición; si no, no terminaría nunca.

La cuenta atrás cabe en una línea: seconds-- usa el valor actual para escribirlo y después le resta uno. Cuando llega a 0, la condición deja de cumplirse y el programa sigue con Lift off!.

`do { ... } while (condición);` comprueba la condición al final, así que el bloque se ejecuta al menos una vez: el jugador tiene su turno aunque energy valga 0. Fíjese en el punto y coma detrás del while.

`while (true)` sería un bucle infinito, pero `break` lo termina en cuanto n pasa de 10. `continue` salta directamente a la vuelta siguiente sin escribir nada, y así se omiten el 3, el 6 y el 9.

Código · main.cpp

#include <iostream>int main() {    // while repeats the block as long as the condition is true.    int savings = 0, months = 0;    while (savings < 500) {        savings += 120;        months++;    }    std::cout << "Goal reached in " << months << " months: " << savings << " euros\n";    // A countdown: seconds-- uses the value, then subtracts one.    int seconds = 5;    while (seconds > 0) std::cout << seconds-- << "... ";    std::cout << "Lift off!\n";    // do-while runs the block once before checking the condition.    int energy = 0;    do {        std::cout << "The player gets one turn (energy " << energy << ")\n";    } while (energy > 0);    // break leaves the loop; continue jumps to the next round.    int n = 0;    while (true) {        n++;        if (n % 3 == 0) continue;  // skip multiples of 3        if (n > 10) break;        std::cout << n << ' ';    }    std::cout << '\n';    return 0;}

Salida · c++ -std=c++17 main.cpp -o main && ./main

Goal reached in 5 months: 600 euros
5... 4... 3... 2... 1... Lift off!
The player gets one turn (energy 0)
1 2 4 5 7 8 10

Para recordar

  • while comprueba la condición antes de cada vuelta.
  • do-while la comprueba después: se ejecuta al menos una vez.
  • Dentro del bucle algo debe cambiar la condición.
  • break sale del bucle; continue pasa a la vuelta siguiente.

Ejercicio

Una planta mide 5 cm y crece un 20 % cada semana. Con un while, calcule cuántas semanas tarda en superar los 30 cm y escriba su altura cada semana.