Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Repite un bloque de instrucciones mientras una Boolean condición es True o hasta que la condición se convierte en 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 |
No se puede dar si Until se usa . Repita el bucle hasta condition que sea False. |
Until |
No se puede dar si While se usa . Repita el bucle hasta condition que sea True. |
condition |
Opcional.
Boolean expresión. Si condition es Nothing, Visual Basic lo trata como 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 |
Obligatorio. Finaliza la definición del Do bucle. |
Observaciones
Use una Do...Loop estructura cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se cumpla una condición. Si desea repetir las instrucciones un número establecido de veces, for ... Next Statement suele ser una mejor opción.
Puede usar o WhileUntil para especificar condition, pero no ambos. Si no proporciona ninguno, el bucle continúa hasta que un Exit control de transferencia sale del bucle.
Solo puede probar condition una vez, al principio o al final del bucle. Si prueba condition al principio del bucle (en la Do instrucción ), es posible que el bucle no se ejecute incluso una vez. Si prueba al final del bucle (en la Loop instrucción ), el bucle siempre se ejecuta al menos una vez.
Normalmente, la condición resulta 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 anidar bucles Do si coloca 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 la ... End While (Instrucción) porque permite decidir si finalizar el bucle cuando condition deja de ser True o cuándo se convierte por primera vez en True. También le permite probar condition al principio o al final del bucle.
Salir de do
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 seguir iterando, como un valor erróneo o una solicitud de finalización. Un uso de Exit Do es probar una condición que podría provocar un bucle infinito, que es un bucle que podría ejecutar un número de veces grande o infinito. Puede usar Exit Do para escapar el bucle.
Puede incluir cualquier número de instrucciones en cualquier parte de Exit Do .Do…Loop
Cuando se usa dentro de bucles anidados Do , Exit Do transfiere el control fuera del bucle más interno y al siguiente nivel superior de anidamiento.
Ejemplo 1
En el ejemplo siguiente, las instrucciones del bucle continúan ejecutándose hasta que la index 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 While cláusula en lugar de una Until cláusula y condition se prueba al principio 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
Ejemplo 3
En el ejemplo siguiente, condition detiene el bucle cuando la index variable es mayor que 100. Sin embargo, la If instrucción del bucle hace que la Exit Do instrucción detenga el bucle cuando la variable de índice sea mayor que 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 StreamReader que lee los caracteres. En la Do...Loop condición , el Peek método de StreamReader determina 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