Programlar (algoritmalar) üç temel blok kullanılarak gerçekleştirilebilirler. Bunlar; ardarda, bir koşula bağlı olarak ve sonlu sayıda yineleme (döngü) dir.
3.1Koşul Deyimleri:
Birkaç seçenekten birini seçmek veya bir deyimin bir koşula bağlı olarak işlemek için kulanılır.
3.1.1if-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 3.1. 1.1Girilen 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 bloklardabirden fazla deyim kullanmak gerektiğinde bileşik deyim kullanılır.
if (yil % 4 == 0){
subat =29;
gunyil = 366;
}
else{
subat =28;
gunyil = 365;
}
Örnek 3.1.1.2 : İkinci dereceden denklemin köklerinin bulunması.
if (delta<0)
printf("Gerçel kök yoktur.n");
else
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("Birinci kök = %fn" , x1);
printf("ikinci kök= %fn" , x2);
}
Örnek 3. 1.1.3 : Klavyeden girilen karakterin rakam olduğunun tesbiti.
char c;
c = getch();
if ((c>='0') && (c<='9')
printf("Rakam girdiniz.");
Örnek 3. 1.1.4 : Girilen üç sayıdan en küçüğünün bulunması (İçiçe IF kullanımı).
I.yol :scanf("%d%d%d", &s1, &s2, &s3);
if ((s1<s2) && (s1<s3))
ek =s1;
else
if (s2<s3)
ek =s2;
else
ek = s3;
printf('En küçük olanı = %f", ek);
II. yol :
scanf("%d%d%d", &s1, &s2, &s3);
ek = s1;
if (ek>s2)
ek =s2;
if (ek>s3)
ek =s3;
printf('En küçük olanı = %f", ek);
Örnek 3. 1.1.5:Fonksiyonun girilen t değeri için aldığı değeri hesaplayıp yazan program.
main()
{
float y, x;
printf(“x değerini giriniz”);
scanf(“%f”, &x);
if (x > -1&& x<2)
y = 2/3 * (x + 1);
else
if (x>2 && x<=3)
y = 2;
else
y = 0;
printf(“Fonksiyonun değeri = &f”, y);
}
Örnek 3. 1.1.6: Vergi iadesini hesaplan programı yazınız. (elseifyapısı)
(0-60 bin : %10, 60-120 bin : %,120-200 bin : %12,>200 bin : %5)
main()
{
float fat_top, vergi_iade;
printf("Fatura toplamlarını giriniz ");
scanf("%f", &fat_top);
if (fat_top < 60000)
vergi_iade = fat_top * 0.10;
else if (fat_top < 120000)
vergi_iade = 6000 + (fat_top - 60000) * 0.20;
else if(fat_top < 200000)
vergi_iade = 18000 + (fat_top - 120000) * 0.12;
else
vergi_iade = 27600 + (fat_top - 200000) * 0.05;
printf("Ödenecek vergi iadesi = %fn", vergi_iade);
}
Örnek 3. 1.1.7: Girilen tarihteki günün adını veren programı yazınız.
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");
case 2 : printf("İki");
default : printf("Hiçbiri");
}
i=1 ise çıkışBirİkiHiçbiri
i=2 ise çıkışİkiHiçbiri
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 listelenebilinenveri tipleri - integer, char).
. Seçici ile seçenekler aynı tipte olmalıdır.
. default kısmı seçimliktir. Seçeneklerin hiçbiri uygun değil ise yürütülür.
#include <stdio.h>
main()
{
char islem;
int s1, s2, s3;
printf("Önce işlemi sonra sayıları girin ");
scanf("%c%d%d",&islem, &s1, &s2);
switch (islem) {
case '+' : s3 = s1 + s2; break;
case '-' : s3 = s1 - s2; break;
case '*' : s3 = s1 * s2; break;
case '/' : s3 = s1 / s2; break;
default : printf ("Hatalı işlem");
}
printf("nSonuç = %d",s3);
}
Örnek 3.1.2.1: 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.
Örnek 3.1.2.2 : 16'lık sistemdeki rakamın 10'luk sistemdeki karşılığı (char tipinin sayı gibi davranışı).
switch(c) {
case '0':
case '1':
. . .
case '9': i = c - '0'; break;
case 'a':
case 'A': i = 10; break;
. . .
case 'f':
case 'F': i = 15; break;
}
Örnek 3.1.2.3: Sınav notunu harfe dönüştüren programı yazınız.