You are on page 1of 40

Karar Yapıları

Koşullu Yapılar
Program akış denetim deyimleri

if –else yapıları


switch-case yapıları

1
if –else yapıları
Programın akış kontrolü yapmak ve bir işlemin
gerçekleşip gerçekleşmeyeceğini belirlemek için
kullanılır.
1. Kullanım şekli
if (koşul)
if (koşul) { koşul
E
işlemler

{ işlem_1;
H
işlem_2;
işlemler;
……… sonraki işlemler
} işlem_N;
//sonraki işlemler }
//sonraki işlemler
2
if –else yapıları -Örnek-1
……….
if(not<65)
Not< E Basarisiz {
65
printf(“Basarisiz”);
}
H
……….
Öğrencinin notu 65’den küçükse, “başarısız” mesajı ekrana
yazılmaktadır.

65’den daha büyük ya da 65’e eşit not için ise program akışı “}” sonraki
komutlara geçmektedir.

3
if –else yapıları-Örnek-2
……….
if(sayi<0)
Sayi
{
E
< sayi = sayi *(-1); sayi = sayi *(-1);
0
}
H ……….
Eğer sayi 0’dan küçükse yani negatifse, “sayi” nın yeni değeri, eski değerin
-1 ile çarpılması ile hesaplanmaktadır. Yani, Negatif sayılar, pozitif
değerlerine çevrilmektedir.
Pozitif sayılarda ise bir değişiklik yapılmamaktadır.
Bu kod parçasının yaptığı işlem mutlak değerdir.

4
if –else yapıları
Gerçek hayatta genelde bir koşulun sağlanması durumunda ayrı,
sağlanmaması durumunda ayrı işlemler gerçekleştirilir.

C programlarında bu tip durumları, kodlayabilmek için if-else yapısı kullanılır.

5
if –else yapıları
2. Kullanım şekli: if – else
if (koşul)
{
işlem_1;
işlem_2;
işlem_3;
………
işlem_N;
}
else
{
işlem_N+1;
işlem_N+2;
………
işlem_M;
}
6
if –else yapıları-Örnek-3
………. Öğrencinin notu 50’den
if(not<50) düşükse, “başarısız”
{ mesajı yazdırılmaktadır.
printf(“Basarisiz”);
} Aynı şekilde 50’ye eşit ya
else da 50’den büyük notlar için
{ “başarılı” mesajı
printf(“Basarili”); yazdırılmaktadır.
}
……….

7
if –else yapıları-Örnek-4
………. • Bir sayının tek ya da çift
if(sayi%2 = = 0) olması durumu :
{
printf(“Sayi çift!\n”); • Burada sayının 2’ye göre
} modu alınarak tek mi çift
mi olduğuna karar
else verilmekte ve buna göre
{ uyarı yazılmaktadır.
printf(“Sayi tek!\n”);
}
……….

8
if –else yapıları
3. Kullanım şekli: if – else if
Bu if yapısında 2 adet(2 den fazla durumlar için de
geçerlidir) koşulun doğruluğu araştırılmaktadır.
Buna göre en az 3 adet durum söz konusu olur :
1. ilk koşulun sağlanması,
2. ilk koşulun sağlanmayıp – ikinci koşulun
sağlanması,
3. ilk koşulun sağlanmayıp – ikinci koşulun da
sağlanmaması,

9
if –else if yapıları
if (koşul1)
{ • Bu yapıda koşul1 sağlandığında
işlem1;
işlem1 gerçekleşir,
…..
} • koşul1 sağlanmadığında yeni bir
else if(koşul2) koşul olan koşul2 kontrol edilir,
{ koşul2 sağlanıyorsa işlem2
işlem2; gerçekleşir.

• Koşul1 ve koşul2 her ikisi de
}
sağlanmıyorsa işlem3
else
{
gerçekleşir.
işlem3; • Bütün durumların sonunda
} program akışı diğer işlemlere
//diğer işlemler geçer.
10
if –else if yapıları

11
if –else if yapıları-Örnek-5

12
if –else if yapıları-Örnek-5-devam
• Öğrencinin notu 1. şartı sağlıyorsa yani 90’dan büyük
ya da 90’a eşitse harf_not A olur.

• Öğrencinin notu 1.şartı sağlamıyorsa bu durum, notun


90’dan küçük olduğunu ifade etmektedir. Dolayısıyla 2.
şarta geçilir. Öğrencinin notu 2. şartı sağlıyorsa yani
70’ten büyük ya da 70’e eşitse, harf _not B olur.

• Öğrencinin notu 2.şartı sağlamıyorsa bu durum, notun


70’ten de küçük olduğunu ifade etmektedir. Dolayısıyla
3. şarta geçilir. Öğrencinin notu 3. şartı sağlıyorsa yani
60’tan büyükse ya da 70’a eşitse, harf _not C olur.

13
if –else yapıları-Örnek-5-devam
• Öğrencinin notu 3.şartı sağlamıyorsa bu durum, notun 60’tan da
küçük olduğunu ifade etmektedir. Dolayısıyla 4. şarta geçilir.
Öğrencinin notu 4. şartı sağlıyorsa yani 50’den büyükse ya da 50’ye
eşitse, harf _not D olur.

• Öğrencinin notu 4.şartı sağlamıyorsa bu durum, notun 50’den de


küçük olduğunu ifade etmektedir. Dolayısıyla 5. şarta geçilir.
Öğrencinin notu 5. şartı sağlıyorsa yani 40’tan büyükse ya da 40’a
eşitse, harf _not E olur.

14
if –else if yapıları
• if yapısında kullanılan koşullar, sade-basit
bir koşul olabileceği gibi, koşulların
birleşmesinden oluşan bileşik bir koşul da
olabilir.

• Bileşik koşullar; basit koşulların mantıksal


bağlaçlarla birleştirilmesiyle oluşturulur.

15
if –else if yapıları
1.Değil (Not-Olumsuz) mantıksal işlemi
kullanılarak(!):
Bir koşulun değili, kontrol edilmek
isteniyorsa koşulun başına ! işareti
konulur.
if(!(koşul))
şeklinde yazılır.

16
if –else if yapıları-Örnek-6
if(!(sayi>=0))
{
cout<<sayi<<“ negatiftir”;
sayi=sayi*(-1);
}

17
if –else if yapıları
2.Ve (And) mantıksal işlemi kullanılarak :
Aynı anda hepsinin birden çalışması
gereken koşul kombinasyonları “ve”
mantıksal bağlacı &&kullanılarak
birleştirilir.

18
if –else if yapıları-Örnek7
Örneğin bir öğrencinin dersi geçebilmesi için
hem final notunun 50 veya daha üstü olması
hem de yıl içi ortalamasının 40 veya daha
yukarıda olması gibi.
if(final>=50&&ortalama>=40)
{

işlemler;
}

19
if –else if yapıları
3. Veya (Or) mantıksal işlemi kullanılarak
• Yalnızca bir tanesinin doğru olmasının, tüm
sonucun doğru olması için yeterli olduğu birleşik
koşullar için kullanılır.
• Bu işlem koşullar arasına || konarak gerçekleştirilir.
Örneğin öğrenci örneğinin ve ile değil veya ile
birbirine bağlı olduğunu düşünelim.
• Yani öğrencinin dersi geçebilmesi için final
notunun >=50, yıl içi ortalamasının>= 40 olması
seçeneklerinden bir tanesi yeterli olsun.

20
if –else if yapıları
3. Veya (Or) mantıksal işlemi kullanılarak
• Yalnızca bir tanesinin doğru olmasının,
tüm sonucun doğru olması için yeterli
olduğu birleşik koşullar için kullanılır.
• Bu işlem koşullar arasına || konarak
gerçekleştirilir.

21
if –else if yapıları
• Örnek-7’nin “ve” ile değil “veya” ile birbirine bağlı
olduğunu düşünelim.
• Yani öğrencinin dersi geçebilmesi için final
notunun>= 50 veya yıl içi ortalamasının>= 50,
olması seçeneklerinden bir tanesi yeterli olsun.
if(final>=50||ortalama>=50)
{

işlemler;
}

22
Kontrol Yapılarında (Koşullu Yapılar)Kullanılan
Mantıksal Operatör ve Bağlaçlar
Mantıksal Bağlaçlar
Mantıksal Operatörler
Operatör Anlamı Bağlaç Anlamı
< Küçük && Ve
> Büyük || Veya
== Eşit ! Değil
!= Eşit Değil
<= Küçük veya Eşit
>= Büyük veya Eşit

23
PROGRAMLAMA PROBLEMLERİ

UYGULAMA ÖRNEKLERİ

24
UYGULAMA-1
AŞAĞIDA VERİLEN AKIŞ ŞEMASININ C DİLİ İLE
KODLANMASI.

25
#include<stdio.h>
#include<conio.h>
main(){ U
int sayi1,sayi2;
printf("iki sayi giriniz"); Y
scanf("%d %d",&sayi1,&sayi2); G
if(sayi1>sayi2)
{ U
printf("%d \n",sayi1); L
} A
else {
printf("%d \n“, sayi2);
M
} A
printf("Devam icin bir tusa basiniz...");
getch(); -
return 0; 1
}

26
/*2. Sürüm-Version 2*/
#include<stdio.h>
#include<conio.h>
U
main(){
int sayi1,sayi2;
Y
printf("iki sayi giriniz");
scanf("%d %d",&sayi1,&sayi2);
G
if(sayi1>sayi2)
{
U
printf("%d > %d\n",sayi1,sayi2);
}
L
else if(sayi1<sayi2) {
printf("%d < %d\n",sayi1,sayi2);
A
}
else {
M
}
printf("%d = %d\n",sayi1,sayi2); A
printf("Devam icin bir tusa basiniz...");
getch();
-
return 0; 1
}
27
UYGULAMA-2
AŞAĞIDA VERİLEN AKIŞ ŞEMASININ C DİLİ İLE KODLANMASI.

28
#include<iostream> U
#include<conio.h> Y
using namespace std; G
main(){ U
int sayi; L
cout<<"sayi giriniz"; cin>>sayi; A
if(sayi%2==0) M
{ cout<<sayi <<" Cift sayidir..."<<endl; } A
else { cout<<sayi <<" Tek sayidir..."<<endl; } -
cout<<"Devam icin bir tusa basiniz..."; 2
getch();
return 0;}

29
UYGULAMA-4
Girişten okutulan herhangi bir yaşa göre kişinin
bebek, çocuk, genç, orta yaşlı veya yaşlı olup
olmadığını bir mesajla ekrana yazan C programı.
0<=yas<2 ise “bebek”
2<=yas<14 ise “çocuk”
14<=yas<26 ise “genç”
26<=yas<50 ise “orta yaşlı”
50<=yas<100 ise “yaşlı”
Diğer durumlarda ise “kişi yaşamıyor”

30
1. #include<stdio.h>
2. #include<conio.h>
22. else if(26<=yas&&yas<50)
3. main(){
23. {
4. int yas;
24. printf("%d yasindaki kisi ORTA YASLI
5. printf("yaş giriniz");
tir\n",yas);
6. scanf("%d",&yas);
25.
7. if(0<=yas&&yas<2)
26. }
8. {
27. else if(50<=yas&&yas<100)
9. printf("%d yasindaki kisi BEBEK
28. {
tir\n",yas);
29. printf("%d yasindaki kisi YASLI
10.
tir\n",yas);
11. }
30.
12. else if(2<=yas&&yas<14)
31. }
13. {
32. else {
14. printf("%d yasindaki kisi COCUK
33. printf("%d yasindaki kisi
tur\n",yas);
YASAMIYOR...\n",yas);
15.
34. }
16. }
35. printf("Devam icin bir tusa
17. else if(14<=yas&&yas<26)
basiniz...");
18. {
36. getch();
19. printf("%d yasindaki kisi GENC
37. return 0;
tir\n",yas);
38.
20.
39. } 31
21. }
1. #include<stdio.h>
2. #include<conio.h> 31. printf("%s",mesaj);
3. /*2. sürüm-version 2*/
4. main(){ 32. printf("Devam icin bir tusa basiniz...");
5. int yas; 33. getch();
6. char *mesaj; 34. return 0;
7. printf("yas giriniz");
8. scanf("%d",&yas); 35. }
9. if(0<=yas&&yas<2)
10. {
11. mesaj="BEBEK tir\n";
12. }
13. else if(2<=yas&&yas<14)
14. {
15. mesaj=" COCUK tur\n";
16. }
17. else if(14<=yas&&yas<26)
18. {
19. mesaj=" GENC tir\n";
20. }
21. else if(26<=yas&&yas<50)
22. {
23. mesaj=" ORTA YASLI tir\n";
24. }
25. else if(50<=yas&&yas<100)
26. {
27. mesaj=" YASLI tir\n";
28. }
29. else {
30. mesaj=" kisi YASAMIYOR...\n";
31. } 32
UYGULAMA-5
Deprem enstitüsünden alınan Righter ölçüsü
deprem büyüklüğüne göre deprem
karakteristiğini ekrana yazan program.
Righter ölçüsü (r) Karakteristiği
r<5 Ufak veya hasarsız
5.0<=r<5.5 Az hasarlı
5.5<=r<6.5 Ciddi Hasar
6.5<=r<7.5 Felaket
Daha yüksek Facia

33
1. #include<iostream>
21. else if(6.5<=r&&r<7.5)
2. #include<conio.h>
22. {
3. using namespace std;
23. karakteristik=" Felaket\n";
4. main(){
24. }
5. float r; 25. else if(r>=7.5)
6. char *karakteristik; 26. {
7. cout<<"Deprem righter ölçüsünü 27. karakteristik=" Facia\n";
giriniz"; 28. }
8. cin>>r; 29. else {
9. if(0<=r&&r<5.0) 30. karakteristik=" Gecersiz Girdi\n";
10. { 31. }
11. karakteristik="Ufak veya Hasarsız\n"; 32. cout<<karakteristik;
12. } 33. printf("Devam icin bir tusa
13. else if(5.0<=r&&r<5.5) basiniz...");
14. { 34. getch();
15. karakteristik=" Az Hasarlı\n"; 35. return 0;
16. } 36. }
17. else if(5.5<=r&&r<6.5)
18. {
19. karakteristik=" Ciddi Hasar\n";
20. }
34
switch-case Yapısı
switch-case Yapısı; if else if else yapısının yerine
kullanılabilecek bir kontrol yapısıdır.
Programın okunurluğunu ve anlaşılırlığını
artırdığı için kodlamada if else if yerine tercih
edilebilir.
Genel yapısı aşağıdaki gibidir :

35
switch-case KodlamaYapısı
switch (koşul_degiskeni)
{ case 1 :
işlemler1; break;
case 2 :
işlemler2; break;
case 3 :
işlemler3; break;
…..
case n :
işlemler_n; break;
default :
işlemler_n+1; }

36
switch-case –UYGULAMA-6
• Girilen iki sayiyi, kullanıcının tercih ettiği +,-,*,/
işlemlerinden birini yaparak sonucu ekrana
aşağıdaki gibi yazan program.
Çıktı:
3+2=5 veya 4*5=20 gibi

37
1. #include<stdio.h>
2. #include<conio.h>
3. main(){
4. double sayi1,sayi2,sonuc;
5. char islem;
6. printf("islem yapacağiniz sayilari giriniz");
7. scanf("%lf %lf",&sayi1,&sayi2);
8. printf("Hangi islemi yapacaksiniz...?\n");
21.
9. printf("toplama icin + \n");
10. printf("cikarma icin - \n"); 22. }
11. printf("carpma icin * \n"); 23. printf("\n%lf %c
12. printf("bölme icin / \n"); %lf=%lf\n",sayi1,islem,sayi2,sonuc);
13. islem=getch(); 24. bitir: printf("\n Devam icin bir tusa
14. switch(islem){ basiniz...");
15. 25. getch();
16. case '+':{sonuc=sayi1+sayi2;break;} 26. return 0;
17. case '-':{sonuc=sayi1-sayi2;break;}
27. }
18. case '*':{sonuc=sayi1*sayi2;break;}
19. case '/':{sonuc=sayi1/sayi2;break;}
20. default: {printf("gecersiz islem\n");goto
bitir;}

38
switch-case –UYGULAMA-7
• Girişten okutulan 1-12 arasındaki sayının hangi
ay ve hangi mevsim olduğunu ekrana yazdıran
program.
• Çıktı örneği:
3 kodlu ay Mart, mevsim İlkBahar dır.

39
24. switch(aykod){
1. #include<iostream> 25. case 1:
2. #include<conio.h>
26. case 2:
3. using namespace std;
4. main(){ 27. case 12:{mevsim="\tKIS mevsimi";break;}
5. int aykod; 28. case 3:
6. char *ayisim,*mevsim; 29. case 4:
7. cout<<"\n Ay kodunu Giriniz(1-12)"; 30. case 5:{mevsim="\tILKBAHAR
8. cin>>aykod; mevsimi";break;}
9. switch(aykod){ 31. case 6:
10. case 1:{ayisim="Ocak";break;}
32. case 7:
11. case 2:{ayisim="Subat";break;}
12. case 3:{ayisim="Mart";break;} 33. case 8:{mevsim="\tYAZ mevsimi";break;}
13. case 4:{ayisim="Nisan";break;} 34. case 9:
14. case 5:{ayisim="Mayıs";break;} 35. case 10:
15. case 6:{ayisim="Haziran";break;} 36. case 11:{mevsim="\tSONBAHAR
16. case mevsimi";break;}
7:{ayisim="Temmuz";break;}
17. case
37. }
8:{ayisim="Agustos";break;} 38. cout<<aykod<<" kodlu
18. case 9:{ayisim="Eylul";break;} ay:"<<ayisim<<mevsim<<" dir";
19. case 39. bitir: cout<<"\n Devam icin bir tusa
10:{ayisim="Ekim";break;}
20. case
basiniz...";
11:{ayisim="Kasım";break;} 40. getch();
21. case 41. return 0;
12:{ayisim="Aralik";break;} 42. }
22. default: {printf("gecersiz
kod\n");goto bitir;}
23. } 40

You might also like