Instrução While...End While (Visual Basic)

Executa uma série de instruções desde que a condição determinada seja True.

Sintaxe

While condition
    [ statements ]
    [ Continue While ]
    [ statements ]
    [ Exit While ]
    [ statements ]
End While

Partes

Termo Definição
condition Obrigatórios. Expressão Boolean. Se condition for Nothing, o Visual Basic o tratará como False.
statements Opcional. Uma ou mais instruções após While, que são executadas sempre que condition é True.
Continue While Opcional. Transfere o controle para a próxima iteração do bloco While.
Exit While Opcional. Transfere o controle para fora do bloco While.
End While Obrigatórios. Finaliza a definição do bloco While.

Comentários

Use uma estrutura While...End While quando quiser repetir um conjunto de instruções um número indefinido de vezes, desde que uma condição permaneça True. Se você deseja mais flexibilidade com o local de teste da condição ou o resultado do teste, talvez prefira a Instrução Do...Loop. Se você quiser repetir as instruções um número definido de vezes, a instrução For...Next geralmente é uma opção melhor.

Observação

A palavra-chave While também é usada na Instrução Do...Loop, na Cláusula Skip While e na Cláusula Take While.

Se condition for True, todos os statements serão executados até que a instrução End While seja encontrada. Em seguida, o controle retorna para a instrução While e condition é verificado novamente. Se condition ainda for True, o processo é repetido. Se for False, o controle passa para a instrução que segue a instrução End While.

A instrução While sempre verifica a condição antes de iniciar o loop. O looping continua enquanto a condição permanece True. Se condition for False quando você entrar no loop pela primeira vez, ele não será executado.

A condition geralmente resulta de uma comparação de dois valores, mas pode ser qualquer expressão avaliada como um valor de Tipo de dados booliano (True ou False). Essa expressão pode incluir um valor de outro tipo de dados, como um tipo numérico, que foi convertido em Boolean.

Você pode aninhar While loops colocando um loop dentro de outro. Você também pode aninhar diferentes tipos de estruturas de controle entre eles. Para obter mais informações, confira Estruturas de controle aninhadas.

Exit While

A instrução Exit While pode fornecer outra maneira de sair de um loop While. Exit While transfere imediatamente o controle imediatamente para a instrução que segue End While.

Exit While geralmente é usado após avaliação de alguma condição (por exemplo, em uma estrutura If...Then...Else). Talvez você queira sair de um loop se detectar uma condição que torna desnecessário ou impossível continuar iterando, como um valor errôneo ou uma solicitação de encerramento. Você pode usar Exit While ao testar uma condição que pode causar um loop sem fim, que pode ser executado várias vezes ou até mesmo infinitamente. Você pode usar Exit While para ignorar o loop.

Você pode colocar qualquer número de instruções Exit While em qualquer lugar no loop While.

Quando usado em loops While aninhados, Exit While transfere o controle para fora do loop mais interno e para dentro do próximo nível mais alto de aninhamento.

A instrução Continue While transfere o controle para a próxima iteração do loop. Para obter mais informações, confira Instrução Continue.

Exemplo 1

No exemplo a seguir, as instruções no loop continuam a ser executadas até que a variável index seja maior 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 

Exemplo 2

O exemplo a seguir ilustra o uso das instruções Continue While e 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

Exemplo 3

O exemplo a seguir lê todas as linhas em um arquivo de texto. O método OpenText abre o arquivo e retorna um StreamReader que lê os caracteres. Na condição While, o método Peek do StreamReader determina se o arquivo contém caracteres adicionais.

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

Confira também