Do...Loop döngüsü, For (sayacı temel alan) veya While (koşul girişte kontrol edilir) döngülerine göre daha esnek bitiş koşulları ile bir kod bloğunun tekrarlanmasını sağlar. Visual Basic'te mevcut dört ana yazım şekli vardır:
' Girişte kontrol Do While condition ' Döngü gövdesi Loop ' Çıkışta kontrol Do ' Döngü gövdesi Loop While condition ' Benzer şekilde Until ile: Do Until condition ' Döngü gövdesi Loop Do ' Döngü gövdesi Loop Until condition
Do...Loop kullanmak için durumlar:
Soru: Do While condition döngüsü içinde condition başlangıçta yanlışsa ne olur? Döngünün gövdesinin en az bir kez çalıştırılacak mı?
Cevap: Hayır, döngü gövdesi hiç çalıştırılmayacak çünkü kontrol ilk çalıştırmadan önce yapılır.
Örnek:
Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' Hiçbir satır yazdırılmayacak.
Hikaye
Veri ayrıştırma aşamasında bir geliştirici
Do Until reader.EndOfStreamdöngüsü kullandı ve dosyadan bir satır okuma işlemini gerçekleştirdi. Ancak,EndOfStreamyalnızca dosyanın dışında okuma denemesi yapıldığında doğru hale geldiğinden, son satır işlenmedi. Doğru yöntem:Do While Not reader.EndOfStreamkullanmak veya satır satır okuma işlemi yapmak ve döngüyü EOF koşuluna göre sonlandırmaktır.
Hikaye
For'dan Do...Loop'a kod taşınırken, içinde sayacı artırmayan bir döngü uygulandı. Sonuç olarak, program sonsuz döngüye girdi çünkü bitiş koşulu asla gerçekleşmedi. Do...Loop içinde anahtar değişkenlerin değişimini her zaman kontrol etmek gereklidir.
Hikaye
Bir raporlama alt sisteminde bir programcı,
Do...Loopiç içe döngüler kullandı fakatExit Dokoşulunun iç içe döngülerdeki etkisini dikkate almadı: içExit Dosadece iç döngüden çıkıyordu, her ikisinden değil. Büyük veri hacimlerinde sadece canlı durumda geçici bir engelleyici hata belirgin hale geldi.