viernes, 6 de abril de 2012

Programando V – ActionScript 3: Sentencias de Control (while y do-while)

¿Os han salido muchos bucles infinitos con la sentencia for? Pues hay que tener cuidado, por que ahora vamos con más instrucciones para la creación de bucles. Más concretamente tenemos dos nuevas: while y do-while, que realmente son iguales, pero se diferencian en una cosa muy importante que a veces nos soluciona la vida cuando estamos programando:

while comprueba si se cumple la condición antes de entrar a ejecutar el bucle.

do-while ejecuta el bucle y luego comprueba si se cumple la condición.

¿Se entiende la diferencia? Básicamente el do-while, por su forma, ejecutara las sentencias del bucle al menos una vez, mientras que el while, si no se cumple la condición de entrada, no tiene por que ejecutarse. Veamoslo todo de forma más práctica.

Forma genérica del while:

while (condición) {
     sentencias;
}


Y el do-while:

do{
     sentencias;
}while (condición);


La palabra while significa “mientras” y el do “haz”, por lo que en estas sentencias se hará lo que indiquemos en el bucle mientras se cumpla la condición.

Primero unos programas de ejemplo para comprender la diferencia dicha anteriormente:

var veces:Number=1;

// El bucle while solo se ejecuta si se cumple la condición que hay al principio

while(veces<1){ 

    trace("Se ha pasado por el bucle "+veces+" veces con el bucle while");
       // vamos incrementando la variable en cada ejecución del bucle 
    veces++; 


 // volvemos a poner nuestra variable a 1 
veces=1; 

// El bucle do-while se ejecuta siempre al menos una vez, por que evalua la condición al final 

do{ 
    trace("Se ha pasado por el bucle "+veces+" veces con el bucle do-while"); 
        // vamos incrementando la variable en cada ejecución del bucle 
    veces++; 
}while(veces<1);

El resultado del programa sería:


¿Veis? El bucle while no llega a ejecutarse por que de entrada, la condición no se cumple (la variable veces siempre es mayor que uno, o más concretamente vale 1). Sin embargo, aunque esto también ocurre en el bucle do-while (que la condición no se cumple) se ejecuta una vez, y por eso aparece un mensaje por pantalla.

Vamos a ver un último programa en el que haremos que tanto el while como el do-while tengan el mismo número de pasos:

var veces:Number=1;

// Veamos ahora como el bucle se ejecuta repetidamente hasta cumplir la condición indicada

while(veces<10){ 

    trace("Se ha pasado por el bucle "+veces+" veces con el bucle while"); 
        // vamos incrementando la variable en cada ejecución del bucle 
    veces++; 


 // volvemos a poner nuestra variable a 1 
veces=1; 

trace(""); // imprimimos una linea vacía para separar textos 

// y con do-while 

do{ 
    trace("Se ha pasado por el bucle "+veces+" veces con el bucle do-while"); 
        // vamos incrementando la variable en cada ejecución del bucle 
    veces++; 
}while(veces<10); 

// Tened siempre cuidado con los bucles infinitos!!!

La salida de este último programa sería:


En definitiva tenemos otro par de bucles que se diferencian en el for en que hay que declarar las variables que contaran los pasos fuera, y también incrementarlas de otra forma, y que se suelen usar cuando no tenemos tan claro el numero de veces que queremos que se ejecute la repetición. Pronto iremos viendo casos prácticos del uso de todo esto en videojuegos. Tened paciencia con las bases de la programación, y no os preocupeis si no entendeis todo a la primera, ya lo cogereis bien cuando entremos más en materia.

Próximamente funciones, que en AS3 son importantes para manejarse con los eventos (que ya veremos también lo que son). ¡Hasta otra!

3 comentarios: