Do...Loop – příkaz (Visual Basic)
Opakuje blok příkazů, zatímco Boolean
podmínka je True
nebo dokud se podmínka nestane 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 ]
Součástky
Pojem | definice |
---|---|
Do |
Povinný: Spustí definici smyčky Do . |
While |
Nelze je-li Until použít. Opakujte smyčku, dokud condition nebude False . |
Until |
Nelze je-li While použít. Opakujte smyčku, dokud condition nebude True . |
condition |
Nepovinné. Boolean Výraz. Pokud condition je Nothing , Visual Basic ji považuje za False . |
statements |
Nepovinné. Jeden nebo více příkazů, které se opakují, nebo dokud, condition je True . |
Continue Do |
Nepovinné. Přenese řízení do další iterace smyčky Do . |
Exit Do |
Nepovinné. Přenese kontrolu mimo smyčku Do . |
Loop |
Povinný: Ukončí definici smyčky Do . |
Poznámky
Do...Loop
Strukturu použijte, pokud chcete sadu příkazů opakovat neurčitý početkrát, dokud není splněna podmínka. Pokud chcete příkazy opakovat nastavený počet opakování, hodnota For... Další příkaz je obvykle lepší volbou.
Můžete použít buď While
nebo Until
zadat condition
, ale ne obojí. Pokud dáte ani jedno, smyčka pokračuje, dokud Exit
se nepřenese řízení mimo smyčku.
Na začátku nebo na konci smyčky můžete testovat condition
pouze jednou. Pokud testujete condition
na začátku smyčky (v Do
příkazu), smyčka se nemusí spustit ani jednou. Pokud testujete na konci smyčky (v Loop
příkazu), smyčka se vždy spustí alespoň jednou.
Podmínka obvykle pochází z porovnání dvou hodnot, ale může to být libovolný výraz, který se vyhodnotí jako logická hodnota datového typu (True
nebo False
). To zahrnuje hodnoty jiných datových typů, jako jsou číselné typy, které byly převedeny na Boolean
.
Smyčky můžete vnořit Do
vložením jedné smyčky do jiné. Můžete také vnořit různé druhy řídicích struktur mezi sebou. Další informace naleznete v tématu Vnořené řídicí struktury.
Poznámka:
Struktura Do...Loop
poskytuje větší flexibilitu než Zatímco... Ukončit příkaz While , protože umožňuje rozhodnout, zda ukončit smyčku, když condition
přestane být True
nebo kdy se poprvé stane True
. Umožňuje také testovat condition
na začátku nebo na konci smyčky.
Ukončit akci
Příkaz Exit Do může poskytnout alternativní způsob, jak ukončit Do…Loop
příkaz . Exit Do
okamžitě přenese řízení na příkaz, který následuje za příkazem Loop
.
Exit Do
se často používá po vyhodnocení určité podmínky, například ve If...Then...Else
struktuře. Smyčku můžete ukončit, pokud zjistíte podmínku, která znemožní nebo znemožní iteraci, jako je chybná hodnota nebo žádost o ukončení. Jedním z použití Exit Do
je otestovat podmínku, která by mohla způsobit nekonečné smyčky, což je smyčka, která by mohla spustit velký nebo dokonce nekonečný početkrát. Pomocí této Exit Do
smyčky můžete utéct.
Můžete zahrnout libovolný počet Exit Do
příkazů kdekoli v sadě Do…Loop
.
Při použití v rámci vnořených Do
smyček přenese řízení z vnitřní smyčky Exit Do
a do další vyšší úrovně vnoření.
Příklad 1
V následujícím příkladu příkazy ve smyčce se budou spouštět, dokud index
proměnná není větší než 10. Klauzule Until
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 místo Until
klauzule a condition
testuje se 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 zastaví smyčku, condition
pokud index
je proměnná větší než 100. Příkaz If
ve smyčce však způsobí Exit Do
zastavení smyčky, pokud 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. Metoda OpenText otevře soubor a vrátí StreamReader znak, který čte znaky. V podmínce Do...Loop
metoda StreamReader
určuje, Peek 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