BİLİŞİM - BİLGİSAYAR - EĞİTİM
  Koşul Deyimleri
 

3.    Döngü ve Koşul Deyimleri

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.1  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.

 

3.1.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 3.1. 1.1  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 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. (elseif  yapı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.

 

#include <studio.h>

main ( )

{

   int gun, ay, yıl ;

  long gt ;

  printf(“Tarihi gir”) ; scanf ( “%d %d %d “,&gun)

/* oncekı yıllardakı gun sayısını hesapla */

  gt=( yıl*1)*365 + yıl/4;

/* bu yildaki aylardaki gunleri ekle */

if (ay==2)

gt = gt + 31 ;

else if (ay ==3)

                gt = gt + 31 + 28 ;

else if (ay ==4)

                gt = gt + 31 + 28 +31;

else if (ay ==5)

                gt = gt + 31 + 28 +31+ 30 ;

else if (ay ==6)

                gt = gt + 31 + 28 +31+ 30 +31;

else if (ay ==7)

                gt = gt + 31 + 28 +31+ 30 +31+ 30 ;

else if (ay ==8)

                gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31 ;

else if (ay ==9)

                gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 ;

else if (ay ==10)

                gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31;

 else if (ay ==11)

                gt = gt  + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31+ 30 ;

else if (ay ==12)

                gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31+ 30 +31;

 

/*Bu ayı ekle */

gt = gt+ gun;

if(yıl%4==0 && ay>2),

                gt =gt+1;

gt=gt %7,

if(gt==1)

printf(“Pazar”);

else if(gt==2)

printf(“Pazartesi”);

else if(gt==3)

printf(“Salı”);

else if(gt==4)

printf(“Carsamba”);

else if(gt==5)

printf(“Persembe”);

else if(gt==6)

printf(“Cuma”);

else if(gt==7)

printf(“Cumartesi”);

}

 

3.1.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");

   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 listelenebilinen                                               veri 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.

 

( >=90 :AA, 85-89:BA, 80-84:BB, 75-79:CB, 70-74:CC, 60-69:D, <60 :F )

 

Örnek 3.1.2.4: Belirtilen tarihin hangi güne denk geldiğini bulan programı yazınız.

 

else if yapısı yerine switch kullanarak

 
 
  Bugün 25 ziyaretçi (28 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol