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 DeyimleriBirka� se�enekten birini se�mek veya bir deyimin bir ko�ula ba�l� olarak i�lemek i�in kulan�l�r.
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);
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.
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); } |
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");
}
}
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 okudo
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');
}