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.
Objetivos
Sección titulada «Objetivos»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
breakycontinuedentro del bucle. - Elegir entre
forywhilesegún el caso.
La sintaxis del for
Sección titulada «La sintaxis del for»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 (let i = 1; i <= 5; i++) { console.log("Vuelta " + i);}// → Vuelta 1, Vuelta 2, Vuelta 3, Vuelta 4, Vuelta 5El orden real de ejecución
Sección titulada «El orden real de ejecución»Es fácil equivocarse al principio. Este es el recorrido exacto:
- Se ejecuta la inicialización (una sola vez).
- Se comprueba la condición.
- Si es
false→ el bucle termina. - Si es
true→ se ejecuta el bloque. - Se ejecuta la actualización.
- 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.
Variantes útiles
Sección titulada «Variantes útiles»Contar hacia atrás
Sección titulada «Contar hacia atrás»for (let i = 3; i >= 1; i--) { console.log(i);}// → 3, 2, 1Avanzar de dos en dos
Sección titulada «Avanzar de dos en dos»for (let i = 0; i <= 10; i += 2) { console.log(i);}// → 0, 2, 4, 6, 8, 10Acumular una suma
Sección titulada «Acumular una suma»let suma = 0;
for (let i = 1; i <= 5; i++) { suma = suma + i;}
console.log(suma); // 15break y continue en un for
Sección titulada «break y continue en un for»Funcionan igual que en while:
for (let i = 1; i <= 10; i++) { if (i === 4) { break; // sale del bucle por completo } console.log(i);}// → 1, 2, 3for (let i = 1; i <= 5; i++) { if (i === 3) { continue; // salta solo esta vuelta } console.log(i);}// → 1, 2, 4, 5Bucles anidados
Sección titulada «Bucles anidados»Un bucle puede ir dentro de otro. La vuelta del bucle exterior se completa entera por cada vuelta del interior:
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.
¿Cuándo usar cada bucle?
Sección titulada «¿Cuándo usar cada bucle?»| 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 |
Errores frecuentes
Sección titulada «Errores frecuentes»| 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 { |
Ejercicio
Sección titulada «Ejercicio»- Escribe un
forque muestre la tabla de multiplicar del 5 (del 1 al 10) con el formato5 x 3 = 15. - Escribe un
forque sume los números pares del 1 al 20 y muestre el resultado. - Escribe una cuenta atrás del 10 al 1 y muestra
"¡Despegue!"al terminar. - Escribe un bucle que recorra del 1 al 20 y use
continuepara mostrar solo los múltiplos de 3.
Resumen
Sección titulada «Resumen»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). breakcorta el bucle;continuesalta una vuelta.- Si no sabes cuándo terminar, usa
whileen su lugar.
Siguiente paso: Comentarios en código.