Ko�ul Deyimleri   if-then-else        switch

D�ng� Deyimleri    while        for        do-while   

Programlar �� temel blok kullan�larak ger�ekle�tirilebilirler. Bu temeller; ardarda, bir ko�ula ba�l� olarak ve sonlu say�da yinelemedir.

Ko�ul Deyimleri

Birka� se�enekten birini se�mek veya bir deyimin bir ko�ula ba�l� olarak i�lemek i�in kulan�l�r.

1. if-then-else Deyimi

if (<mant�ksal ifade>)

blok_do�ru;

else

blok_yanl��;

Mant�ksal ifade do�ru ise blok_do�ru, yanl�� ise else s�zc���nden sonraki blok_yanl�� y�r�t�l�r. else k�sm� se�imlidir, gerekmiyorsa kullan�lmayabilir.

�rnek :Girilen say�n�n tek/�ift oldu�unu yazan program

#include <stdio.h>

main()

{

int i;

scanf("%d", &i);

if ( i % 2 == 1)

printf("Tek");

else

printf("�ift");

}

Bile�ik (Compound) Deyimler

{ ve } karakterleri ile s�n�rland�r�lm�� bir dizi deyimden olu�ur.

{

i = 5;

j = i/2;

k = i+1;

}

E�er bloklarda birden fazla deyim kullanmak gerekirse bile�ik deyim kullan�l�r.

if (yil % 4 == 0)

{

subat =29;

gunyil = 366;

}

else

{

subat =28;

gunyil = 365;

}

�rnek: Girilen �� say�dan en k�����n�n bulunmas� (��i�e IF kullan�m�).

I. yol : II. yol :

scanf("%d%d%d", &s1, &s2, &s3); scanf("%d%d%d", &s1, &s2, &s3);

if ((s1<s2) && (s1<s3)) ek = s1;

ek =s1; if (ek>s2)

else ek =s2;

if (s2<s3) if (ek>s3)

ek =s2; ek =s3;

else printf('En k���k olan� = %f", ek);

ek = s3;

printf('En k���k olan� = %f", ek);

2. switch Deyimi

switch(<se�ici>) {

case se�enek1 : Deyim;

case se�enek2 : Deyim;

.......

default : Deyim;

}

Se�icinin ald��� de�ere e�it se�ene�in olup olmad���na bakar. Var ise o noktadan sonraki deyimler y�r�t�l�r. switch deyiminin sonuna gelindi�inde veya break deyimi ile kar��la��ld���nda y�r�tme i�lemi durur ve program�n ak��� switch deyimini izleyen deyim ile devam eder.

switch(i) {

case 1 : printf("Bir"); i=1 ise ��k�� Bir �ki Hi�biri

case 2 : printf("�ki"); i=2 ise ��k�� �ki Hi�biri

default : printf("Hi�biri");

}

��k�� ta sorun vard�r. Sorunu ortadan kald�rma i�in her durum i�in break deyimi eklenmeli. Se�ici Ordinal tiplerden biri olmal�d�r (Ordinal tip:t�m de�erleri listelenebilen veri tipleri)

�rnek : Mevsimleri yaz.

scanf("%d", &ay);

switch (ay) {

case 3:

case 4:

case 5: printf("ilkbahar"); break;

case 6:

case 7:

case 8: printf("yaz"); break;

case 9:

case 10:

case 11: printf("sonbahar"); break;

case 12:

case 1:

case 2: printf("k��"); break;

}

switch deyimi yerine if deyimi kullan�labilir. Ancak switch deyimi program� daha okunabilir k�ld��� i�in gerekli oldu�u durumlarda kullan�lmal�d�r.

D�ng� Deyimleri (Yineli)

Bir ya da birden fazla deyimin tekrar edilmesini sa�larlar. C dilinde while, for ve do-while deyimleri d�ng� fonksiyonunu sa�lar. Tekrar edilen deyimlere d�ng� g�vdesi denir.

1. while Deyimi

while <mant�ksal ifade>

Deyim

Mant�ksal ifade do�ru oldu�u s�rece Deyim y�r�t�l�r. E�er yanl�� ise kontrol bir sonraki deyime ge�er.

�rnek : 1'den 100'e kadar olan say�lar�n toplam�.

 

 

 

i =1---

j = 0---

i < 101 oldu�u s�rece---

j = j + i---

i = i + 1---

 

Toplam j � yi yaz---

main()

{

int i, j;

i =1;

j = 0;

while (i<101) {

j =j+i;

i =i+1

}

printf("Toplam = %d",j);

}

 2. For Deyimi

for (ifade1 ; ifade2 ; ifade3 )

ifade;

ifade2 do�ru ( veya farkl� 0) oldu�u s�rece ifade y�r�t�l�r (biti� ko�ulu).

D�ng�n�n ilk ad�m�ndan �nce ifade1 y�r�t�l�r ( ba�lang�� ad�m�).

D�ng�n�n her ad�m�nda ifade3 y�r�t�l�r (art�� miktar�).

for (i = 1; i < 5; i++)

printf("%d ",i);

�rnek: �arp�m tablosu. (i�i i�e d�ng�ler)

main()

{

int i,j;

for (i=1; i<=10; i++) {

for (j =1; j<=10; j++)

printf("%4.0d",i*j);

printf("\n");

}

}

3. do-while Deyimi

Bir ko�ul do�ru olana kadar d�ng� y�r�t�l�r.

do

Deyim

while (<mant�ksal ifade>)

Mant�ksal ifade do�ru oldu�u s�rece d�ng� tekrar edilir. Yanl�� oldu�unda while s�zc���nden sonraki deyim y�r�t�l�r.

�rnek: 5 say�s� girilene kadar oku

do

scanf("%d",&i);

while (i!=5);

Kar��la�t�rma

while : Ko�ul ba�lang��ta test ediliyor. D�ng� s�f�r veya daha fazla y�r�t�l�yor.

do-while : Ko�ul sonda test ediliyor. D�ng�ye en az bir defa kesin giriliyor.

�rnek: 0 - 100 aras�nda tutulan say�n�n tahmini.

main()

{

int tahmin; /* tahminimiz */

int min; /* Tahminin alt siniri */

int max; /* Tahminin ust siniri */

char cevap; /* Kullanicinin cevabi */

min = 0; max = 100;

do {

tahmin = (max - min) / 2 + min;

printf("Tahminim %d\n",tahmin);

printf("B�y�k / K���k / E�it ");

scanf("%c",&cevap);

if (cevap == 'B')

max = tahmin - 1;

else

if (cevap == 'K')

min = tahmin + 1;

}

while (cevap != 'E');

}