Compartilhar via


Fazer... 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

Prazo Definição
Do Obrigatório Inicia a definição do Do loop.
While Não é possível receber se Until for usado. Repita o loop até condition que seja False.
Until Não é possível receber se While for usado. Repita o loop até condition que seja True.
condition Opcional. Boolean expressão. Se condition for Nothing, o Visual Basic o trata como False.
statements Opcional. Uma ou mais instruçõ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 atendida. Se você quiser repetir as instruções um número definido de vezes, o For... A próxima instrução geralmente é uma opção melhor.

Você pode usar ou WhileUntil 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 poderá 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 que seja avaliada como um valor de tipo de dados booliano (True ou False). Isso inclui valores de outros tipos de dados, como tipos numéricos, que foram convertidos Booleanem .

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

Observação

A Do...Loop estrutura oferece mais flexibilidade do que o Tempo... Instrução End While porque permite que você decida se deseja encerrar o loop quando condition parar de ser True ou quando ele se torna True. 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. Exit Do transfere o controle imediatamente para a instrução que segue a Loop instrução.

Exit Do geralmente é usado depois que alguma condição é avaliada, por exemplo, em uma If...Then...Else estrutura. Talvez você queira sair de um loop se detectar uma condição que torne desnecessário ou impossível continuar iterando, como um valor incorreto ou uma solicitação de encerramento. Um uso é Exit Do testar uma condição que possa causar um loop sem fim, que é um loop que pode executar um grande ou até mesmo 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.

Quando usado em loops aninhados Do , Exit Do transfere 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 loop.

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 no loop, no entanto, faz com que a Exit Do instrução interrompa o loop quando a variável de índice for 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

Consulte também