Dokuman Anasayfa
 


 

While Döngüsü

İç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.

 

» Hakkımızda
  İcerikde ekli bulunan dokumanların her hangı bır websitesi veya baska bır kaynakla alakası yoktur.Tamamen bizim emegimiz olan bu dokumalar uzun cabalar sonucunda bukadarı bır araya getirilmistir.Onun için emege saygılı olalım.
Genel Sorumlu ::  [ Site Yöneticisi ]  [ By SaNaLLord
 . Anasayfa . Bize ulasin . 
SaNaLLoRd Bilgi İşlem merkezi Genel tasarim ve kodlamada son nokta