Instrucción While...End While (Visual Basic)
Ejecuta una serie de instrucciones siempre y cuando una condición dada sea True
.
Sintaxis
While condition
[ statements ]
[ Continue While ]
[ statements ]
[ Exit While ]
[ statements ]
End While
Partes
Término | Definición |
---|---|
condition |
Obligatorio. Expresión Boolean . Si condition es Nothing , Visual Basic lo trata como False . |
statements |
Opcional. Una o varias instrucciones que siguen a While , que se ejecutan cada vez condition que es True . |
Continue While |
Opcional. Transfiere el control a la siguiente iteración del bloque While . |
Exit While |
Opcional. Transfiere el control fuera del bloque While . |
End While |
Necesario. Termina la definición del bloque While . |
Comentarios
Use una estructura While...End While
cuando quiera repetir un conjunto de instrucciones un número indefinido de veces, siempre y cuando una condición siga siendo True
. Si quiere obtener más flexibilidad en lo relativo a la ubicación donde prueba la condición o al resultado para el que la prueba, es posible que prefiera la instrucción Do...Loop. Si quiere repetir las instrucciones un número determinado de veces, la instrucción For...Next suele ser una mejor opción.
Nota
La palabra clave While
también se usa en la instrucción Do...Loop, la cláusula Skip While y la cláusula Take While.
Si condition
es True
, todas las statements
se ejecutan hasta que se encuentra la instrucción End While
. Después, el control vuelve a la instrucción While
y se vuelve a comprobar condition
. Si condition
sigue siendo True
, el proceso se repite. Si es False
, el control pasa a la instrucción que hay a continuación de la instrucción End While
.
La instrucción While
siempre comprueba la condición antes de iniciar el bucle. El bucle continúa mientras la condición sigue siendo True
. Si condition
es False
cuando se entra por primera vez en el bucle, no se ejecuta ni siquiera una vez.
Normalmente, condition
es 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
). Esta expresión puede incluir un valor de otro tipo de datos (como un tipo numérico) que se ha convertido en Boolean
.
Puede anidar bucles While
si coloca un bucle dentro de otro. También puede anidar diferentes tipos de estructuras de control unas dentro de otras. Para obtener más información, consulte Estructuras de control anidadas.
Exit While
La instrucción Exit While puede proporcionar otra manera de salir de un bucle While
. Exit While
transfiere inmediatamente el control a la instrucción que hay a continuación de la instrucción End While
.
Normalmente se usa Exit While
después de evaluar una condición (por ejemplo, en una estructura If...Then...Else
). 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. Puede usar Exit While
al probar una condición que podría provocar un bucle sin fin, que es un bucle que se podría ejecutar un número de veces extremadamente grande o incluso infinito. Después, puede usar Exit While
para salir del bucle.
Puede colocar cualquier número de instrucciones Exit While
en cualquier parte del bucle While
.
Cuando se usa dentro de bucles While
anidados, Exit While
transfiere el control fuera del bucle más interno y al siguiente nivel superior de anidamiento.
La instrucción Continue While
transfiere inmediatamente el control a la siguiente iteración del bucle. Para obtener más información, consulte Instrucción Continue.
Ejemplo 1
En el ejemplo siguiente, las instrucciones del bucle siguen ejecutándose hasta que la variable index
sea mayor que 10.
Dim index As Integer = 0
While index <= 10
Debug.Write(index.ToString & " ")
index += 1
End While
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Ejemplo 2
En el ejemplo siguiente se muestra el uso de las instrucciones Continue While
y Exit While
.
Dim index As Integer = 0
While index < 100000
index += 1
' If index is between 5 and 7, continue
' with the next iteration.
If index >= 5 And index <= 8 Then
Continue While
End If
' Display the index.
Debug.Write(index.ToString & " ")
' If index is 10, exit the loop.
If index = 10 Then
Exit While
End If
End While
Debug.WriteLine("")
' Output: 1 2 3 4 9 10
Ejemplo 3
En el ejemplo siguiente se leen todas las líneas de un archivo de texto. El método OpenText abre el archivo y devuelve un objeto StreamReader que lee los caracteres. En la condición While
, el método Peek de StreamReader
determina si el archivo contiene 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)
While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
End While
sr.Close()
End If
End Sub