Curso de Intranet

7. Bucles

En cualquier lenguaje de programación se nos plantea, en muchas ocasiones, la necesidad de realizar una operación mas de una vez, en un proceso reiterativo. Esa operación puede realizarse un número determinado o indeterminado de veces. En VBScript tenemos varias estructuras que nos lo permiten. Vamos a conocerlas todas y así sabremos como elegir una u otra según las circunstancias.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


7.1 Bucles FOR... NEXT

Esta estructura se emplea cuando es necesario repetir un bloque de operaciones un número determinado de veces. Un bucle FOR ... Next emplea para ello un variable de control que actúa como contador de las veces que se ha procesado el bucle. La variable que actúa como contador parte de un valor_inicial. Cada vez que se ejecuta el BLOQUE DE SENTENCIAS incluido en el bucle la variable de contador se incrementa en una unidad. Opcionalmente el incremento puede ser diferente de la unidad, incluyendo el parámetro STEP seguido del índice de incremento que deseemos. Cuando el contador alcanza el valor_final se deja de ejecutar el bucle y se sigue ejecutando el programa a partir de la instrucción que va detrás de NEXT. La estructura general es la siguiente:

FOR contador = valor_inicial TO valor_final STEP incremento

    BLOQUE DE SENTENCIAS

NEXT

Veamos unos ejemplos de uso.

Bucle For...Next

<HTML>
<HEAD>
<TITLE>Prueba de bucle FOR...NEXT</TITLE>
</HEAD>
<BODY>

<SCRIPT LANGUAGE = "VBScript">
    OPTION EXPLICIT
    DIM contador
    FOR contador = 0 TO 5
        DOCUMENT.WRITE (contador & "<BR>")
    NEXT
    DOCUMENT.WRITE ("Se acabó la cuenta")
</SCRIPT>

</BODY>
</HTML>

El resultado de la ejecución de éste código será el siguiente:

0
1
2
3
4
5
Se acabó la cuenta

Haz clic aquí para ver esta página: ejemplo de bucle FOR

Bien. Ahora supongamos el siguiente ejemplo de código:

Bucle For...Next

<HTML>
<HEAD>
<TITLE>Prueba de bucle FOR...NEXT</TITLE>
</HEAD>
<BODY>

<SCRIPT LANGUAGE = "VBScript">
    OPTION EXPLICIT
    DIM contador
    FOR contador = 0 TO 10 STEP 2
        DOCUMENT.WRITE (contador & "<BR>")
    NEXT
    DOCUMENT.WRITE ("Se acabó la cuenta")
</SCRIPT>

</BODY>
</HTML>

El resultado será:

0
2
4
6
810
Se acabó la cuenta

Como vemos en el último ejemplo, la cuenta se ha realizado de dos en dos por la palabra clave STEP 2 que hemos añadido a la instrucción FOR.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


7.2 Bucles DO WHILE...LOOP

Este tipo de bucles se emplean para efectuar (DO) una operación un número indeterminado de veces mientras (WHILE) se cumpla una condición. Su estructura general es la siguiente:

DO WHILE (condición)

    BLOQUE DE INSTRUCCIONES

LOOP

El BLOQUE DE INSTRUCCIONES, contenido entre las líneas DO y LOOP se ejecutará mientras se cumpla la condición. Supongamos que ha llegado la hora de pedirle al usuario una palabra clave para continuar ejecutando un programa. Esta palabra será, por ejemplo, AUTORIZADO. Veamos como lo haríamos:

Bucle Do...While

<HTML>
<HEAD>
<TITLE>Prueba de DO WHILE ... LOOP</TITLE>
</HEAD>
<BODY>

<SCRIPT LANGUAGE = "VBScript">
    OPTION EXPLICIT
    DIM clave
    clave = ""
    DO WHILE (clave <> "AUTORIZADO")
        ' Ejecuta mientras la clave no es igual a <> AUTORIZADO
        clave = INPUTBOX ("Teclea la clave:")
    LOOP
    MSGBOX ("La clave ya es correcta")
</SCRIPT>

</BODY>
</HTML>

Este ejemplo mostrará el siguiente cuadro de diálogo y no seguirá adelante hasta que se introduzca la palabra AUTORIZADO. Si se introduce mal la clave, seguirá mostrando la pregunta indefinidamente.

Una vez introducida la clave correctamente el programa continuará su ejecución mostrando lo siguiente:

Haz clic aquí para ver esta página: ejemplo de bucle DO WHILE

Bien. Veamos más posibilidades.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


7.3 Bucles DO UNTIL ... LOOP

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.

Bucle Do...Until

<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.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


7.4 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, se aconseja no utilizar este formato de bucle, ya que es posible que futuras versiones del intérprete dejen de contemplarlo.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


7.5 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:

Salir de un bucle

<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.

Haz clic aquí para ver esta página: ejemplo de bucle EXIT DO

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.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de Intranet y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


Si desea obtener un acceso sin restricciones a los contenidos del curso de Intranet y disfrutar de todas las herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma inmediata el curso.