Do...Loop – příkaz (Visual Basic)
Opakuje blok příkazů, dokud Boolean je podmínka True nebo dokud se podmínka nevrátí True .
Syntax
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
Součásti
| Pojem | Definice |
|---|---|
Do |
Povinná hodnota. Spustí definici Do smyčky. |
While |
Povinné Until , pokud se nepoužívá. Opakujte smyčku, dokud condition není False . |
Until |
Povinné While , pokud se nepoužívá. Opakujte smyčku, dokud condition není True . |
condition |
Nepovinný parametr. Boolean vyjádření. pokud condition je Nothing , Visual Basic považuje za False . |
statements |
Nepovinný parametr. Jeden nebo více příkazů, které se opakují během nebo do condition True . |
Continue Do |
Nepovinný parametr. Přenese řízení na další iteraci Do smyčky. |
Exit Do |
Nepovinný parametr. Přenese řízení ze Do smyčky. |
Loop |
Povinná hodnota. Ukončí definici Do smyčky. |
Poznámky
Strukturu použijte Do...Loop , pokud chcete opakovat sadu příkazů neurčitým počtem opakování, dokud není splněna podmínka. Pokud chcete příkazy opakovat v nastaveném počtu opakování, pro... Další příkaz je obvykle lepší volbou.
Můžete použít buď While nebo Until k zadání condition , ale ne obojího.
Můžete testovat condition pouze jednou, a to buď na začátku, nebo na konci smyčky. Pokud testujete condition na začátku smyčky (v Do příkazu), smyčka nemusí běžet současně. Pokud testujete na konci smyčky (v Loop příkazu), smyčka vždy proběhne alespoň jednou.
Podmínka obvykle je výsledkem porovnání dvou hodnot, ale může to být libovolný výraz, který je vyhodnocen jako logická hodnota datového typu ( True nebo False ). To zahrnuje hodnoty jiných datových typů, například číselné typy, které byly převedeny na Boolean .
Smyčky můžete vnořovat vložením Do jedné smyčky do jiné. Můžete také vnořit různé druhy řídicích struktur mezi sebou. Další informace najdete v tématu vnořené řídicí struktury.
Poznámka
Do...LoopStruktura poskytuje větší flexibilitu než while... Příkaz End While , protože umožňuje rozhodnout, zda chcete ukončit smyčku při condition zastavení True nebo kdy se bude nacházet poprvé True . Také vám umožňuje testovat buď na condition začátku, nebo na konci smyčky.
Ukončit
Příkaz Exit do může nabídnout alternativní způsob, jak ukončit Do…Loop . Exit Do přenáší řízení okamžitě na příkaz, který následuje po Loop příkazu.
Exit Do se často používá po vyhodnocení některé podmínky, například ve If...Then...Else struktuře. Můžete chtít ukončit smyčku, pokud zjistíte podmínku, která je nepotřebná nebo nemožná, aby pokračovala v iteraci, jako je například chybná hodnota nebo žádost o ukončení. Jedním z nich Exit Do je testování podmínky, která by mohla způsobit nekonečné opakování, což je smyčka, která by mohla vést k velkému nebo dokonce nekonečnému počtu časů. Můžete použít Exit Do k opuštění smyčky.
Můžete zahrnout libovolný počet Exit Do příkazů kdekoli v Do…Loop .
Při použití v rámci vnořených Do smyček Exit Do přenáší řízení z nejvnitřnější smyčky a na další vyšší úroveň vnoření.
Příklad 1
V následujícím příkladu jsou příkazy ve smyčce nadále spuštěny, dokud index je proměnná větší než 10. UntilKlauzule je na konci smyčky.
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
Příklad 2
Následující příklad používá While klauzuli namísto Until klauzule a condition je testován na začátku smyčky místo na konci.
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
Příklad 3
V následujícím příkladu condition zastaví smyčka, pokud index je proměnná větší než 100. IfPříkaz ve smyčce ale způsobí, že Exit Do příkaz zastaví smyčku, když je proměnná indexu větší než 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
Příklad 4
Následující příklad přečte všechny řádky v textovém souboru. OpenTextMetoda otevře soubor a vrátí hodnotu StreamReader , která přečte znaky. V Do...Loop podmínce Peek Metoda StreamReader Určuje, zda existují nějaké další znaky.
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