Ir al contenido principal

Lección 4 · Bucles

Repetir mientras se cumpla

Un programa hace falta que repita cosas: bajar el stock de cada producto vendido, sumar los precios de la bandeja, mostrar el menú completo. Para eso están los bucles, que repiten un bloque de código varias veces.

El primero es while: repite mientras la condición sea verdadera.

let empanadas = 3;

while (empanadas > 0) {
    console.log(`Quedan ${empanadas} empanadas`);
    empanadas--;
}

El bucle imprime «Quedan 3», «Quedan 2», «Quedan 1» y termina cuando empanadas llega a 0. La pieza clave es el empanadas--: algo tiene que cambiar dentro del bucle para que la condición deje de ser verdadera. Si no cambia, el bucle nunca termina y la pestaña se cuelga.

for: repetir una cantidad conocida

Cuando se sabe de antemano cuántas veces hay que repetir, se usa for, que junta las tres piezas en una línea: empezar, hasta cuándo y cómo avanzar.

for (let i = 1; i <= 5; i++) {
    console.log(`Pedido número ${i}`);
}

Se lee así: let i = 1 arranca el contador; i <= 5 es la condición para seguir; i++ suma uno al final de cada vuelta. Imprime del 1 al 5.

BucleSe usa cuando
whileNo se sabe cuántas vueltas: depende de una condición que cambia adentro.
forSe sabe la cantidad: cinco productos, diez alumnos, tres intentos.

La variable i es solo un contador: se llama así por convención (index) y vive únicamente dentro del bucle.

Recorrer una lista

El uso más importante de los bucles es recorrer una lista de datos. En la lección 6 se ve el tema a fondo; por ahora alcanza con una lista simple y su length (la cantidad de elementos):

const menu = ["Sándwich", "Empanada", "Alfajor"];

for (let i = 0; i < menu.length; i++) {
    console.log(menu[i]);
}

El contador arranca en 0 —la primera posición de una lista es la 0, no la 1— y llega hasta menu.length - 1. Así se recorre el menú entero sin escribir una línea por producto: si mañana se agrega uno, el bucle lo muestra solo.

Con un acumulador se puede, por ejemplo, sumar el total:

const precios = [350, 200, 250];
let total = 0;

for (let i = 0; i < precios.length; i++) {
    total += precios[i];
}

console.log(total);   // 800

Cortar y saltar

Dos instrucciones cambian el recorrido de un bucle desde adentro:

  • break corta el bucle entero y sigue con lo de abajo.
  • continue saltea el resto de esa vuelta y pasa a la siguiente.
for (let i = 0; i < menu.length; i++) {
    if (menu[i] === "Alfajor") {
        break;              // no sigue mirando
    }
    console.log(menu[i]);
}

Con continue, en cambio, se saltea un caso y se sigue: if (precio < 0) continue; ignora los precios inválidos sin cortar el resto del recorrido. Se usan poco, pero cuando hacen falta no hay otra forma limpia de hacerlo.

Resumen

  • while repite mientras una condición sea verdadera; algo tiene que cambiar adentro.
  • for repite una cantidad conocida, con contador, condición y avance en una línea.
  • Para recorrer una lista: contador de 0 a length - 1 y acceso con lista[i].
  • Un acumulador (let total = 0 + total += ...) suma dentro del bucle.
  • break corta el bucle; continue saltea una vuelta.
  • Si la condición nunca deja de ser verdadera, el bucle es infinito.

En la próxima lección el código se ordena en funciones: pedazos con nombre que se llaman cuando hacen falta.

Autoevaluación de la lección 4

Licencia. El material de esta página es elaboración propia de Prof Mauro Bobyk —a partir de las fuentes que detalla el pie del sitio— y se publica bajo una licencia Creative Commons BY-NC-SA 4.0.