TUTORIAL - LECCIÓN 3
Sigamos
usando nuestro programa. Como vimos se preguntó 3 veces por el
nombre de otros tantos usuarios. Imáginate que son 45 usuarios y
tienes que indicar una línea de código por cada uno, en total 45
líneas de código. Absurdo.
Para
esto se usan bucles (repeat-until; while-wend; for-next) de ejecución que dependen de que
se cumpla o no una condición para repetir nuevamente un trozo de
código. Probemos lo siguiente:
list create,1
%%numero_de_veces = 10
repeat
list add,1,@input(¿Cómo
te llamas usuario?)
%%numero_de_veces = @pred(%%numero_de_veces)
until @zero(%%numero_de_veces)
info Hola Mundo. Os
hablan:@cr()@text(1)
En esta versión creamos una variable llamada %%numero_de_veces a la que le damos el valor 10 (o el que queramos). Esta variable será nuestro contador
para preguntar por el nombre de 10 usuarios (o el nº de usuarios
que queramos).
Hay
un comando repeat asociado a until. Todo el código
que haya dentro se ejecutará hasta (until) que una condición se cumpla.
Como puedes apreciar, el código que va dentro de repeat-until se presenta con una sangría mayor (mayor margen derecho), de manera estructurada.
Cada
vez que se pregunta por el nombre de un usuario el valor de %%numero_de_veces se decrementa
en uno, es decir el predecesor (lo que hace la función @pred).
Ésta es una característica propia de VDS, ya que en otros
lenguajes basta con indicarlo así:
%%numero_de_veces = %%numero_de_veces - 1
En
cada pasada por until se comprueba si %%numero_de_veces ha llegado al valor cero (la
función @zero() da como resultado "positivo" si su
argumento es cero). Es decir que %%numero_de_veces valdrá 0
cuando se hayan preguntado 10 veces el nombre de cada usuario.
Podemos
cambiar la función @zero() por esta otra que haría lo
mismo:
@equal(%%numero_de_veces,0)
donde
se compara la variable %%numero_de_veces con el valor 0 dando
"correcto" si es cierto.
También
podemos hacerlo así:
list create,1
%%numero_de_veces = 10
while
@greater(%%numero_de_veces,0)
list add,1,@input(¿Cómo
te llamas usuario?)
%%numero_de_veces = @pred(%%numero_de_veces)
wend
Ahora la
condición se establece antes del bloque de código a repetir.
Mientras que el valor de la variable %%numero_de_veces sea mayor (@greater)
que 0 se
ejecuta el bloque de código. Cuando se llegue al valor 0 se salta el
bloque de código.
La última
condición que trataremos es el comando if.
Veamos un
ejemplo:
if @ask(¿Quieres
ejecutar el programa?)
list create,1
%%numero_de_veces = 10
while
@greater(%%numero_de_veces,0)
list add,1,@input(¿Cómo
te llamas usuario?)
%%numero_de_veces = @pred(%%numero_de_veces)
wend
info Hola Mundo. Os
hablan:@cr()@text(1)
end
Sólo
si la respuesta a la pregunta (función @ask) ¿Quieres
ejecutar el programa? es sí
se ejecutará el programa. En caso contrario se salta todo el bloque
de código que se encuentra entre if - end.
Notar
dos cosas, que el bloque de código suele ponerse con sangría, como
vimos anteriormente; aunque no es necesario facilita la comprensión
del programa. Segundo en lo que fijarse es que se pueden anidar
todas los bucles anteriormente vistos.
Investiga
y aprende analizando los scripts de otros usuarios.
Copyright © 2004-2008 uVeDeSe
|