While
While döngüsü bir koşul gerçekleştiği sürece çalışan döngüdür. For döngüsüne göre avantajı, sayı dışında herhangi bir veri tipi üzerinde karşılaştırma yapılabilir olmasıdır. Ancak For döngüsünde otomatik yapılan sayaçların artırılması ve kontrol edilmesi işlemleri bu döngüde yapılmaz. Bunun için kod yazmamız gerekir.
While Koşullar
End While
While döngüsünde koşul kontrolleri döngünün içinde yapılır ve gerektiğinde
Exit While ifadesi ile döngüden çıkılır.
Birden ona kadar olan sayıların toplamını hesaplamak için, bir ve on arasındaki
sayılar tek tek yazılıp toplanabilir. Bu, iyi bir yöntem olmasa da sonuç verir. Ancak
kullanıcının girdiği bir sayıya kadar toplam almak için bir döngü gerekir.
Dim toplam As Integer = 0
Dim sayac As Short = InputBox("Bir sayı girin")
While sayac > 0
toplam += sayac
sayac -= 1
End While
Burada kullanıcının girdiği sayıdan itibaren sıfıra kadar giden bir döngü kurulur.
Döngü sayacın sıfırdan büyük olduğu her durum için çalışır. Sayaç sıfırlandığında
ise döngüden çıkılır.
While koşul1 and koşul2 or koşul3
End while
Do Loop
Do ifadesi ile başlayan döngülerin söz dizimi Loop ifadesi ile sonlanacak şekilde yazılır. Loop anahtar kelimesinin görevi, Do ifadesine geri dönmektir.
Dolayısıyla koşul kontrolü yapılmayan bir Do Loop döngüsü sonsuza kadar çalışır.
Do
Label1.Text = "Bu döngüden çıkılamaz."
Loop
Do Loop döngüsünde koşul kontrolleri döngünün içinde yapılır ve gerektiğinde Exit Do ifadesi ile döngüden çıkılır.
Do
Dim kullanici, parola As String
kullanici = InputBox("Kullanıcı Adı: ")
parola = InputBox("Parola: ")
If LCase(kullanici) = "ogrenci" And parola = "123456"
Then
Exit Do
End If
MsgBox("Hatalı giriş!", MsgBoxStyle.Exclamation)
Loop
Label1.Text = "Giriş başarılı." & vbCrLf
Exit Do ifadesi ile karşılaşıldığı zaman döngüden çıkılacağı için, If içinde kontrol edilen koşul doğru ise mesaj kutusunun gösterildiği kod bölümüne geçilmez.
Do While
Koşullar, Do Loop döngüsünün içinde kontrol edilebildiği gibi, döngüye girmeden de kontrol edilebilir.
Dim i As Integer = 0
Do While i < 10
i += 1
Loop
Döngünün bu şekilde kullanımının While - End While döngüsünden farkı yoktur. Ancak Do While döngüsünün yapısı daha esnektir ve kontrol Loop ifadesinde de yapılabilir.
Dim yanit As String
Do
MsgBox("İşlem yapılıyor...")
yanit = InputBox("Devam etmek istiyor musunuz?")
Loop While (yanit = "e" Or yanit = "E")
Buradaki fark, döngü içinde tanımlanan işlem bir defa yapıldıktan sonra koşulun kontrol edilmesidir. Yani en az bir defa yapılması istenen bir işlem Do -Loop While yapısı içersinde kullanılabilir.
Do Until
Do Loop döngüsünün, kontrol edilen koşul gerçekleşene kadar devam etmesi isteniyorsa, Do Until yapısı kullanılır. Do While döngüsü, koşul True olduğu sürece devam ederken; Do Until döngüsü, koşul True olduğu zaman sonlanır.
Dim dizi(9) As Integer
Dim i As Integer = 0
Do Until i = 10
dizi(i) = i * i
i += 1
Loop
Do While ile yazılan bir döngüyü Do Until ifadesine çevirmek için, While kontrolündeki koşulun tersinin alınması gerekir.
Dim yanit As String
Do
MsgBox("İşlem yapılıyor...")
yanit = InputBox("Devam etmek istiyor musunuz?")
Loop Until Not (yanit = "e" Or yanit = "E")
Do
MsgBox("İşlem yapılıyor...")
yanit = InputBox("Devam etmek istiyor musunuz?")
Loop Until (yanit <> "e" And yanit <> "E")