Instrucción Do...Loop (Visual Basic)
Repite un bloque de instrucciones mientras una Boolean condición es o hasta que la condición se convierte en True True .
Sintaxis
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
Partes
| Término | Definición |
|---|---|
Do |
Obligatorio. Inicia la definición del Do bucle. |
While |
Es necesario a menos que se use Until. Repita el bucle hasta condition que sea False . |
Until |
Es necesario a menos que se use While. Repita el bucle hasta condition que sea True . |
condition |
Opcional. Expresión Boolean. Si condition es , Visual Basic trata como Nothing False . |
statements |
Opcional. Una o varias instrucciones que se repiten mientras, o hasta, condition es True . |
Continue Do |
Opcional. Transfiere el control a la siguiente iteración del Do bucle. |
Exit Do |
Opcional. Transfiere el control fuera del Do bucle. |
Loop |
Necesario. Finaliza la definición del Do bucle. |
Comentarios
Use una estructura cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se Do...Loop cumple una condición. Si desea repetir las instrucciones un número establecido de veces, for... La instrucción siguiente suele ser una mejor opción.
Puede usar o While para especificar , pero no Until condition ambos.
Solo puede probar condition una vez, ya sea al principio o al final del bucle. Si prueba al principio del bucle (en la instrucción ), es posible que el bucle no condition Do se ejecute ni siquiera una vez. Si prueba al final del bucle (en la instrucción ), el Loop bucle siempre se ejecuta al menos una vez.
La condición suele ser el resultado de una comparación de dos valores, pero puede ser cualquier expresión que se evalúe como un valor de tipo de datos booleano ( True o False ). Esto incluye valores de otros tipos de datos, como los tipos numéricos, que se han convertido en Boolean .
Puede Do anidar bucles colocando un bucle dentro de otro. También puede anidar diferentes tipos de estructuras de control entre sí. Para obtener más información, vea Estructuras de control anidadas.
Nota
La Do...Loop estructura le ofrece más flexibilidad que while... End While (Instrucción) porque le permite decidir si desea finalizar el bucle cuando deja de condition ser o cuando se convierte por primera vez en True True . También le permite probar condition al principio o al final del bucle.
Salir de la operación
La instrucción Exit Do puede proporcionar una manera alternativa de salir de Do…Loop . Exit Do transfiere el control inmediatamente a la instrucción que sigue a la Loop instrucción .
Exit Do a menudo se usa después de evaluar alguna condición, por ejemplo, en una If...Then...Else estructura . Es posible que quiera salir de un bucle si detecta una condición que hace que sea innecesario o imposible continuar la iteración, como un valor erróneo o una solicitud de finalización. Un uso de es probar una condición que podría provocar un bucle sin fin, que es un bucle que podría ejecutar un número grande o incluso Exit Do infinito de veces. Puede usar para Exit Do escapar el bucle.
Puede incluir cualquier número de Exit Do instrucciones en cualquier lugar de un Do…Loop .
Cuando se usa en bucles anidados, transfiere el control fuera del bucle más interno y Do al siguiente nivel superior de Exit Do anidamiento.
Ejemplo 1
En el ejemplo siguiente, las instrucciones del bucle siguen en ejecución hasta que index la variable es mayor que 10. La Until cláusula 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
Ejemplo 2
En el ejemplo siguiente se usa una cláusula en lugar de una cláusula y se prueba al principio del While bucle en lugar de al Until condition 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
Ejemplo 3
En el ejemplo siguiente, condition detiene el bucle cuando la variable es mayor que index 100. Sin embargo, la instrucción del bucle hace que la instrucción detenga el bucle cuando If la variable de índice sea mayor que Exit Do 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
Ejemplo 4
En el ejemplo siguiente se leen todas las líneas de un archivo de texto. El OpenText método abre el archivo y devuelve un que lee los StreamReader caracteres. En la Do...Loop condición , el método de determina si hay caracteres Peek StreamReader 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