Pętla Do...Loop umożliwia organizację powtarzania bloku kodu z bardziej elastycznymi warunkami zakończenia niż For (która jest oparta na liczniku) lub While (gdzie warunek jest zawsze sprawdzany na wejściu). W Visual Basic istnieją cztery podstawowe warianty zapisu:
' Sprawdzenie na wejściu Do While condition ' Ciało pętli Loop ' Sprawdzenie na wyjściu Do ' Ciało pętli Loop While condition ' Analogicznie z Until: Do Until condition ' Ciało pętli Loop Do ' Ciało pętli Loop Until condition
Warto używać Do...Loop, jeśli:
Pytanie: Co się stanie, jeśli wewnątrz pętli Do While condition warunek condition jest początkowo fałszywy? Czy ciało pętli zostanie chociaż raz wykonane?
Odpowiedź: Nie, ciało pętli w ogóle się nie wykona, ponieważ sprawdzenie następuje PRZED pierwszym wykonaniem.
Przykład:
Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' Żaden wiersz nie zostanie wyświetlony.
Historia
Na etapie parsowania danych programista użył pętli
Do Until reader.EndOfStream, wewnątrz której wywoływano odczyt wiersza z pliku. Jednak ponieważEndOfStreamstaje się prawdziwe tylko po próbie odczytu za końcem pliku, ostatni wiersz nie był przetwarzany. Poprawny sposób: używaćDo While Not reader.EndOfStreamlub przetwarzać odczyt wiersz po wierszu i kończyć pętlę na warunku EOF.
Historia
Przy migracji kodu z For do Do...Loop zrealizowano pętlę bez wyraźnej inkrementacji zmiennej-licznika wewnątrz ciała. W rezultacie program wpadł w nieskończoną pętlę, ponieważ warunek zakończenia nigdy nie następował. Należy zawsze kontrolować zmianę kluczowych zmiennych wewnątrz Do...Loop.
Historia
W jednym z podsystemów raportowania programista użył zagnieżdżonych pętli
Do...Loopbez uwzględnienia zagnieżdżenia warunkówExit Do: wewnętrznyExit Dowychodził tylko z wewnętrznej pętli, a nie z obu. Krótkoterminowy blokujący błąd został wykryty tylko w boju przy dużych wolumenach danych.