Faça... Instrução Loop (Visual Basic)
Repete um bloco de instruções enquanto uma Boolean
condição é True
ou até que a condição se torne True
.
Sintaxe
Do [ { While | Until } condition ]
[ statements ]
[ Continue Do ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop
' -or-
Do
[ statements ]
[ Continue Do ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop [ { While | Until } condition ]
Partes
Termo | Definição |
---|---|
Do |
Obrigatório. Inicia a definição do Do loop. |
While |
Não pode ser administrado se Until for utilizado. Repita o loop até condition que seja False . |
Until |
Não pode ser administrado se While for utilizado. Repita o loop até condition que seja True . |
condition |
Opcional. Boolean expressão. Se condition for Nothing , o Visual Basic trata-o como False . |
statements |
Opcional. Uma ou mais afirmações que são repetidas enquanto, ou até, condition é True . |
Continue Do |
Opcional. Transfere o controle para a próxima iteração do Do loop. |
Exit Do |
Opcional. Transfere o controle para fora do Do loop. |
Loop |
Obrigatório. Encerra a definição do Do loop. |
Observações
Use uma Do...Loop
estrutura quando quiser repetir um conjunto de instruções um número indefinido de vezes, até que uma condição seja satisfeita. Se você quiser repetir as instruções um determinado número de vezes, o ... Next Statement é geralmente uma escolha melhor.
Você pode usar um ou While
Until
para especificar condition
, mas não ambos. Se você não der nenhum dos dois, o loop continuará até que um Exit
controle de transferência saia do loop.
Você pode testar condition
apenas uma vez, no início ou no final do loop. Se você testar condition
no início do loop (na Do
instrução), o loop pode não ser executado nem uma vez. Se você testar no final do loop (na Loop
instrução), o loop sempre será executado pelo menos uma vez.
A condição geralmente resulta de uma comparação de dois valores, mas pode ser qualquer expressão avaliada como um valor de Tipo de Dados Booleano (True
ou False
). Isso inclui valores de outros tipos de dados, como tipos numéricos, que foram convertidos em Boolean
.
Você pode aninhar Do
loops colocando um loop dentro do outro. Você também pode aninhar diferentes tipos de estruturas de controle entre si. Para obter mais informações, consulte Estruturas de controle aninhadas.
Nota
A Do...Loop
estrutura dá-lhe mais flexibilidade do que... Declaração End While porque permite que você decida se termina o loop quando condition
deixa de ser True
ou quando ele se torna True
pela primeira vez. Ele também permite que você teste condition
no início ou no final do loop.
Sair do
A instrução Exit Do pode fornecer uma maneira alternativa de sair de um Do…Loop
arquivo . Exit Do
transfere o controle imediatamente para a instrução que se segue à Loop
declaração.
Exit Do
é frequentemente usado depois que alguma condição é avaliada, por exemplo, em uma If...Then...Else
estrutura. Talvez você queira sair de um loop se detetar uma condição que torne desnecessário ou impossível continuar a iteração, como um valor incorreto ou uma solicitação de encerramento. Um uso é Exit Do
testar uma condição que poderia causar um loop infinito, que é um loop que poderia executar um grande ou até infinito número de vezes. Você pode usar Exit Do
para escapar do loop.
Você pode incluir qualquer número de Exit Do
instruções em qualquer lugar em um Do…Loop
arquivo .
Quando usado em loops aninhados, Exit Do
transfere Do
o controle para fora do loop mais interno e para o próximo nível mais alto de aninhamento.
Exemplo 1
No exemplo a seguir, as instruções no loop continuam a ser executadas até que a index
variável seja maior que 10. A Until
cláusula está no final do ciclo.
Dim index As Integer = 0
Do
Debug.Write(index.ToString & " ")
index += 1
Loop Until index > 10
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 2
O exemplo a seguir usa uma While
cláusula em vez de uma Until
cláusula e condition
é testado no início do loop em vez de no final.
Dim index As Integer = 0
Do While index <= 10
Debug.Write(index.ToString & " ")
index += 1
Loop
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 3
No exemplo a seguir, condition
interrompe o loop quando a index
variável é maior que 100. A If
instrução in the loop, no entanto, faz com que a Exit Do
instrução pare o loop quando a variável index é maior que 10.
Dim index As Integer = 0
Do While index <= 100
If index > 10 Then
Exit Do
End If
Debug.Write(index.ToString & " ")
index += 1
Loop
Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10
Exemplo 4
O exemplo a seguir lê todas as linhas em um arquivo de texto. O OpenText método abre o arquivo e retorna um StreamReader que lê os caracteres. Do...Loop
Na condição, o Peek método do StreamReader
determina se há 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)
Do While sr.Peek() >= 0
Debug.WriteLine(sr.ReadLine())
Loop
sr.Close()
End If
End Sub