Este bucle funciona de manera muy similar al anterior, con la salvedad de que el BLOQUE DE INSTRUCCIONES se ejecuta hasta que (UNTIL) se cumple la condici�n. Cuando se cumple la condici�n deja de ejecutarse el bucle. La estructura general es la siguiente:
DO UNTIL (condici�n) BLOQUE DE INSTRUCCIONES LOOP
Como siempre, la mejor manera de entender el funcionamiento es con un ejemplo. Supongamos el mismo caso de antes. Se tiene que pedir la clave mientras no se introduzca correctamente. Veamos como hacerlo.
<HTML> <HEAD> <TITLE>Prueba de DO WHILE ... LOOP</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE = "VBScript"> OPTION EXPLICIT DIM clave clave = "" DO UNTIL (clave = "AUTORIZADO") ' Ejecuta hasta que la clave es igual a AUTORIZADO clave = INPUTBOX ("Teclea la clave:") LOOP MSGBOX ("La clave ya es correcta") </SCRIPT> </BODY> </HTML>
El resultado es id�ntico al del ejemplo anterior.
�BUCLES WHILE ... WEND
Estos bucles son un vestigio de los primeros tiempos de BASIC. Hoy d�a han sido sustituidos por los bucles DO WHILE ... LOOP, cuyo funcionamiento es id�ntico. Sin embargo, los int�rpretes actuales todav�a los soportan como complemento, por aquellos programadores acostumbrados al modelo antiguo. Su estructura general es la siguiente:
WHILE (condici�n) BLOQUE DE SENTENCIAS WEND
De todas formas, me permito aconsejar al lector que no se acostumbre a usar este formato de bucle, ya que es posible que futuras versiones del int�rprete dejen de contemplarlo.
�ROMPIENDO BUCLES
En ocasiones es necesario interrumpir de manera forzada la ejecuci�n de un bucle, por ejemplo si se produce una situaci�n que aconseje la continuaci�n del programa ignorando el resto del proceso del bucle. Para ello se emplea la instrucci�n EXIT. Esta instrucci�n presenta tres formatos distintos, seg�n el tipo de bucle en que se implemente. Si queremos causar la ruptura de un bucle FOR... NEXT, utilizaremos EXIT FOR. Para romper un bucle DO WHILE ... LOOP o un bucle DO UNTIL ... LOOP utilizaremos la instrucci�n EXIT DO. Si lo que queremos es romper un bucle WHILE ... WEND usaremos EXIT WHILE. Veamos un ejemplo pr�ctico. Vamos a suponer que estamos contando n�meros y queremos que la cuenta se interrumpa cuando el cuadrado del n�mero por el que vamos sea mayor que 99. Veamos el siguiente c�digo:
<HTML> <HEAD> <TITLE>Prueba de EXIT</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE = "VBScript"> OPTION EXPLICIT DIM num DIM cuad num = 0 cuad = 0 DO WHILE (num < 1000) num = num + 1 cuad = num * num IF (cuad > 99) THEN EXIT DO END IF DOCUMENT.WRITE("El cuadrado de " & num & " es " & cuad & "<BR>") LOOP DOCUMENT.WRITE ("Se acab� el bucle.") </SCRIPT> </BODY> </HTML>
El resultado del c�digo anterior es el siguiente:
El cuadrado de 1 es 1 El cuadrado de 2 es 4 El cuadrado de 3 es 9 El cuadrado de 4 es 16 El cuadrado de 5 es 25 El cuadrado de 6 es 36 El cuadrado de 7 es 49 El cuadrado de 8 es 64 El cuadrado de 9 es 81 Se acab� el bucle.
Este ejemplo ilustra el funcionamiento de la instrucci�n EXIT DO. Los otros dos formatos act�an de manera similar. La instrucci�n EXIT no es de uso muy frecuente, ya que casi siempre se pueden encontrar soluciones mas elegantes, pero conviene conocerla.