Döngü Komutları
for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Kullanımı: for (sayac=alt limit; sayac < üst limit; sayaç artış oranı) { //for bloğu başlangıcı //for blogu (compound) deyimler; } //for blogu sonu
Örnek: for (sayac=0; sayac<11; sayac++) { toplam += sayac; // toplam = toplam + sayac; } Not: sayac++ yerine sayac = sayac + 1 veya sayac +=1 yazılabilir. Hepsi aynı anlama gelmektedir.
Örnek: for (sayac=0; sayac<11; sayac++) toplam +=sayac; // toplam = toplam + sayac; for deyiminin kapsama alanı bir satırdır (komuttur). Tekrar edilecek deyim sayısı birden fazla ise blok açılması gereklidir.
for (sayac=0; sayac<3; sayac++) cout<<” ADAMYO ”; Yukarıdaki program parçasının ekran çıktısı : ADAMYO ADAMYO ADAMYO
for (sayac=0; sayac<3; sayac++) cout<<” ADAMYO ”; cout<<”Bilgisayar Teknolojileri”; Yukarıdaki program parçasının ekran çıktısı : ADAMYO ADAMYO ADAMYO Bilgisayar Teknolojileri
for (sayac=0; sayac<3; sayac++) { cout<<” ADAMYO ”; cout<<”Bilgisayar Teknolojileri”; } Yukarıdaki program parçasının ekran çıktısı : ADAMYO Bilgisayar Teknolojileri
Örnek: Klavyeden bilgisayara 10 adet sayı giren ve bu sayıları toplayıp, toplamı ekranda gösteren bir program yazınız.
#include main() { int sayac, sayi, toplam=0; clrscr(); for (sayac=0; sayac<10; sayac++) { // for dongu blogu cout << sayac << " inci sayiyi giriniz :“ << endl; cin >> sayi; toplam += sayi; } // for dongu blogu sonu cout << "sayilarin toplami : “ << toplam << endl; getch(); }
Örnek: 10 derse ait öğrencinin aldığı not ve dersin kredisi girildiğinde ortalamayı hesaplayarak, geçip kaldığına karar veren programı yazınız. (Geçme notu 40)
#include const float gecmeOrt = 40;// geçme ortalamasi const int N=10; int sayac, saat, toplam = 0, toplamsaat = 0; float notlar; // 10 dersin notlari icin
main() { cout << " bu program notlarinizin ortalamasini hesaplar." <<endl; for(sayac=0; sayac<N; sayac ++) { cout << " ogrenci not girin : "<<endl; cin >> notlar; // kullanicinin girecegi notlar cout<<endl; cout << " ders saati girin"<<endl; cin >> saat; cout<<endl; toplam += (saat * notlar); toplamsaat += saat; }
float ortalama = toplam / toplamsaat; cout<<endl; cout << " ortalama = " << ortalama << ": "; if (ortalama < gecmeOrt) cout << "kaldin." <<endl; else cout << "gectin."; getch(); }
Not: Program başında aşağıdaki yazılı program kodlarında gecmeOrt ve N, const deyimi ile sabit olarak tanımlanmıştır. Bilgi tipleri ve değerleri verilmiştir. const float gecmeOrt = 40;// geçme ortalamasi const int N=10;
SORULAR: 1. Aşağıdaki programın ekran çıktısı nedir? #include main() { int i, j; clrscr(); for (i=10; i>=1; i--) { for (j=1; j<=1; j++) cout << ” * ”; cout << endl; } getch(); }
2. Aşağıdaki programın ekran çıktısı nedir? #include main() { int i, j; clrscr(); for (i=0; i<10; i++) cout << ”Sakarya ”<< endl; for (j=0; j<10; j++) cout << ”Universitesi ”<< endl; getch(); }
3. Aşağıdaki programın ekran çıktısı nedir? #include main() { int i, j; clrscr(); for(i=0; i<3; i++) for(j=1; j<4; j++) cout << i << ” “ << j <<endl; cout <<i << ” “ << j; getch(); }
4. Aşağıdaki ekran çıktısını veren programı yazın. * * * * * * * * * * *
5. Aşağıdaki ekran çıktısını veren programı yazın. * * * * * * * * * * *
ÖDEV Aşağıdaki ekran çıktısını veren programı yazınız. * * * * * * * * * * * * * * *
6. Girilen N adet sayıdan pozitif ve negatif olanların ayrı ayrı toplamlarını bulup yazan programı yazın.
7. Bir mağaza en az 3 çeşit ürün satın alan müşterilerine 50 TL ve üzeri alışverişler için %10 indirim uygulamaktadır. Alınan ürün çeşidi sayısı, her bir üründen alınan miktar ve birim fiyat girildiğinde, müşterinin ödeyeceği ücreti hesaplayan programı yazın.
1’den N’e kadar olan tamsayıların toplamını bulan programı yazın.
Bir sayaca veya kontrol değişkenine bağlı olarak, while deyiminin bloğunu tekrar eder. Koşul while deyimi ile birlikte ifade edilir.
while ( Şart ) deyim1; while ( Şart ) { deyim1; deyim2; …; }
sayac=0; while (sayac<11) { toplam += sayac; sayac++; } while döngüsü şarta bağlı olarak while bloğunu tekrar eder.
while deyimindeki koşul sağlanıncaya kadar do bloğu tekrar edilir.
do deyim1; while ( Şart ); do { deyim1; deyim2; …; } while ( Şart );
sayac=0; do { toplam += sayac; sayac++; } while (sayac<10); do döngüsü while döngüsündeki şarta bağlı olarak { } bloğunu tekrar eder.
Not: while ve do-while döngüleri arasındaki temel fark, yukarıda da görüldüğü gibi, while döngüsünde blok içindeki komutlar şartın doğru olması durumunda çalışması, do-while döngüsünde ise blok içindeki komutlar şartın doğruluğu kontrol edilmeden önce en az bir defa şarta bağlı olmaksızın çalışmasıdır.
Örnek: 0’ dan 10’a kadar olan sayıların toplamını for döngüsüyle hesaplayan programı yazınız.
#include main() { int toplam=0, sayac; for (sayac=0; sayac<11; sayac++) toplam += sayac; cout << ” toplam : “ << toplam; getch(); }
Bir başka şekilde aynı programın kodlanması:
#include int sayac, toplam=0; main() { // sifirdan 10'a kadar olan sayilarin toplami for (sayac=0; sayac<11; sayac++) { toplam +=sayac; //toplam = toplam + sayac; } cout << "Sayilarin toplami: " << toplam; getch(); }
Örnek: Sıfırdan 10’a kadar olan sayıların toplamını while döngüsüyle hesaplayan programı yazınız.
#include main() { int toplam=0, sayac=0;
while (sayac<11) { toplam = toplam + sayac; sayac = sayac + 1; } cout << toplam; getch(); }
Örnek: Klavyeden bilgisayara girilen 3 sayının for, while ve do while döngüleri kullanarak toplamını hesaplayan bir C++ programı yazınız.
#include main() { int sayi, i, top=0; for (i=0; i<3; i++) { cout << "Sayi giriniz: "; cin >> sayi; top = top + sayi; } cout<<"\nFOR ile toplam: " << top << endl << endl;
i=0; top=0; do { cout << "Sayi giriniz: "; cin >> sayi; top = top + sayi; i = i + 1; } while(i<3); cout << "\nDO ile toplam: " << top << endl << endl;
i=0; top=0; while(i<3) { cout<<"Sayi giriniz: "; cin >> sayi; top = top + sayi; i = i + 1; } cout << "\nWHILE ile toplam: " << top << endl; getch(); }
Örnek: 5 adet sayı girilene veya sayıların toplamı bir limiti aşana kadar (Limit 50 olsun) sayı alarak toplamlarını bulan program. Not: if kullanılmayacak!
#include main() { const int LIMIT = 50; int Sayac = 0; int Toplam = 0;
while ((Sayac<5) && (Toplam<LIMIT)) { cout << “Bir sayi girin: “; int Sayi; cin >> Sayi; Sayac++; Toplam += Sayi; }
cout << Sayac << “ adet sayinin toplami: “ << Toplam; getch(); }
SORULAR 1. Sıfır veya pozitif bir tamsayı girildiği sürece girilen sayıların toplamlarını hesaplayan programı while döngüsü kullanarak yazınız. (Bu program negatif bir sayı girildiğinde sona erecek anlamına gelmektedir.)
2. n tamsayısı girildiğinde, n! değerini do- while döngüsü kullanarak hesaplayan programı yazınız. 3. Girilen bir sayının tersini (1/x) hesaplayan programı yazınız. NOT: 0’ın tersi hesaplanamayacağından 0’dan farklı bir sayı girilmesini while döngüsü ile sağlayınız.
4. Arka arkaya girilen sayıların toplamını bulan programı yazınız. NOT: Sayı dışında bir giriş olduğunda program sona erecektir. 5. 1’den 10’a kadar olan tamsayıları ekrana yazdıran programı yazınız.