| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
01/1/70 - 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) |
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright. * Para consultas técnicas utilizar la lista de correo.
|
| Comentarios de los visitantes |
|
Aun no hemos recibido comentarios de este artículo.
Puedes ser el primero en enviar tu comentario. |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||
Tienda DesarrolloWeb