miércoles, 17 de octubre de 2012

16 - Bucles en Javascript



Interesante: Vídeo Tutorial de Javascript, aprende a programar Javascript desde cero.

A veces es necesario repetir un mismo conjunto de sentencias varias veces. Por ejemplo para borrar todos los elementos de un array simplemente debemos hacer delete en cada uno de ellos, es una sentencia que se repetirá tantas veces como largo sea el array. Este es un típico trabajo para las estructuras repetitivas o bucles. En esencia la ejecución de un bucle consiste en ejecutar repetidas veces una misma parte del programa (cuerpo del bucle) hasta que se cumpla una determinada condición, en cuyo caso se acaba la
repetición y el programa continúa con su flujo normal. Existen varias sentencias de bucles: while (condición) {... } , do {...} until (condicion) y for(contador; condición; modcont){...}.

Sentencia while
En esta estructura el programa primero comprueba la condición: si es cierta pasa a ejecutar el cuerpo del bucle, y si es falsa pasa a la instrucción siguiente a la sentencia while. Como siempre un ejemplo lo aclarará todo:
 
var lista = new Array(10);
var ind=0;
while (ind < 10)
{
lista[ind] = '0';
ind++;
}


En este ejemplo mientras que el valor almacenado en ind sea menor que 10 (la longitud del array ) irá almacenando en cada elemento del array lista un 0 e incrementando el valor de ind. Cuando este valor sea 10 el programa no entrará en el cuerpo del bucle. Si no se incrementara el valor de ind el bucle no acabaría nunca, el programa quedaría ejecutando indefinidamente el cuerpo del bucle.

Sentencia do...while
Se trata de un bucle en el que la condición se comprueba tras la primera iteración, es decir que el cuerpo del bucle se ejecuta al menos una vez. El ejemplo anterior quedaría como sigue ...

var lista = new Array(10);
var ind=0;
do
lista[ind] = '0';
ind++;
while (ind < 10)


Como vemos aquí no son imprescindibles las llaves para encerar el cuerpo del bucle. No está contemplada en el standard ECMA 1.5.

Sentencia for
Esta sentencia utiliza una variable de control a modo de contador para controlar la repetición del cuerpo del bucle. La sentencia da un valor inicial a este contador y en cada iteración lo modifica según le indiquemos y comprueba la condición, si se cumple ejecuta el cuerpo del bucle, si no lo salta y continúa por la siguiente sentencia. Vemos el ejemplo anterior usando esta sentencia:

var lista = new Array(10);
var ind;
for (ind=0; ind < 10; ind++)
{
lista[ind] = '0';
}


Como vemos el cuerpo del bucle no incrementa la variable ind, esto se indica en la cabecera de la sentencia. Este código hace exactamente lo mismo que el anterior.

Sentencia for ... in
Se trata de una variante de la sentencia for utilizada para iterar o recorrer todos los elementos de un objeto o de un array. Usa una variable de control que en cada iteración toma el valor del elemento del objeto recorrido. Por ejemplo si pruebas este código podrás ver todos los elementos del objeto document...

var item;
for (item in document)
document.write(item+'<br>');

Con una matriz la variable de control toma el valor de los índices de la matriz, no su contenido o valor.