> Manuales > Tutorial de Visual Basic Script

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.

El bucle DO...LOOP es muy versatil. Con el se pueden crear gran variedad de bucles distintos, bucles que comprueben una condición antes de ejecutar el bucle una vez, después de la primera ejecución y con conbinaciones con mientras (WHILE) que se cumple una condición o hasta (UNTIL) que esa condicion se cumpla. la sintaxis de esta estructura es la siguiente:
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...

Manual