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

Executa uma série de instruções desde que uma determinada condição seja True.Runs a series of statements as long as a given condition is True.

SintaxeSyntax

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

PartesParts

TermoTerm DefiniçãoDefinition
condition Necessária.Required. Expressão Boolean.Boolean expression. Se condition for Nothing, Visual Basic o tratará como False.If condition is Nothing, Visual Basic treats it as False.
statements Opcional.Optional. Uma ou mais instruções a seguir While, que são executadas sempre que condition é True.One or more statements following While, which run every time condition is True.
Continue While Opcional.Optional. Transfere o controle para a próxima iteração do bloco de While.Transfers control to the next iteration of the While block.
Exit While Opcional.Optional. Transfere o controle do bloco de While.Transfers control out of the While block.
End While Necessária.Required. Finaliza a definição do bloco While.Terminates the definition of the While block.

ComentáriosRemarks

Use uma estrutura de 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.Use a While...End While structure when you want to repeat a set of statements an indefinite number of times, as long as a condition remains True. Se você quiser mais flexibilidade com o local em que você testa a condição ou o resultado para o qual você o testa, talvez prefira o ... Instrução loop.If you want more flexibility with where you test the condition or what result you test it for, you might prefer the Do...Loop Statement. Se você quiser repetir as instruções um número definido de vezes, o para... A próxima instrução é geralmente uma opção melhor.If you want to repeat the statements a set number of times, the For...Next Statement is usually a better choice.

Observação

A palavra-chave While também é usada no... Instrução loop, a cláusula Skip while e a cláusula Take While.The While keyword is also used in the Do...Loop Statement, the Skip While Clause and the Take While Clause.

Se condition for True, todos os statements executados até que a instrução End While seja encontrada.If condition is True, all of the statements run until the End While statement is encountered. Em seguida, o controle retorna à instrução While e condition é verificado novamente.Control then returns to the While statement, and condition is again checked. Se condition ainda estiver True, o processo será repetido.If condition is still True, the process is repeated. Se for False, o controle passará para a instrução que segue a instrução End While.If it’s False, control passes to the statement that follows the End While statement.

A instrução While sempre verifica a condição antes de iniciar o loop.The While statement always checks the condition before it starts the loop. O loop continua enquanto a condição permanece True.Looping continues while the condition remains True. Se condition for False quando você inserir o loop pela primeira vez, ele não será executado de uma maneira.If condition is False when you first enter the loop, it doesn’t run even once.

O 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).The condition usually results from a comparison of two values, but it can be any expression that evaluates to a Boolean Data Type value (True or False). Essa expressão pode incluir um valor de outro tipo de dados, como um tipo numérico, que foi convertido em Boolean.This expression can include a value of another data type, such as a numeric type, that has been converted to Boolean.

Você pode aninhar loops de While colocando um loop dentro de outro.You can nest While loops by placing one loop within another. Você também pode aninhar diferentes tipos de estruturas de controle entre si.You can also nest different kinds of control structures within one another. Para obter mais informações, consulte estruturas de controle aninhado.For more information, see Nested Control Structures.

Sair enquantoExit While

A instrução Exit while pode fornecer outra maneira de sair de um loop de While.The Exit While statement can provide another way to exit a While loop. Exit While transfere imediatamente o controle para a instrução que segue a instrução End While.Exit While immediately transfers control to the statement that follows the End While statement.

Normalmente, você usa Exit While depois que alguma condição é avaliada (por exemplo, em uma estrutura de If...Then...Else).You typically use Exit While after some condition is evaluated (for example, in an If...Then...Else structure). Talvez você queira sair de um loop se detectar uma condição que o torne desnecessário ou impossível para continuar a iteração, como um valor errado ou uma solicitação de encerramento.You might want to exit a loop if you detect a condition that makes it unnecessary or impossible to continue iterating, such as an erroneous value or a termination request. Você pode usar Exit While ao testar uma condição que poderia causar um loop infinito, que é um loop que poderia executar um número muito grande ou mesmo infinito de vezes.You can use Exit While when you test for a condition that could cause an endless loop, which is a loop that could run an extremely large or even infinite number of times. Em seguida, você pode usar Exit While para escapar o loop.You can then use Exit While to escape the loop.

Você pode inserir qualquer número de instruções Exit While em qualquer lugar no loop While.You can place any number of Exit While statements anywhere in the While loop.

Quando usado em loops de While aninhados, Exit While transfere o controle do loop mais interno e para o próximo nível mais alto de aninhamento.When used within nested While loops, Exit While transfers control out of the innermost loop and into the next higher level of nesting.

A instrução Continue While transfere imediatamente o controle para a próxima iteração do loop.The Continue While statement immediately transfers control to the next iteration of the loop. Para obter mais informações, consulte instrução Continue.For more information, see Continue Statement.

ExemploExample

No exemplo a seguir, as instruções no loop continuam a ser executadas até que a variável de index seja maior que 10.In the following example, the statements in the loop continue to run until the index variable is greater than 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 

ExemploExample

O exemplo a seguir ilustra o uso das instruções Continue While e Exit While.The following example illustrates the use of the Continue While and Exit While statements.

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

ExemploExample

O exemplo a seguir lê todas as linhas em um arquivo de texto.The following example reads all lines in a text file. O método OpenText abre o arquivo e retorna um StreamReader que lê os caracteres.The OpenText method opens the file and returns a StreamReader that reads the characters. Na condição de While, o método Peek da StreamReader determina se o arquivo contém caracteres adicionais.In the While condition, the Peek method of the StreamReader determines whether the file contains additional characters.

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 tambémSee also