C#’ta yaygın olarak kullanılan döngülerden biri de while döngüsüdür. for döngüsünde olduğu gibi, bir koşul sağlandığı sürece dönmeye devam eder. Koşul yanlış (false) sonucunu verdiği zaman ise sonlandırılır. Genel yazım şekli şöyledir:
while (koşul)
{
yapılacak işler
}
for döngüsünde yaptığımız toplama örneğini, bir de while döngüsüyle yapalım:
int toplam = 0;
int i = 0;
while (i < 100)
{
toplam += i;
i++;
}
Console.WriteLine(toplam);
Çıktı: 4950
Örnekte görüldüğü gibi, sayaç değişkeni (i) döngü içinde, her adımda 1 artırılır. Böylece sayaç 100 olduğunda, döngü sonlandırılır. Burada koşul, sayaç değişkeninin değerinin 100’den küçük olmasıdır. Koşul doğru (true) sonucunu verdikçe döngü işletilir, koşulun yanlış (false) değerini verdiği durumdaysa döngü sonlandırılır.
while döngüsü, bu şekilde sırayla yapılacak işlemlerden ziyade, problem çözümünde bir koşulun durumunu sınamak için kullanılır.
Kullanıcı tarafından girilen bir sayının kaç basamaklı olduğunu bulmak, while döngüsü için daha açıklayıcı bir örnek olacaktır:
Aşağıdaki işlemde int sayi isimli bir değişken oluşturulup içine Console.ReadLine() metodundan gelen string değer dönüştürülerek atılmıştır. Çünkü while döngüsünde büyüktür (>) operatörünü kullanmak için bir sayıya ihtiyacımız vardır ve int değişkenler büyüktür operatörünü kullanabileceğimiz sayıyı tutmaktadır:
int sayi = Convert.ToInt32(Console.ReadLine());
int basamak = 0;
while (sayi > 0)
{
basamak++;
sayi = sayi / 10;
}
Console.WriteLine("Girdiğiniz sayı " + basamak.ToString() + "basamaklıdır.");
Yukarıdaki döngüyü biraz inceleyelim: while döngüsü, sayi değişkeni 0'dan büyük olduğu sürece çalışmakta ve sayi değişkeni her döngüde 10'a bölünmektedir ve her döngü çalıştığında basamak isimli değişken ++; ile 1 arttırılmaktadır. (++; nın kullanılması o değişkeni 1 arttırır.). Örnek olarak 50 sayısını ele alalım. while döngüsü ilk çalıştığında basamak değişkeni 1 arttırılacak, sayi 10 ile bölünecek 5 sayısı elde edilecek ve sayi isimli değişkene aktarılacaktır. sayi isimli değişken hala 0 sayısından büyük olduğu için while döngüsü tekrar çalışacaktır. Bu sefer basamak 1 daha artarak 2 olacak, sayi değişkeni yani 5 sayısı 10 bölünecek ve 0.5 sonucu elde edilecektir. Değişkenimiz int olduğu için sayi değeri 0'a eşitlenecek ve while döngüsü sonlanacaktır.
Elde edilen basamak değişkeni Console.WriteLine() metodu ile ekrana yazdırılmaktadır. Fakat basamak değişkeni int olduğundan dolayı stringle beraber yazdırmak için ToString() metodunu kullanarak int sayısını string bir metne dönüştürdükten sonra yazdırılmaktadır.
- Başlangıç: basamak değişkeni 0’a eşitlenmiştir.
- Koşul: sayi değişkeninin sıfırdan büyük olmasıdır.
- Matematiksel Operasyon: basamak değişkeninin değeri 1 artırılır.
- İşlem: sayi değişkeninin değeri 10’a bölünüp kendisine eşitlenir. (Bir tamsayıyı sonuç 0 oluncaya kadar kaç kere 10’a bölerseniz, o sayının basamak sayısını bulursunuz.) Böylelikle sayı, basamak sayısı kadar 10’a bölünecektir.