El segundo tipo de bucle que veremos se denomina bucle for
. Este bucle se caracteriza en que se va a repetir, revisando la condición en cada iteración, hasta que no se cumpla la condición propuesta.
Bucle for
El bucle for es quizás uno de los más utilizados en el mundo de la programación. En Javascript se utiliza exactamente igual que en otros lenguajes como Java o C/C++. Veamos un ejemplo muy similar al que hemos realizado con el bucle while
en el tema anterior:
// for (inicialización; condición; incremento)
for (let i = 0; i < 5; i++) {
console.log("Valor de i:", i);
}
Como vemos, la sintaxis de un bucle for es mucho más compacta y rápida de escribir que la de un bucle while
, sin embargo puede parecernos más críptica cuando la vemos por primera vez.
La sintaxis del bucle for es mucho más práctica porque te obliga a escribir la inicialización, la condición y el incremento antes del propio bucle, y eso hace que no te olvides de estos tres puntos fundamentales, cosa que suele ocurrir en los bucles while
, lo que suele desembocar en un bucle infinito. Aunque también puede ocurrir en el bucle for, suele ser menos habitual.
Analicemos la sintaxis del bucle:
- Separemos por
;
lo que establecemos dentro de los paréntesis delfor
. - Lo primero es la inicialización
let i = 0
. Esto ocurre sólo una vez antes de empezar el bucle. - Lo segundo es la condición
i < 5
. Esto se comprueba al principio de cada iteración. - Lo tercero es el incremento
i++
, es decir,i = i + 1
. Esto ocurre al final de cada iteración.
Si lo pensamos bien, es lo mismo que hacemos en el bucle while
, pero escribiéndolo de otra forma:
let i = 0;
while (i < 5) {
console.log("Valor de i:", i);
i++;
}
Recuerda que en programación es muy habitual empezar a contar desde cero. Mientras que en la vida real se contaría desde 1 hasta 10, en programación se contaría desde 0 hasta 9.
Decremento
No nos acostumbremos a hacer los bucles de memoria, ya que las condiciones pueden variar y ser bien diferentes. Por ejemplo, vamos a hacer un bucle que en lugar de incrementar su contador, se decremente, ya que nos interesa hacer una cuenta atrás:
for (let i = 5; i > 0; i--) {
console.log("Valor de i:", i);
}
En este caso, vamos a arrancar el bucle con un valor de i
de 5
. Repetiremos la iteración varias veces, y observa que el incremento que tenemos es en su lugar un decremento, por lo que en lugar de sumarle 1
, lo restamos. El valor de i
iría desde 5
, a 4
, 3
, 2
, 1
y cuando se reduzca a 0
, ya no cumpliría la condición i > 0
, por lo que terminaría el bucle, saldría de él y continuaría el resto del programa.
Incremento múltiple
Aunque no suele ser habitual, es posible añadir varias inicializaciones o incrementos en un bucle for separando por comas.
En el siguiente ejemplo además de aumentar el valor de una variable i
, inicializamos una variable j
con el valor 5
y la vamos decrementando:
for (i = 0, j = 5; i < 5; i++, j--) {
console.log("Valor de i y j:", i, j);
}
Este código sería equivalente al siguiente:
let i = 0;
let j = 5;
while (i < 5) {
console.log("Valor de i: ", i);
console.log("Valor de j: ", j);
i++;
j--;
}
En principio, el programador debería realizar el bucle con el que más cómodo se sienta, tanto un while
como un for
. Sin embargo, es más común encontrarse con bucles for
en el día a día, por lo que se recomienda no dejar de utilizar el for
simplemente por un rechazo inicial debido a que su sintaxis pueda parecer más compleja.