İçlerinde anlatımı ve anlaşılması en kolay olan
döngüdür. While döngüsü, döngü sayısının belli olmadığı zamanlarda
kullanılır.
while ( koşul )
Komut;
While döngüsü, içinde bulunan ifade doğru
olduğu sürece altındaki komut veya komut bloğu yürütülür. Eğer
yanlış ise kontrol bir sonraki komut veya komut bloğuna geçer.
While döngüsü daha genel şekliyle:
while ( ifade )
{
komut;
komut;
komut;
.
.
.
}
Burada bir şeye dikkat etmenizi istiyorum.
Çoklu komutlar kullandığımızda " {
} "parantezleri gereklidir.
// while1.cpp
// while döngüsünü kullandık
// girdiğimiz sayıdan 100 e kadar olan sayıları topladık
#include <iostream.h>
main()
{
int x, y;
y= 0;
cout<< " Bir Sayı Giriniz ( Sayı 100 den küçük olucak ) : ";
cin>>x;
while (x< 101)
{
y =y+x;
x =x+1;
}
cout<< "Toplam= "<< y;
}
Burada önce x ve y yi tanımladık. y=0
değerini verdik. Sonra klavyeden girilen değerin x olduğunu
yazdık. while (x< 101)
işte burada ifademiz x< 101. Şimdi bu koşul sağlanıncaya kadar
döngümüz devam edecek. While' den sonraki bloğa geçtiğimizde ise.
y` ye x i ekliyoruz ve x in değerini her seferinde 1 arttırıyoruz.
Sanırım bu basit örnekte döngünün basit yapısını ve mantığını
anlamış oldunuz.
Döngünün verilen ifade veya koşula göre
sağlanması döngülerin en önemli konusudur. Eğer bir döngüden
çıkılmazsa o döngü sonsuza gider. Buna da "sonsuz döngü" denir.
Döngüler konusunda en çok rastlayacağımız hata da budur.Şimdi buna
bir örnek verelim. Fakat, şimdiden uyarıyorum, sonsuz döngü
yapıldığında bilgisayarınız kilitlenebilir. Onun için buna
şimdiden hazır olun. Zaten bir sefer denediğimizde ne demek
istediğimi anlayacaksınızdır.
//sonsuz.cpp
//while döngüsü ile sonsuz bir döngü yaptık
#include <iostream.h>
main()
{
int x=1;
while(x)
cout<< "x= "<< x++<< endl;
}
Burada neden sonsuz bir döngü oldu? Evet
işte x ifadesini koşula bağlamadık. Şayet
while(x<10)
demiş olsaydık. 1,2,3,4,5,6,7,8,9 a kadar x sayısı sıralanacaktı.
//klavye.cpp
//while döngüsü ile klavyeden girilen sayı
#include <iostream.h>
main()
{
int x, y = 0;
while (y< 20)
{
cin>>x;
y = y+x;
}
cout<< "Toplam= "<< y ;
}
Bu programda da klavyeden girilen sayıların
toplamı 20' den büyük olunca program Toplam olarak söylüyor.
Sanırım basit While yapısını anladınız. Şimdi birazda karmaşık
programcıklar yapalım:).
1. Örnek: Girilen altı not'un ortalamasını
alıyor.
//ortalama.cpp
// while döngüsü ile girilen notların ortalamasını aldık.
#include <iostream.h>
int main()
{
int toplam,
sayac,
not,
ortalama;
toplam = 0;
sayac = 1;
while ( sayac <= 6 )
{
cout << "Notu giriniz: ";
cin >>not;
toplam = toplam + not;
sayac = sayac + 1;
}
ortalama = toplam / 6;
cout << "Sınıf ortalaması = " << ortalama << endl;
return 0;
}
Bu örneğimizde yine toplam, sayac, not,
ortalama gibi değişkenleri tanımladık.
( toplam =0 ; ve sayac = 1; )
de değişkenlere ilk değerlerini atadık. While döngüsünün içinde
sayac değişkenimizi altı defa işlemesini söyledik. Sonra alttaki
toplam ve sayac bölümlerinde ise toplam a not' u ekliyoruz, her
seferinde de sayac değerini bir arttırıyoruz ve sayac değeri 6' ya
gelince while döngümüz duruyor. Program sonra toplamı alıp altıya
böler bu sayede ortalamayı alır, sonrada çıktısını gerçekleştirir.
2. Örnek:
//faktoriyel.cpp
// while ile faktoriyel hesaplama
#include <iostream.h>
int main()
{
int sayi;
long int faktoriyel=1;
cout << "Bir sayı giriniz: ";
cin >> sayi;
cout << sayi << " `in Faktöriyeli: ";
while (sayi > 1)
faktoriyel *= sayi--;
cout << faktoriyel << endl;
return 0;
}
Burda
while (sayi>1) şeklinde koşulumuzu belirttik. Bir altında
ise faktoriyel *= sayi--;
evet burda da daha önce gördüğümüz gibi eşitleme operatörü olan (
*= ) i kullandık. Yani faktoriyel'e faktoriyel*sayi-- nin değeri
atanır. Matematiğini düşünürseniz; 7 sayısının faktöriyeli 7 *=
7-- gibi. yani 7 ye devamlı 7-- oda 6 demektir. 6 ile carpımı
eklenir, bu 6-- ile devam eder. En basit anlatımı bu:) Sonrada tüm
while döngüsü bittikten sonrada faktoriyel' in sonucu çıktı olarak
ekrana gelir. Bu örnekte negatif sayıların faktöriyelini de 1'e
eşit tutuyor. Dikkat ediniz. Negatif sayıların faktöriyeli alınmaz
şartını koymadık. Şayet siz koymak isterseniz bir if else bloğu
yerleştirmelisiniz if(sayi>=0) faktoriyel al yoksa faktoriyel alma
gibi.
3. Örnek:
// maas.cpp
// while if-else ile bir maas vergi uygulaması
#include <iostream.h>
int main( )
{
unsigned long maas, net, vergi = 0.0; // maas net vergi bunları tanımladık
cout<< "Lütfen maaşınızı giriniz: "; // maası giriyoruz
cin>> maas; // maası programa alıyoruz
while( maas >= 0.0 ) // maaşın koşlunu yazıyorus döngüye
{
if( maas <= 250000000 ) // maaş 250 milyondan az ise
vergi = 0.0;
else // vergi yok:)
if( maas < 500000000 ) // maas 500 den az ise
vergi = maas * 0.10; // vergi %10
else // 500 den fazla ise
vergi = maas * 0.20; // vergi %20
net = maas - vergi; // net maaşımız vergi düşünce çıkar
cout<< "Ödenmesi Gereken vergi " << vergi << endl; // vergi ekranda
cout<< "Net maaşınız: " << net << endl; // geriye kalan maaşımız
cout<< "Lütfen maaşınızı giriniz: "; // bir dahaki ayki yeni maaşımız
cin>> maas; // maaşı program alıyor
}
return 1;
}
Bu örnekte sanırım fazla açıklama yok.
Sizden istediğim, üç kişinin maaşını girdikten sonra onların
alacağı toplam maaş ve ödemeleri gereken toplam vergiyi bulmanız.
Bunu yaparsanız buraya kadar olanlardan bir şeyler anlamışızdır.
|