Comprender cómo funcionan los ciclos repetitivos es fundamental para controlar el flujo de cualquier programa. Dos de las estructuras más utilizadas son while y do while, y aunque parecen similares, su comportamiento tiene una diferencia crítica que puede cambiar por completo el resultado de tu código.
¿Cómo funciona el ciclo while?
El ciclo while sigue una lógica clara: primero evalúa la condición y después ejecuta el código contenido entre las llaves [0:24]. Su estructura es sencilla:
javascript
while (condición) {
// código a ejecutar
}
Por ejemplo, si declaramos una variable i y escribimos while (i <= 10), el ciclo imprimirá el valor actual de i mientras se cumpla esa condición [1:05]. Sin embargo, hay un detalle importante: a diferencia de un ciclo for, el while no incrementa automáticamente el valor de la variable. Si olvidamos agregar el incremento, el programa entrará en un ciclo infinito, ya que la condición siempre se cumplirá.
- Si
i inicia en cero y nunca se incrementa, el ciclo imprime cero indefinidamente.
- Debes agregar manualmente el incremental, por ejemplo
i++, al final del bloque [1:47].
- Con el incremento correcto, el ciclo imprimirá los valores del 0 al 10 y se detendrá.
Este es uno de los errores más comunes al trabajar con while: olvidar el incremento y provocar que el programa nunca termine su ejecución.
¿Qué hace diferente al do while?
La estructura de do while invierte el orden: primero ejecuta el código y después evalúa la condición [0:30]. Esto significa que el bloque de código siempre se ejecutará al menos una vez, sin importar si la condición es verdadera o falsa.
javascript
do {
// código a ejecutar
} while (condición);
Para ver esta diferencia en acción, consideremos un caso práctico. Si el valor de i ya es 11 cuando llega al do while con la condición i <= 10, algo interesante ocurre [2:21]:
- El ciclo imprime el valor 11 antes de evaluar la condición.
- Luego verifica: ¿11 es menor o igual que 10? No, entonces termina.
- En un while normal, ese valor nunca se habría impreso.
¿Por qué el do while imprime un valor fuera de rango?
Esto sucede porque la evaluación ocurre después de la ejecución [2:33]. En el ejemplo mostrado, cuando el primer ciclo while termina con i en 10, el incremento lo lleva a 11. Al entrar al do while, ejecuta primero el código con el valor 11, le suma uno más y recién entonces evalúa que 12 no cumple la condición.
Para obtener resultados correctos, es necesario reiniciar el valor de la variable antes de iniciar el segundo ciclo [2:52]. Así ambos ciclos producen la misma lista del 1 al 10.
¿Cuándo usar while y cuándo do while?
La decisión depende de una pregunta simple: ¿necesitas que el código se ejecute al menos una vez sin importar la condición?
- Usa while cuando quieras validar la condición antes de cualquier ejecución.
- Usa do while cuando necesites que el bloque corra al menos una vez y luego se evalúe si debe repetirse.
Un error frecuente, ilustrado con humor en la clase [3:29], es no considerar cuándo queremos que el código se ejecute primero y cuándo debe evaluarse primero. Sin esa claridad, el programa puede seguir corriendo cuando ya no debería, como intentar avanzar cuando el camino ya se terminó.
Tener presente la diferencia entre evaluar primero y ejecutar primero te permitirá elegir la estructura correcta y evitar comportamientos inesperados en tus programas. ¿Cuál de los dos ciclos usas con más frecuencia? Comparte tu experiencia.