ProgramlamaVB.NET geliştirici

Visual Basic'de Do...Loop döngüsü nasıl uygulanır, hangi sözdizimi çeşitleri vardır ve bu döngü, neden For veya While yerine tercih edilmelidir?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

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:

  • Kesin bir yineleme sayısı bilinmiyor
  • Çıkış koşulu döngü içindeki işlemlerden (örneğin, dosyadan veya konsoldan okuma) etkileniyorsa

Bilmeceli soru.

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.

Konunun inceliklerini bilmemekten kaynaklanan gerçek hata örnekleri.


Hikaye

Veri ayrıştırma aşamasında bir geliştirici Do Until reader.EndOfStream döngüsü kullandı ve dosyadan bir satır okuma işlemini gerçekleştirdi. Ancak, EndOfStream yalnı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.EndOfStream kullanmak 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...Loop iç içe döngüler kullandı fakat Exit Do koşulunun iç içe döngülerdeki etkisini dikkate almadı: iç Exit Do sadece 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.