3. HAFTA 3. Hafta
Döngüler 1.Sayıcı kontrollü döngü 2.Belirsiz kontrollü döngü döngü değişkeni döngü değişkeni başlangıç değeri döngü değişkeni artması veya azalması döngü değişkenin son değerinin test edilmesi 2.Belirsiz kontrollü döngü belirsiz döngü adedi döngü şartını sağlayan değişken değişimi 3. Hafta
Döngüler- while while (döngü şartı) { döngü gövdesi işlemleri; } Döngü şartı sıfırdan farklı olduğu sürece döngü işletilir. Örnek: 1’den 10’a kadar olan tamsayıları toplayan program. #include <iostream> using namespace std; main(){ int sayac=1,toplam=0; //sayac, döngü kontrol değişkeni while(sayac<=10) //döngü adedi belirli toplam+=sayac; cout<<toplam<<“\t”; sayac++; //döngü kontrol değişkeni artımı system("pause"); return 0; İşlemler Döngü şartı Yanlış Doğru 3. Hafta
Döngüler- özel while Sonsuz Döngüler: while(1) { } while(10) { } while(-10) { } //Kullanım yeri? Girilmez Döngü: while(0) { } //Kullanma yeri? Değişkene bağlı Döngü: while(a) { } //Fazla serbest? Tehlikeli Form: while(a=3) //Tehlike ne? 3. Hafta
Başlangıç; koşul; artım/azaltım Döngüler- for for (başlangıç atamaları; döngü şart ifadesi; döngü sonu işlemleri) { döngü gövdesi işlemleri; } Başlangıç atamaları döngü başında sadece bir kez çalışır. Döngü şart ifadesi, başlangıç atamalarından sonra kontrol edilir Döngü sonu işlemleri her çevrimden sonra işletilir Döngü şart ifadesi her döngü sonu işleminden sonra kontrol edilir. Döngü şartı sıfırdan (YANLIŞ) farklı olduğu sürece döngü işletilir İşlemler Başlangıç; koşul; artım/azaltım 3. Hafta
Döngüler- özel for Sonsuz Döngüler: for(;;) { } for(;1;){ } // Sıfırdan farklı bir sayı for(;-9;){ } // 9’un ve 1’in bir özelliği yok Girilmez Döngü: for(;0;) { } Değişkene bağlı Döngü: for(;a;) { } Tehlikeli Form: for(;a=3;) 3. Hafta
Döngüler- for system("pause"); Örnek: 1’den 10’a kadar olan tamsayıları toplayan program. #include <iostream> using namespace std; main(){ for(int sayac=1,toplam=0;sayac<=10;sayac++) { toplam+=sayac; cout<<toplam<<“\t”; } system("pause"); return 0; 3. Hafta
Döngüler- do-while do { döngü gövdesi işlemleri; Döngü şartı Yanlış Doğru do { döngü gövdesi işlemleri; } while (döngü şartı); Örnek: 1’den 10’a kadar olan tamsayıları toplayan program. #include <iostream> using namespace std; main(){ int sayac=0,toplam=0; //sayac, döngü kontrol değişkeni toplam+=sayac; cout<<toplam<<“\t”; sayac++; //döngü kontrol değişkeni artımı } while(sayac<=10); // döngü şartı kontrolü system(“pause”); return 0; } 3. Hafta
break- continue Belirli bir şartta veya sonsuz döngülerin terk edilmesinde break, Belirli bir şartta döngü başına dönülmek istenmesinde continue kullanılır. break program akışını döngü sonrası komuta, continue ise döngü başına getirir. break döngünün sonlanmasını sağlar 3. Hafta
break-continue örneği İşlemler Döngü şartı Yanlış Doğru #include <iostream> using namespace std; main(){ for(int x=1;x<=10;x++){ if(x<5) continue; if(x==9) break; cout<<x; } system(“pause”); return 0; Continue var mı? Break Var Yok 3. Hafta
İç-içe Döngüler Tüm döngüler iç-içe yapılandırılabilir Kullanım Alanları Çok boyutlu dizilerde Seri hesaplamalarında İlişkili döngülerde İşlemler Döngü şartı Yanlış Doğru 3. Hafta
İç-içe Döngüler-2 #include <iostream> Using namespace std; main(){ int disDongu, icDongu, k, maks; cout<<"Maksimum değeri giriniz:“;cin>>maks; cout<<“Asal Sayılar\n”; for(disDongu=2; disDongu<=maks; disDongu++){ k=1; for(icDongu=2; icDongu<=disDongu/2;icDongu++) if(!(disDongu%icDongu)) k=0; if(k) cout<<“ “<<disDongu; } System(“pause”); return 0; 3. Hafta
Goto Deyimi ve Etiket Bir programın akışını herhangi bir koşula bağlı olmaksızın değiştirir. Program denetimi bir noktadan başka bir noktaya geçer ve oradan devam eder. goto deyimi çalışması için etikete (label) ihtiyaç vardır. C dilinde tanımlı olmasına rağmen programcılar tarafından kullanımı tercih edilmez. Basla: if (koşul) goto Basla ………… Etiket : ile tanımlanır 3. Hafta
Çalışma Soruları-2.1 3. Hafta Soru-2.1 Maksimum sınırı verilen tamsayılardan tam bölenlerinin toplamı kendi değerlerine eşit olanları veren programı tasarlayınız. Örneğin 6 sayısı 1,2,3’e tam bölünür ve toplamları 6’dır. 8 ise 1,2,4 sayılarına tam bölünür ancak bölenlerin toplamı 7’dir. Soru-2.2: Aşağıdaki programın çıktısı ne olur? #include <stdio.h> void main() { int i,j; char a='g', b='h'; for(scanf("%c%c",&a,&b),i=2; i>a-b; i--) printf("%c",'4'+i); for(j=i+4; j>i; j-=2) while(j%3-2>i) printf("j=%d i=%d \n",j,i++); } Soru-2.3 Aşağıdaki programın çıktısı ne olur? int i; for (i=0; i<15; i++) if (i%2) printf("%d",i%3+i/3); else if (i%3 || i++/4) printf("%d\n",i+=1.5); 3. Hafta
Çalışma Soruları-2.2 3. Hafta Soru-2.4: Aşağıdaki for döngüsünü do-while ve while döngüsünü de for ile tekrar yazınız. #include <stdio.h> void main() { int i, j, k; for(scanf("%d %d",&i,&j); i<j; i++) k = i - (j--); while (k>0) k--; } Soru-2.5: Girilen tamsayılardan 30 ile 50 arasındaki (sınırlar dahil) tamsayıların ortalamasını veren programı C++ dilinde yazınız. Programdan çıkış için negatif bir değerin girilmesi yeterlidir. Soru-2.6: Klavyeden girilen karakterlerin içerisinden rakamları alan ve tüm rakamların toplamını veren programı yazınız. Rakamlar ardışık olduğunda (456 gibi) 4+5+6 olarak toplama dahil etmelidir. Girişi nokta karakteri sonlandırmalıdır. Soru-2.7: getch() fonksiyonu kullanarak girilen karakterleri, sıkıştırılmış formda görmek istiyorsunuz. Örneğin girişiniz aaaabbbcddddee ise, ekrana a4b3cd4e2 olarak verilecektir. Küçük harften farklı girilen her karakter girdinin sonlandığını bildirecektir. Soru-2.8: ! karakterinin bildirmesiyle sonlanan klavye girdisinde en çok tekrar eden ardışık harfi ve sayısını veren programı tasarlayınız. 3. Hafta