Este es el bucle más potente que se puede encontrar en VBS, contamos la sintaxis y ofrecemos algunos ejemplos de bucles un poco más complejos.
DO [WHILE | UNTIL
(condicion)] Sentencias ..... LOOP [WHILE | UNTIL (condicion)] |
Vamos a tratar de explicar esta sentencia de manera pausada para que sea más fácil de entender. Lo que siempre tendremos en estos bucles es el DO y el LOOP, entre estos dos colocaremos las sentencias que queremos ejecutar en cada iteración del bucle. Los bucles tienen que evaluar entre cada iteración si se siguen ejecutando o no, para ello evaluan una condición. Lo versatil de este bucle es que la condición se puede expresar de muchas maneras distintas.
Condición expresada al lado del DO: en este caso la
condición se evalua antes de empezar a ejecutarse el bucle.
Condición
expresada al lado del LOOP: en este caso la condición se evalua
después de ejecutarse el bucle. Tiene como diferencia principal frenta al otro
método que en este caso el bucle se ejecutará por lo menos una vez.
Además de poder expresar la condición en estos dos sitios también se puede construir la condición con un enunciado mientras (WHILE) o un enunciado hasta (UNTIL). Las diferencias semanticas de estas dos posibilidades se trasladan también a su manera de funcionar.
Vamos a ver un par de ejemplos de este bucle para comprender su funcionamiento. El ejemplo pide cunstantemente el nombre del autor de la página y no para hasta que el nombre sea "migue". También tiene el usuario la posibilidad de escribir "out", en ese caso, comprobado con un enunciado IF, se sale del bucle rompiéndolo con la sentencia EXIT DO, utilizada para romper bucles.
Dim entrada entrada = "" DO WHILE (entrada <> "migue") entrada = inputbox ("Dime el nombre del autor","seguridad","migue",2,3) if (entrada = "out") then msgbox "salgo por la puerta de atras" exit do end if LOOP |
Podemos
ver este ejemplo en funcionamiento.
El siguente ejemplo realiza una cuenta y entre cuenta y cuenta se muestra el valor de la cuenta actual en una ventanita donde sale un botón de Reintentar y otro de Cancelar. Si se pulsa reintentar se sigue ejecutando el bucle y si se pulsa Cancelar se sale por la puerta de atrás, de manera similar a como se salía en el ejemplo anterior, con EXIT DO.
option explicit dim cont dim respuesta cont = 0 DO cont = cont +1 respuesta = msgbox (cont,69,"Variable del bucle, con valor 6 se sale") if (respuesta = 2) then msgbox "Cuenta Cancelada",16,"Cancelaste!" exit do end if LOOP UNTIL (cont = 6) |
El ejemplo es un poco rarito, pero servirá para comprender estos bucles. Se puede ver en funcionamento para entender mejor la manera de ejecutarse que tiene este bucle.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...