DMarlon Studio

Lección 8 · 8 de 20

Bucles while y do-while · C

Repita código en C mientras se cumpla una condición con while, y con do-while cuando el bloque deba ejecutarse al menos una vez.

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

`while` repite su bloque mientras la condición sea verdadera. El café empieza a 90 grados y cada vuelta pierde un 10 % (coffee *= 0.9); cuando baja de 60, la condición coffee > 60.0 deja de cumplirse y el bucle termina. minute cuenta las vueltas.

Dentro del bucle algo tiene que cambiar para que la condición llegue a ser falsa. En la cuenta atrás es seconds--; si lo olvidara, el bucle no terminaría nunca (un bucle infinito).

`do-while` comprueba la condición al final, así que el bloque se ejecuta al menos una vez. Para contar las cifras de 2026, cada vuelta suma una cifra y divide el número entre 10 (división entera): 202, 20, 2 y 0. Con do-while, el número 0 también cuenta como una cifra; con un while normal daría cero cifras.

Fíjese en el punto y coma que cierra } while (number > 0);: en do-while es obligatorio.

Código · main.c

#include <stdio.h>int main(void) {    // while repeats its block as long as the condition is true.    double coffee = 90.0;    int minute = 0;    while (coffee > 60.0) {        minute++;        coffee *= 0.9;  // it loses 10% of its heat every minute        printf("Minute %d: %.1f degrees\n", minute, coffee);    }    printf("Ready to drink after %d minutes.\n", minute);    // A countdown.    int seconds = 5;    while (seconds > 0) {        printf("%d... ", seconds);        seconds--;    }    printf("Lift-off!\n");    // do-while checks at the end, so the block runs at least once.    // Counting digits: even 0 has one digit.    int number = 2026, digits = 0;    do {        digits++;        number /= 10;    } while (number > 0);    printf("2026 has %d digits.\n", digits);    return 0;}

Salida · cc main.c -o main && ./main

Minute 1: 81.0 degrees
Minute 2: 72.9 degrees
Minute 3: 65.6 degrees
Minute 4: 59.0 degrees
Ready to drink after 4 minutes.
5... 4... 3... 2... 1... Lift-off!
2026 has 4 digits.

Para recordar

  • while (condición) comprueba antes de cada vuelta.
  • Algo dentro del bucle debe acercarlo al final.
  • do { ... } while (condición); se ejecuta al menos una vez.
  • do-while termina con punto y coma.

Ejercicio

Cambie number a 0 y compruebe que el resultado es una cifra. Después, use un while para saber cuántos años tardan 1000 euros al 5 % anual en superar los 1500.