Saltar al contenido principal

El bucle while

El bucle while permite repetir un bloque de código mientras se cumpla una condición.

A diferencia del bucle for, no necesitamos saber de antemano cuántas veces se repetirá el código. El bucle continuará ejecutándose hasta que la condición deje de ser verdadera.

Por este motivo, while es especialmente útil cuando el número de repeticiones depende de algo que ocurre durante la ejecución del programa.


Explicación

Imagina que estás llenando una botella con agua.

No sabes exactamente cuántos segundos tardará en llenarse.

Lo único que sabes es que debes seguir echando agua mientras la botella no esté llena.

En cuanto la botella se llena, dejas de hacerlo.

El bucle while funciona exactamente igual.

En lugar de indicar un número fijo de repeticiones como hacíamos con el for, le damos una condición.

Mientras esa condición sea verdadera, el código seguirá ejecutándose.

Cuando la condición deje de cumplirse, el bucle terminará automáticamente.

Esta es la principal diferencia respecto al bucle for.

  • Con for, normalmente conocemos el número de repeticiones.
  • Con while, solo conocemos la condición que debe cumplirse para seguir repitiendo.

Sintaxis

La sintaxis del bucle while es muy sencilla, de hecho se puede observar que es muy similar a la del if, ya que ambas trabajan sobre una condición.

while (condición) {
// Código que se repetirá
}

Primero se comprueba la condición.

  • Si es verdadera, se ejecuta el bloque de código.

  • Cuando termina el bloque, la condición vuelve a comprobarse.

Este proceso se repite una y otra vez hasta que la condición sea falsa.


¿Cómo funciona paso a paso?

Observa el siguiente ejemplo.

let numero = 1;

while (numero <= 3) {
console.log(numero);
numero++;
}

Veamos qué ocurre.

Valor de numero¿Se cumple numero <= 3?Se ejecuta
1Se muestra 1 y se incrementa el numero
2Se muestra 2 y se incrementa el numero
3Se muestra 3 y se incrementa el numero
4NoEl bucle termina

Salida:

1
2
3

Es importante observar que la variable cambia dentro del bucle.

Si nunca cambiara, la condición seguiría siendo verdadera para siempre. Por eso será muy importante que dentro del bucle while siempre haya un cambio respecto a la variable de la condición, es esta caso el cabio es numero++.


La variable de control

En la mayoría de los bucles while existe una variable cuyo valor cambia en cada repetición.

A esta variable se le suele llamar variable de control.

let contador = 1;

while (contador <= 5) {
console.log(contador);
contador++;
}

En este ejemplo, contador controla cuándo debe finalizar el bucle.


Ejemplos

Ejemplo 1. Contar del 1 al 5

let numero = 1;

while (numero <= 5) {
console.log(numero);
numero++;
}

Salida:

1
2
3
4
5

Ejemplo 2. Cuenta atrás

let numero = 5;

while (numero >= 1) {
console.log(numero);
numero--;
}

Salida:

5
4
3
2
1

En este caso disminuimos el valor de la variable en cada repetición.


Ejemplo 3. Ahorrar dinero

Una persona guarda 20 € cada semana hasta reunir al menos 100 €.

let ahorro = 0;

while (ahorro < 100) {
ahorro += 20; // en este caso la variable ahorro aumenta en 20€ cada "semana"
console.log(`Ahorro actual: ${ahorro}`);
}

Salida:

Ahorro actual: 20 €
Ahorro actual: 40 €
Ahorro actual: 60 €
Ahorro actual: 80 €
Ahorro actual: 100 €

No sabemos cuántas repeticiones habrá con solo mirar el bucle, pero sí sabemos cuándo terminará.


Ejemplo 4. Vaciar una batería

Con una batería inicial de 100, reduce la batería 25 unidades cada vez hasta que llegue a 0.

let bateria = 100;

while (bateria > 0) {
console.log(`Batería: ${bateria}%`);
bateria -= 25;
}

Salida:

Batería: 100%
Batería: 75%
Batería: 50%
Batería: 25%

El bucle termina cuando la batería deja de ser mayor que cero.


Errores frecuentes

Olvidar modificar la variable de control

let numero = 1;

while (numero <= 5) {
console.log(numero);
}

Este bucle nunca termina porque numero siempre vale 1.

Debemos actualizar la variable.

numero++;

Utilizar una condición incorrecta

let numero = 10;

while (numero < 5) {
console.log(numero);
}

Como la condición es falsa desde el principio, el bucle no se ejecutará ninguna vez.


Modificar la variable equivocada

let numero = 1;
let otro = 0;

while (numero <= 5) {
otro++;
}

La condición depende de numero, pero quien cambia es otro.

Como numero nunca cambia, el bucle será infinito.


Buenas prácticas

  • Utiliza while cuando no conozcas el número exacto de repeticiones.
  • Comprueba que la condición pueda llegar a ser falsa.
  • Modifica la variable de control dentro del bucle.
  • Mantén la condición sencilla y fácil de entender.

Resumen

El bucle while repite un bloque de código mientras una condición sea verdadera.

Es especialmente útil cuando no conocemos de antemano cuántas veces se repetirá el proceso.

Para evitar bucles infinitos es fundamental actualizar correctamente la variable de control y asegurarse de que la condición llegará a ser falsa en algún momento.


Ejemplos resueltos

Ejercicio resuelto 1 - Llenar un depósito

Enunciado

Un depósito contiene 0 litros de agua.

Cada minuto entran 15 litros.

Crea un programa que muestre la cantidad de agua hasta alcanzar o superar los 90 litros.

Análisis

No nos interesa repetir un número fijo de veces.

Lo importante es seguir llenando el depósito mientras todavía no haya alcanzado los 90 litros.

Solución

let litros = 0;

while (litros < 90) {
litros += 15;
console.log(`${litros} litros`);
}

Explicación

La variable litros comienza en cero.

En cada repetición añadimos 15 litros.

Cuando el depósito alcanza los 90 litros, la condición deja de cumplirse y el bucle termina.


Ejercicio resuelto 3 - Ahorrar para un viaje

Enunciado

Una persona ahorra 35 € cada semana.

Quiere reunir al menos 500 € para un viaje.

Calcula cuánto dinero tendrá al finalizar.

Análisis

No necesitamos saber cuántas semanas serán necesarias.

Solo debemos seguir ahorrando mientras no haya alcanzado el objetivo.

Solución

let ahorro = 0;

while (ahorro < 500) {
ahorro += 35;
}

console.log(`Ahorro final: ${ahorro}`);

Explicación

El programa continúa sumando dinero hasta alcanzar o superar los 500 €.

La condición controla automáticamente cuándo debe finalizar el bucle.


Ejercicios propuestos

Nivel 1

  1. Muestra los números del 1 al 15 utilizando un bucle while.

  2. Muestra los números del 20 al 1 en orden descendente.

  3. Muestra todos los números múltiplos de 4 menores o iguales que 40.


Nivel 2

  1. Una persona ahorra 12 € cada semana. Calcula cuánto dinero tendrá cuando alcance al menos 180 €.

  2. Una batería comienza al 100 %. Cada minuto pierde un 8 %. Muestra el porcentaje restante hasta que llegue a 0 % o menos.

  3. Empieza en el número 30 y sigue aumentando de uno en uno hasta encontrar el primer número divisible entre 9.


Nivel 3

  1. Una empresa llena cajas con 18 productos cada una hasta almacenar al menos 250 productos. Muestra el total acumulado después de llenar cada caja.

  2. Un ascensor parte de la planta -2 y sube hasta la planta 12. Muestra cada planta por la que pasa.

  3. Un videojuego otorga 45 puntos por cada misión completada. El jugador quiere conseguir al menos 1.000 puntos. Calcula la puntuación final.

  4. Una máquina produce 37 piezas por ciclo. Continúa fabricando hasta superar las 900 piezas y muestra la producción acumulada después de cada ciclo.