Ir al contenido

Estructuras de control FOR

En la lección anterior vimos while, que repite hasta que pase algo. El bucle for responde a la otra pregunta: repite un número de veces que ya conoces: del 1 al 10, de 2 en 2, o hacia atrás del 10 al 1.

Su ventaja es que concentra las tres piezas del bucle (inicio, condición y actualización) en una sola línea, lo que hace más difícil olvidarse de alguna.

Al terminar esta lección deberías ser capaz de:

  • Escribir la sintaxis completa de un bucle for.
  • Explicar qué ocurre en cada una de sus tres partes.
  • Contar hacia delante, hacia atrás y de dos en dos.
  • Usar break y continue dentro del bucle.
  • Elegir entre for y while según el caso.
for (inicializacion; condicion; actualizacion) {
// código que se repite
}

Las tres partes van separadas por punto y coma, no por comas:

Parte Cuándo se ejecuta Qué hace Ejemplo
Inicialización Una vez, al empezar Crea la variable de control let i = 0
Condición Antes de cada vuelta Si es true, se repite; si es false, termina i < 5
Actualización Al final de cada vuelta Cambia la variable de control i++
for-basico.js
for (let i = 1; i <= 5; i++) {
console.log("Vuelta " + i);
}
// → Vuelta 1, Vuelta 2, Vuelta 3, Vuelta 4, Vuelta 5

Es fácil equivocarse al principio. Este es el recorrido exacto:

  1. Se ejecuta la inicialización (una sola vez).
  2. Se comprueba la condición.
  3. Si es false → el bucle termina.
  4. Si es true → se ejecuta el bloque.
  5. Se ejecuta la actualización.
  6. Se vuelve al paso 2.

Tabla del ejemplo anterior:

Vuelta i al comprobar ¿i <= 5? Se imprime Tras i++
1 1 ✅ Vuelta 1 2
2 2 ✅ Vuelta 2 3
3 3 ✅ Vuelta 3 4
4 4 ✅ Vuelta 4 5
5 5 ✅ Vuelta 5 6
— 6 ❌ — Fin

Fíjate en que la actualización ocurre después del bloque, no antes.

cuenta-atras.js
for (let i = 3; i >= 1; i--) {
console.log(i);
}
// → 3, 2, 1
pares.js
for (let i = 0; i <= 10; i += 2) {
console.log(i);
}
// → 0, 2, 4, 6, 8, 10
suma.js
let suma = 0;
for (let i = 1; i <= 5; i++) {
suma = suma + i;
}
console.log(suma); // 15

Funcionan igual que en while:

break.js
for (let i = 1; i <= 10; i++) {
if (i === 4) {
break; // sale del bucle por completo
}
console.log(i);
}
// → 1, 2, 3
continue.js
for (let i = 1; i <= 5; i++) {
if (i === 3) {
continue; // salta solo esta vuelta
}
console.log(i);
}
// → 1, 2, 4, 5

Un bucle puede ir dentro de otro. La vuelta del bucle exterior se completa entera por cada vuelta del interior:

anidados.js
for (let fila = 1; fila <= 2; fila++) {
for (let columna = 1; columna <= 3; columna++) {
console.log(`fila ${fila}, columna ${columna}`);
}
}
// → 6 líneas: (1,1) (1,2) (1,3) (2,1) (2,2) (2,3)

Usa nombres distintos para cada contador (fila, columna) para no confundirte.

Necesitas Usa
Repetir N veces o un rango numérico for
Repetir hasta que ocurra algo (sin saber cuántas veces) while
Ejecutar al menos una vez do...while
Error Consecuencia Solución
Usar comas en vez de ; en la cabecera SyntaxError for (let i = 0; i < 5; i++)
Olvidar la actualización Bucle infinito Comprueba la tercera parte
Condición que nunca cambia Bucle infinito Asegúrate de que i se modifica
Punto y coma tras la cabecera El bloque se ejecuta una sola vez No pongas ; antes de {
  1. Escribe un for que muestre la tabla de multiplicar del 5 (del 1 al 10) con el formato 5 x 3 = 15.
  2. Escribe un for que sume los números pares del 1 al 20 y muestre el resultado.
  3. Escribe una cuenta atrás del 10 al 1 y muestra "¡Despegue!" al terminar.
  4. Escribe un bucle que recorra del 1 al 20 y use continue para mostrar solo los múltiplos de 3.
  • for (inicio; condicion; actualizacion) concentra las tres piezas del bucle en una línea.
  • Es ideal cuando ya sabes cuántas vueltas necesitas o recorres un rango numérico.
  • Puedes contar hacia atrás (i--) o saltar de dos en dos (i += 2).
  • break corta el bucle; continue salta una vuelta.
  • Si no sabes cuándo terminar, usa while en su lugar.

Siguiente paso: Comentarios en código.