3. HAFTA
3. Hafta
1
Döngüler
 1.Sayıcı




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


3. Hafta
kontrollü döngü
belirsiz döngü adedi
döngü şartını sağlayan değişken değişimi
2
Döngüler- while
while (döngü şartı)
{
döngü gövdesi işlemleri;
}
Döngü şartı
Doğru
İşlemler
Yanlış
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;
while(sayac<=10)
{
toplam+=sayac;
cout<<toplam<<“\t”;
sayac++;
}
system("pause");
0;
3. return
Hafta
//sayac, döngü kontrol değişkeni
//döngü adedi belirli
//döngü kontrol değişkeni artımı
3
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
4
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ıç; koşul; artım/azaltım
}




İşlemler
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
3. Hafta
5
Döngüler- özel for
Sonsuz Döngüler:
for(;;) { }
for(;1;){ }
for(;-9;){ }
// Sıfırdan farklı bir sayı
// 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
6
Döngüler- for
Ö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
7
Döngüler- do-while
do
{
İşlemler
döngü gövdesi işlemleri;
} while (döngü şartı);
Döngü şartı
Doğru
Yanlış
Ö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
do
{
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
8
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.
program akışını döngü sonrası
komuta,
 continue ise döngü başına getirir.
 break döngünün sonlanmasını sağlar
 break
3. Hafta
9
break-continue örneği
#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;
}
3. Hafta
Döngü şartı
Doğru
İşlemler
Yanlış
Continue
var mı?
Var
Yok
Break
var mı?
Yok
Var
10
İç-içe Döngüler
 Tüm
döngüler iç-içe yapılandırılabilir
Döngü şartı
Yanlış
Kullanım Alanları
 Çok boyutlu dizilerde
 Seri hesaplamalarında
 İlişkili döngülerde
3. Hafta
Doğru
Döngü şartı
Döngü şartı
İşlemler
11
İç-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
12
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)
Etiket : ile tanımlanır
goto Basla
…………
…………
3. Hafta
13
Çalışma Soruları-2.1

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?
#include <stdio.h>
void main()
{
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
14
Çalışma Soruları-2.2





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
15
Download

include