Ir directamente al contenido de esta página
Un bucle es la repetición de uno o varios enunciados un número determinado de veces.
Hay dos estructuras básicas para crear bucles: for
y do … while
.
for
La sintaxis de for
es la siguiente:
for(contador;condición;variación_del_contador){
…enunciados a ejecutar…
}
Por partes:
Por ejemplo, supongamos que quiero lanzar una alerta por cada uno de los valores de una matriz que contiene los libros de James Ballard que tengo en mi estantería:
var obras = new Array();
obras[0] = "Aparato de vuelo rasante";
obras[1] = "Compañía de sueños ilimitada";
obras[2] = "Crash";
obras[3] = "El día de la creación";
obras[4] = "El mundo sumergido";
obras[5] = "Hola América";
obras[6] = "La exhibición de atrocidades";
obras[7] = "La isla de cemento";
obras[8] = "La sequía";
obras[9] = "Milenio negro";
obras[10] = "Mitos del futuro próximo";
obras[11] = "Playa terminal";
obras[12] = "Rascacielos"
obras[13] = "Super-Cannes";
obras[14] = "Zona de catástrofe";
for(var i=0;i<=14;i++){
alert(obras[i]);
}
El bucle comienza con i igual a 0, por lo que la alerta muestra Aparato de vuelo rasante
. Como no hay más enunciados, tras ello i se incrementa —i++
es la sintaxis abreviada de i=i+1
—, y repite la operación. Continúa haciendo lo mismo hasta que i es igual a 15, momento en que i<=14
se vuelve falsa, y el bucle deja de ejecutarse.
Hay que prestar especial atención a la hora de establecer las condiciones, puesto que un error de sintaxis puede llevar a que el bucle no se ejecute, o bien que se vuelva infinito. Un bucle como el siguiente:
for(var i=0;i>=100;i++){ … }
No se ejecutaría nunca, puesto que se ha indicado que el for
se repita mientras que i sea mayor o igual a 100, lo cual ya no ocurre desde un primer momento. Por el contrario, este otro:
for(var i=0;i>=0;i++){ … }
Se ejecuta hasta el infinito, puesto que siempre que se actualice el valor de i será mayor que 0.
Ejemplos del empleo de for
y alguna cosa más.
do … while
El comportamiento de do … while
es similar al de for
, con la diferencia de que primero se ejecutan los enunciados y luego se comprueba la codición. Su sintaxis es:
do{
…enunciados a ejecutar…
} while (condición);
Si rehacemos el ejemplo anterior por medio de esta instrucción, tenemos el siguiente código:
var obras = new Array();
obras[0] = "Aparato de vuelo rasante";
…resto de los valores de la matriz…
obras[14] = "Zona de catástrofe";
var i = 0;
do{
alert(obras[i]);
i++;
} while (ilt;=14);
En este caso tenemos que declarar el contador —i— fuera de la estructura del bucle para poder emplearlo, y su valor se debe actualizar en un enunciado que forma parte del bloque a ejecutar. El resultado de ejecutarlo sería el mismo.
Ventajas o desventajas del uso de for
en lugar de do … while
no se me ocurren, aunque personalmente prefiero emplear el primero. Sólo hay que tener en cuenta un detalle que sí que los diferencia: en el de rehacer el bucle anterior que no se ejecutaba nunca —for(var i=0;i>=100;i++)
—, si se programase por medio de do … while
se ejecutaría una vez, puesto que la comprobación de la condición es posterior.