Do...Loop, instruction (Visual Basic)

Répète un bloc d’instructions pendant qu’une condition de Boolean est True ou jusqu’à ce que la condition devienne True.

Syntaxe

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 ]

Éléments

Terme Définition
Do Obligatoire. Démarre la définition de la boucle Do.
While Ne peut pas être donné si Until est utilisé. Répétez la boucle jusqu’à ce que condition soit False.
Until Ne peut pas être donné si While est utilisé. Répétez la boucle jusqu’à ce que condition soit True.
condition Optionnel. Expression Boolean. Si condition est Nothing, Visual Basic le traite comme False.
statements Optionnel. Une ou plusieurs instructions répétées pendant, ou jusqu’à ce que, condition soit True.
Continue Do Optionnel. Transfère le contrôle à l’itération suivante de la boucle Do.
Exit Do Optionnel. Transfère le contrôle hors de la Do boucle.
Loop Obligatoire. Termine la définition de la boucle Do.

Notes

Utilisez une structure Do...Loop lorsque vous souhaitez répéter un ensemble d’instructions un nombre indéfini de fois, jusqu’à ce qu’une condition soit satisfaite. Si vous souhaitez répéter les instructions un nombre défini de fois, la For... L’instruction suivante est généralement un meilleur choix.

Vous pouvez utiliser While ou Until pour spécifier condition, mais pas les deux. Si vous ne donnez ni l’un ni l’autre, la boucle continue jusqu’à ce qu’un contrôle de transfert Exit hors de la boucle.

Vous ne pouvez tester condition qu’une seule fois, au début ou à la fin de la boucle. Si vous testez condition au début de la boucle (dans l’instruction Do), la boucle peut ne pas s’exécuter une seule fois. Si vous testez à la fin de la boucle (dans l’instruction Loop), la boucle s’exécute toujours au moins une fois.

La condition résulte généralement d’une comparaison de deux valeurs, mais il peut s’agir d’une expression qui prend la valeur type de données booléen (True ou False). Cela inclut les valeurs d’autres types de données, tels que les types numériques, qui ont été convertis en Boolean.

Vous pouvez imbriquer des boucles Do en plaçant une boucle dans une autre. Vous pouvez également imbriquer différents types de structures de contrôle entre elles. Pour plus d’informations, consultez structures de contrôle imbriquées.

Notes

La structure Do...Loop vous offre plus de flexibilité que la While... instruction End While car elle vous permet de décider s’il faut terminer la boucle lorsque condition cesse d’être True ou quand il devient True. Elle vous permet également de tester condition au début ou à la fin de la boucle.

Exit Do

L’instruction Exit Do peut fournir une autre façon de quitter un Do…Loop. Exit Do transfère immédiatement le contrôle à l’instruction qui suit l’instruction Loop.

Exit Do est souvent utilisé après l’évaluation d’une condition, par exemple dans une structure de If...Then...Else. Vous pouvez quitter une boucle si vous détectez une condition qui rend inutile ou impossible de continuer l’itération, telle qu’une valeur erronée ou une requête d’arrêt. L’une des utilisations de Exit Do consiste à tester une condition qui pourrait provoquer une boucle sans fin, qui est une boucle qui peut exécuter un nombre élevé ou même infini de fois. Vous pouvez utiliser Exit Do pour échapper à la boucle.

Vous pouvez inclure n’importe quel nombre d’instructions Exit Do n’importe où dans un Do…Loop.

Lorsqu’elles sont utilisées dans des bouclesDo imbriquées, Exit Do transfère le contrôle hors de la boucle la plus interne et dans le niveau supérieur suivant d’imbrication.

Exemple 1

Dans l’exemple suivant, les instructions de la boucle continuent à s’exécuter jusqu’à ce que la variable index soit supérieure à 10. La clause Until se trouve à la fin de la boucle.

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 

Exemple 2

L’exemple suivant utilise une clause While au lieu d’une clause Until, et condition est testé au début de la boucle plutôt qu’à la fin.

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 

Exemple 3

Dans l’exemple suivant, condition arrête la boucle lorsque la variable index est supérieure à 100. Toutefois, l’instruction If dans la boucle entraîne l’arrêt de l’instruction Exit Do lorsque la variable d’index est supérieure à 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 

Exemple 4

L’exemple suivant lit toutes les lignes d’un fichier texte. La méthode OpenText ouvre le fichier et retourne un StreamReader qui lit les caractères. Dans la condition Do...Loop, la méthode Peek du StreamReader détermine s’il existe des caractères supplémentaires.

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

Voir aussi