İçindekiler

C Programlama switch - case Yapısı
switch - case Yapısı : Bu yapı bir değişkenin içeriğine bakarak, programın akışını bir çok seçenekten birine yönlendirir. case (durum) yapısından sonra değişkenin durumu belirlenir ve sonraki gelen satırlar işleme girer. Aksi söz konu olduğunda gerçekleştirilmesi istenen deyimler default deyiminden sonraki kısımda bildirilir. Kısaca yapının temel amacı  değişkenin değerine göre programın çalışmasına yön vermektir. Aynı işlem if else yapısı ilede uygulanabilsede daha kolay okunması nedeniyle programcılar tarafından tercih edilmektedir.
 
switch - case yazım biçimi  ve akış diyagramı :
switch( degisken ) {
 case sabit1:
  komut(lar)
  [break]
 case sabit2:
  komut(lar)
  [break]
 .
 .
 .
 case sabitN:
  komut(lar)
  [break]
 default:
  komut(lar);
} 
C Programlama switch - case Yapısı
Örnek  sitch - case kullanımı 1 :
#include <stdio.h>

int main(int argc, const char * argv []) {
int s1 =0;
printf("Lutfen bir sayi giriniz:");
scanf("%d" , &s1);

switch (s1){
case 1:
    printf("Girilen sayi degeri: 1n");
    break;
case 2:
    printf("Girilen sayi degeri: 2n");
    break;
default:
    printf("Girilen sayi degeri gecersiz n");
    break;
        }
return 0;
}
 
Örnekte girilen integer deger sayının 1 veya 2'ye eşit olup olmadığının kontrolü yapılmaktadır. Programa 1 veya 2 dışında bir deger girildiğinde ekran "Girilen sayi degeri gecersiz" ifadesi yazdırılmaktadır.
 
Örnek  sitch - case kullanımı 2 :
#include <stdio.h>

int main(void)
{
     char karakter;

     printf("Lutfen bir karakter giriniz:n");

     karakter = getchar(); 
     switch (karakter)
     {
       case 'a':
          printf("a karakterini girdinizn");
          break;
       case 'b':
          printf("b karakterini girdinizn");
          break;
       default:
          printf("a veya b karakterlerinden birisini girmedinizn");
          break;
     }

return 0;
}
 
Default Anahtar Kelimesi : Kelime anlamı olarak varsayılan demektir. Eğer, switch satırındaki değişken değeri case satırlarında yer alan sabit değerlerin herhangi biri ile aynı değeri taşımıyorsa, program default satırında yer alan işlem satırı veya satırlarını çalıştırır. default satırının tanımlanması tamamen isteğe bağlıdır. Yani, bu satır tanımlanmasa bile switch kalıbı normal olarak çalışır.
 
Break Anahtar Kelimesi : switch - case yapısında bir koşulda break anahtar kelimesi kullanılmaz ise  koşuldan sonra gelen koşul otomatik olarak çalışır. Break anahtar kelimesi tanımlanmasıda aynen default gibi isteğe bağlıdır.

Örnek : 
#include <stdio.h>

int main(void)
{
     char fenerbahce, besiktas, galatasaray;

     printf("Lutfen bir karakter (b,f,g) giriniz:n");

     fenerbahce, besiktas, galatasaray  = getchar();
     switch (fenerbahce, besiktas, galatasaray)
     {
       case 'f':
          printf("fenerbahcen");
          break;
       case 'b':
          printf("besiktasn");
          break;
       case 'g':
          printf("galatasarayn");
          break;
       default:
          printf("b,f,g karakterlerinden birisini girmedinizn");
          break;
     }

return 0;
}

C Programlama SWITCH CASE Örnek

 
C Programlama switch - case Yapısı
Dışardan girilen bir sayi için;f:faktöriyel hesabı yapan,
i:girilen sayı kadar isim yazan
t:girilen sayıya kadar kaç tane tek var
y:girilen sayıya kadar kaç tane cift var

İşlemlerini yapan yapan programı switch case ile yazınız.
Program sonunda; Devam etmek istiyormusun(E/H) sorusuyla başa dönmelidir.
Faktöriyel döngüsü do while; isim yazdırma döngüsü while ile yazılmalıdır.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
    gidilecekYer: ;
    system("cls");       
    int s;
    int f=1;
 int u=1;
 int x,m;
 char z;

    printf ("Islem Yapilacak Sayiyi Giriniz: ");
    scanf("%d",&s);
 printf("nn(f) Faktoriyel Hesapla"); 
 printf("n(i) Girilen Sayi Kadar Isim Yaz");
 printf("n(t) Sayiya kadar kac adet tek sayi var");
 printf("n(y) Sayiya kadar kac adet cift sayi varnn"); 
 
 scanf("%s",&z);
    
      switch (z) {
  case 'f':
   do
   {
   f=f*s;
   s--;
   }
   while (s!=1); //sayi 1 e esit degilse dönecek. do calisacak.
   printf ("Faktoriyel Sonuc: %d",f);
   break;
    case 1:
   printf ("1e");
   break;
        case 'i':
   m=1;
   while (m<s+1)
   {
   printf ("BAYRAKTARn");
   m++;
   }
   break;
      
        case 't':
   for(m=0;m<s+1;m++)
   {
    if(m%2==1)
    {
   printf("tek sayi: %d",m);
    }
   }
   break;
   
  case 'y':
   x=1;
   for(m=0;m<s+1;m++)
   {
    if(m%2==0)
    {
   printf(x+".cift sayi: %d",+m);
   x++;
    }
   }
   break;   
   
            default: printf("Hatali Deger Girdin"); break;
} 
   
   char x2; 
   printf("nnDevam Etmek istiyor musunuz ? (e/h)n");
   scanf("%s",&x2); 
   
 
   if(x2=='e')
   {
               goto gidilecekYer;
} 
}