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

Consulte también