While döngüsü döngüler arasındaki en basit döngü çeşididir. Kullanımına genel anlamda bakılmak gerekirse şöyle gösterilebilir;
while (durum) {durum gerçekleştiği sürece tekrarlanacak içerik}
Döngüye ait ufak bir geri sayım sayacı hazırlayabiliriz. Bunun için kullanıcıdan bir sayı alalım ve sayıdan geriye doğru saydıralım.
int main() {
int girilen;
cout << "Bir sayi girin: ";
cin >> girilen;
while (girilen>0) {
cout << girilen << "\t";
girilen--;
}
}
Kullanıcı tarafından girilen bir sayının while döngüsü ile 0'a kadar ekrana yazdırılmasını sağladık. Peki bunu yaparken püf nokta neresi?
While döngülerinde püf nokta her döngüde olduğu gibi sonsuz döngü olayına dikkat etmemiz. Yukarıdaki örneğimizde girilen değeri her ekrana yazdırdıktan sonra 1 düşürdük. Şimdi programın nasıl çalıştığına dair aşağıdaki tablomuzu inceleyelim;
Bir sayi girin: 5
Sayı Değeri | girilen değişkeni | Çıktı |
5 | 5 | 5 |
4 | 4 | 4 |
3 | 3 | 3 |
2 | 2 | 2 |
1 | 1 | 1 |
0 | 0 | - |
Tablonun son satırına baktığımızda çıktının olmadığını göreceğiz. Çünkü while döngümüzün koşuluna bakarsak girilen adındaki değişkenin 0'dan büyük olma koşulu var ve son satırda girilen adındaki değişkenimiz 0
Şimdi örnek problemimize bakalım;
PROBLEM : Kullanıcıdan bir sayı alın ve bu sayıya eşit ve küçük, 0'dan büyük olan tüm çift sayıları ekrana yazdırın.
ÇÖZÜM :
int main() {
int girilen, tekCift;
cout << "Bir sayi girin: ";
cin >> girilen;
tekCift = girilen%2;
if(tekCift == 1) {
girilen = girilen - 1;
}
while (girilen>0) {
cout << girilen << "\n";
girilen = girilen - 2;
}
}
1. Adım : Soruda dikkat edilmesi gereken kulanıcıdan bir tek sayı değeri girişi olabileceğidir. Bu yüzden bu kompleks yapılı sorumuzda girilen değerin tek mi yoksa çift mi olduğunu mod işlemine sokarak öğreniyoruz. Bunun için çözümümüzde tekCift adindaki değişkenimize girilen değerin 2 cinsinden modunu alarak sonucunu atıyoruz. Yani eğer girilen değer 10 ise 2'ye bölümünden kalan 0 olacağı için tekCift değişkenimiz 0, eğer girilen değer 11 ise 2'ye bölümünden kalan 1 olacağı için tekCift değişkenimize 1 atamış oluyoruz.
2. Adım : Çözümümüzün ikinci adımında ilk adımda bulduğumuz ve sayımızın tek mi çift mi olduğunu öğrendiğimiz tekCift değişkenimizi kullanıyoruz. Burada eğer sayımız tek ise tekCift değişkenimiz 1 olacağı için bir if oluşturuyoruz ve eğer sayımız tek ise girilen değeri 1 azalt anlamına gelen girilen = girilen - 1; ibaresini kullanıyoruz. Bu sayede eğer kullanıcı 11 girerse programımız 11 tek olduğu için 1 çıkartıp girilen değişkenimizin yeni değerini 10 yapacaktır. Eğer girilen değer zaten 10 ise if yapısı hiç çalışmadan atlanacaktır.
3. Adım : Üçüncü adımımızda ise while döngümüzü kullanıyoruz. Soruda yer alan 0'dan büyük ibaresi için while döngümüze ilk örneğimizde olduğu gibi girilen>0 ibaresini yerleştiriyoruz. Akabinde girilen değerini ekrana yazdırıyoruz ve devamında sadece çift sayıları görmek istediğimiz için girilen değişkenimizi ilk örneğimizden farklı olarak 2 azaltıyoruz.