DO...LOOP

Boolean sea True o hasta que la condición se convierta en True.

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

Elementos

 

Término

Definición

Do

Requerido. Do.

While

Obligatorio a menos que se utilice Until. condition sea False.

Until

Obligatorio a menos que se utilice Whilecondition sea True.

condition

Opcional. Booleancondition es Nothing, Visual Basic la trata como False.

statements

Opcional. condition sea True.

Continue Do

Opcional. Do .

Exit Do

Opcional. Do.

Loop

Requerido. 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. Instrucción For...Next es normalmente una opción mejor.

While o Until para especificar condition, pero no ambas.

Puede probar condition solo una vez, en el inicio o el final del bucle. condition al principio del bucle (en la instrucción Do), puede que el bucle no se ejecute ni siquiera una vez. Loop), el bucle siempre se ejecuta al menos una vez.

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 Boolean (Tipo de datos, Visual Basic) (True o False). Boolean.

Se pueden anidar bucles Do colocando un bucle dentro de otro. También puede anidar distintos tipos de estructuras de control unos dentro de otros. Estructuras de control anidadas (Visual Basic).

Nota Nota

La estructura Do...Loop proporciona mayor flexibilidad que la Instrucción While...End While (Visual Basic)porque permite decidir si se debe finalizar el bucle cuando condition deja de ser True o cuando es True por primera vez. condition en el inicio o el final del bucle.

Exit Do

 

La instrucción Exit Do puede proporcionar una alternativa para salir de Do…LoopExit Do transfiere el control inmediatamente a la instrucción que sigue a la instrucción Loop.

Exit Do se utiliza a menudo después de evaluar alguna condición, por ejemplo en una estructura If...Then...Else.Por ejemplo, puede ser conveniente salir de un bucle si se detecta una condición que hace que sea innecesario o imposible continuar la iteración, como puede ser un valor erróneo o una solicitud de finalización. 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 elevado, o incluso infinito, de veces. Exit Do para escapar del bucle.

Exit Do en cualquier lugar de Do…Loop.

Do anidados, Exit Do transfiere el control fuera del bucle más profundo y al siguiente nivel de anidamiento.

Ejemplo

 

 

En el ejemplo siguiente, las instrucciones del bucle continúan ejecutándose hasta que la variable index es superior a 10. Until está al final del bucle.

 
Dim index As Integer = 0
Do
    Debug.Write(index.ToString & " ")
    index += 1
Loop Until index > 10

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 


While en vez de una cláusula Until, y se prueba condition al inicio del bucle en lugar de al final.

 
Dim index As Integer = 0
Do While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 


En el siguiente ejemplo, condition detiene el bucle cuando la variable index es superior a 100. If del bucle, sin embargo, hace que la instrucción Exit Do detenga el bucle cuando la variable índice es mayor de 10.

 
Dim index As Integer = 0
Do While index <= 100
    If index > 10 Then
        Exit Do
    End If

    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 


En el ejemplo siguiente se leen todas las líneas de un archivo de texto. OpenText abre el archivo y devuelve un StreamReader que lee los caracteres. Do...Loop, el método Peek de StreamReaderdetermina si hay caracteres adicionales.

 
Private Sub ShowText(ByVal textFilePath As String)
    If System.IO.File.Exists(textFilePath) = False Then
        Debug.WriteLine("File Not Found: " & textFilePath)
    Else
        Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)

        Do While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        Loop

        sr.Close()
    End If
End Sub