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