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