Skip to content

Lección 22: Bucles (for, while, do-while)

Los bucles (loops) permiten ejecutar un bloque de código repetidamente mientras se cumpla una condición. Son fundamentales para trabajar con colecciones de datos y procesos repetitivos.

El bucle for tiene tres partes: inicialización, condición e incremento.

for (inicialización; condición; incremento) {
// código que se repite
}
for (let i = 0; i < 5; i++) {
console.log('Iteración:', i);
}
// 0, 1, 2, 3, 4

Partes del for:

  • let i = 0; — inicialización (se ejecuta una vez al inicio)
  • i < 5; — condición (se evalúa antes de cada iteración)
  • i++ — incremento (se ejecuta al final de cada iteración)
let frutas = ['manzana', 'pera', 'uva', 'naranja'];
for (let i = 0; i < frutas.length; i++) {
console.log(`${i}: ${frutas[i]}`);
}

while ejecuta el bloque mientras la condición sea true. Se usa cuando no sabes cuántas iteraciones se necesitan.

let contador = 0;
while (contador < 5) {
console.log('Contador:', contador);
contador++;
}

Ejemplo práctico: Leer datos hasta que el usuario ingrese “salir”.

let entrada = '';
let intentos = 0;
while (entrada !== 'salir' && intentos < 3) {
entrada = prompt('Escribe "salir" para terminar:'); // simulado
intentos++;
}

Similar a while, pero ejecuta el bloque al menos una vez antes de evaluar la condición.

let numero;
do {
numero = Math.floor(Math.random() * 10);
console.log('Generado:', numero);
} while (numero !== 7);
// Se ejecuta al menos una vez, incluso si el primer número es 7

Un bucle dentro de otro. Útil para tablas, matrices, etc.

for (let fila = 0; fila < 3; fila++) {
let linea = '';
for (let col = 0; col < 3; col++) {
linea += `[${fila},${col}] `;
}
console.log(linea);
}
// [0,0] [0,1] [0,2]
// [1,0] [1,1] [1,2]
// [2,0] [2,1] [2,2]
// Sumar números del 1 al 100 con for
let suma = 0;
for (let i = 1; i <= 100; i++) {
suma += i;
}
console.log('Suma 1-100:', suma); // 5050
// Tabla de multiplicar con for anidado
console.log('=== Tabla de multiplicar ===');
for (let i = 1; i <= 5; i++) {
let fila = '';
for (let j = 1; j <= 5; j++) {
fila += `${i * j}\t`;
}
console.log(fila);
}
// while: encontrar el primer número divisible entre 7 y 5
let n = 1;
while (!(n % 7 === 0 && n % 5 === 0)) {
n++;
}
console.log('Primer número divisible entre 5 y 7:', n); // 35
// do-while: menú simple (simulado)
let opcion;
do {
console.log('1. Ver saldo');
console.log('2. Retirar');
console.log('3. Salir');
opcion = 3; // simulación
} while (opcion !== 3);
console.log('¡Hasta luego!');
  1. Crea un archivo bucles.js.
  2. Usa un for para imprimir los números pares del 2 al 20.
  3. Usa un while para contar del 10 al 1 (cuenta regresiva).
  4. Usa un do-while para generar números aleatorios entre 1 y 6 (dado) hasta que salga un 6.
  5. Crea una tabla de multiplicar del 7 con un for.
// Pares del 2 al 20
console.log('Números pares:');
for (let i = 2; i <= 20; i += 2) {
console.log(i);
}
// Cuenta regresiva
console.log('Cuenta regresiva:');
let contador = 10;
while (contador >= 1) {
console.log(contador);
contador--;
}
// Dado hasta sacar 6
console.log('Lanzando dado:');
let dado;
do {
dado = Math.floor(Math.random() * 6) + 1;
console.log('🎲', dado);
} while (dado !== 6);
console.log('¡Sacaste 6!');
// Tabla del 7
console.log('Tabla del 7:');
for (let i = 1; i <= 10; i++) {
console.log(`7 x ${i} = ${7 * i}`);
}

¡Cuidado con los bucles infinitos! Si la condición nunca se vuelve false, el bucle se ejecutará para siempre y congelará tu programa.

// ❌ Bucle infinito (nunca ejecutes esto)
let i = 0;
while (i < 5) {
console.log('Infinito!');
// falta i++
}

Siempre asegúrate de que la variable de control se modifique dentro del bucle.

El for clásico es muy flexible. Puedes tener múltiples variables o condiciones:

for (let i = 0, j = 10; i < j; i++, j--) {
console.log(`i=${i}, j=${j}`);
}

Pero para arrays modernos, prefiere for...of (que veremos en la Lección 24) o métodos como .forEach().