Instrucción Do...Loop (Visual Basic)

Actualización: noviembre 2007

Repite un bloque de instrucciones mientras una condición Boolean sea True o hasta que la condición se convierta en True.

Do { While | Until } condition
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
-or-
Do
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition

Partes

  • While
    Obligatorio si se utiliza Until. Repite el bucle hasta que condition sea False.

  • Until
    Obligatorio a menos que se utilice While. Repite el bucle hasta que condition sea True.

  • condition
    Opcional. Expresión Boolean. Si condition es Nothing, Visual Basic la trata como False.

  • statements
    Opcional. Una o más instrucciones que se repiten mientras o hasta que condition sea True.

  • Exit Do
    Opcional. Transfiere el control fuera del bucle Do.

  • Loop
    Obligatorio. Termina la definición del bucle Do.

Comentarios

Utilice una estructura Do...Loop cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se satisfaga una condición. Si desea repetir las instrucciones un número fijo de veces, la Instrucción For...Next es normalmente una opción mejor.

La estructura Do...Loop proporciona mayor flexibilidad que laInstrucción While...End While (Visual Basic) porque permite elegir si se debe finalizar el bucle cuando condition deja de ser True o cuando es True por primera vez. También le permite probar condition al principio o al final del bucle.

Reglas

  • Naturaleza de la condición. Generalmente, la condición es el resultado de comparar dos valores, pero también puede ser cualquier expresión que da como resultado un valor de Boolean (Tipo de datos, Visual Basic) (True o False). Esto incluye los valores de otros tipos de datos, como los numéricos, que han sido convertidos a valores de tipo Boolean.

  • Probar la condición. Sólo puede probar condition una vez, al principio o al final del bucle. Puede usar While o Until para especificar condition, pero no ambas.

  • Número de iteraciones. Si prueba condition al principio del bucle (en la instrucción Do), puede que el bucle no se ejecute ni siquiera una vez. Si prueba al final del bucle (en la instrucción Loop), el bucle siempre se ejecuta al menos una vez.

  • Anidar bucles. Los bucles Do se pueden anidar colocando un bucle dentro de otro. También puede anidar distintos tipos de estructuras de control dentro de otras. Para obtener más información, vea Estructuras de control anidadas.

  • Transferir el control fuera del bucle. La Instrucción Exit (Visual Basic) transfiere el control inmediatamente a la instrucción que sigue a la instrucción Loop. Puede desear salir de un bucle si detecta una condición que hace que sea innecesario o no se pueda continuar la iteración, como puede ser un valor erróneo o una solicitud de finalización. Puede colocar cualquier cantidad de instrucciones Exit Do en cualquier punto del bucle Do. Exit Do suele utilizarse después de evaluar alguna condición, por ejemplo en una estructura If...Then...Else.

Bucles sin fin

Un uso de Exit Do consiste en comprobar una condición que podría ocasionar un bucle sin fin; es decir, un bucle que pudiera ejecutarse un número extremadamente elevado, o incluso infinito, de veces. Si detecta este tipo de situación, puede utilizar Exit Do para interrumpir el bucle. De lo contrario, el bucle sigue ejecutándose.

En el siguiente ejemplo se asigna a number un valor que podría hacer que el bucle se ejecutara más de 2 ^ 31 veces. La instrucción If comprueba si se produce esta situación y, si es así, sale de ella, impidiendo la entrada en un bucle sin fin.

Sub exitDoExample()
    Dim counter As Integer = 0
    Dim number As Integer = 8
    Do Until number = 10
        If number <= 0 Then Exit Do
        number -= 1
        counter += 1
    Loop
    MsgBox("The loop ran " & counter & " times.")
End Sub
Nota:

Para detener un bucle sin fin, presione ESC o CTRL+INTER.

Ejemplo

El ejemplo siguiente ilustra las estructuras Do...Loop anidadas, así como el uso de While y Until, y la comprobación al principio (instrucción Do) y al final (instrucción Loop) del bucle.

Sub DoExample()
    Dim check As Boolean = True
    Dim counter As Integer = 0
    Do
        Do While counter < 20
            counter += 1
            If counter = 10 Then
                check = False
                Exit Do
            End If
        Loop
    Loop Until check = False
End Sub

En el ejemplo anterior, la estructura Do...Loop interior se ejecuta 10 veces, establece el valor del indicador en False y sale de forma prematura utilizando la instrucción Exit Do. El bucle externo sale inmediatamente al comprobar el valor del indicador.

Vea también

Tareas

Cómo: Mejorar el rendimiento de un bucle

Conceptos

Estructuras de bucles

Estructuras de control anidadas

Referencia

Instrucción For...Next (Visual Basic)

Boolean (Tipo de datos, Visual Basic)

Instrucción Exit (Visual Basic)

Instrucción While...End While (Visual Basic)