arkaplan

C Programlama Dili Switch Case Yapısı

Switch Case yapıları daha önce ki dersimizde anlattığımız if-else yapılarının bazı durumlarda öylesine karmaşık hale geldiklerinde, if-else yapılarını daha temiz ve verimli şekilde ifade etmemizi yarayan yapılardır. Özellikle de programa ait bir menü yapmamız gereken durumlarda da Switch Case yapısı oldukça verimlidir.

Switch Case yapısının temeli şu şekildedir; öncelikle bir tane değişken belirlenir, daha sonra da bu değişkenin değerine göre sonsuz sayıda farklı koşul gerçekleştirilebilir. Temel olarak Switch Case yapısı aşağıda ki gibidir;

REKLAM

switch (degisken){
 case durum1:
  işlemler
  break;
 case durum2:
  işlemler
  break;
 .
 .
 .
 case durumN;
  işlemler
  break;
 default:
  işlemler
}

Bu kodun yapısını biraz detaylandırmak gerekirse, öncelikle kullanıcıdan “degisken” adında ki bir değişkene değer ataması istenilir, daha sonra da bu değişkenin değerinin caseler içerisinde ki “durum1”, “durum2”, …, “durumN” değerlerine eşit olup olmadığı kontrol edilir. Eğer değişkenin değeri bu caselerden birisine eşitse o zaman bu case altında ki işlemler yapılır. İşlemlerden sonra da break; komutu kullanılarak, programın Switch Case yapısından çıkması sağlanır. Eğer değişken değeri hiçbir case ile uyuşmuyor ise o zaman da default: değeri altında istenilen uyarılar yapılabilir.

Konuyu daha iyi anlayabilmeniz için Switch Case yapısını kullanarak bir basit bir hesap makinesi yapmaya çalışalım.

/**
 Switch Case İle Basit Hesap Makinesi Örneği
 www.temelprogramlama.com
**/
#include <stdio.h>
int main(){
 int x,y,tercih;
 printf("___ MENU ___\n");
 printf("[1] Toplama\n");
 printf("[2] Cikarma\n");
 printf("[3] Carpma\n");
 printf("[4] Bolme\n");
 printf("Tercih Ettiginiz Islem Numarasi: ");
 scanf("%d",&tercih);
 switch (tercih){
  case 1:
   printf("Islem Yapilacak Sayilari Giriniz: ");
   scanf("%d %d",&x,&y);
   printf("Sonuc: %d",x+y);
   break;
  case 2:
   printf("Islem Yapilacak Sayilari Giriniz: ");
   scanf("%d %d",&x,&y);
   printf("Sonuc: %d",x-y);
   break;
  case 3:
   printf("Islem Yapilacak Sayilari Giriniz: ");
   scanf("%d %d",&x,&y);
   printf("Sonuc: %d",x*y);
   break;
  case 4:
   printf("Islem Yapilacak Sayilari Giriniz: ");
   scanf("%d %d",&x,&y);
   printf("Sonuc: %d",x/y);
   break;
  default:
   printf("Gecerli Bir Numara Girmediniz!");
 }
        return 0;
}

Kodu analiz edecek olursak sırasıyla aşağıda ki olaylar gerçekleşir;

  • Öncelikle kullanıcıdan karşısına çıkan menüde ki 1, 2, 3, 4 işlem numaralarından birini girmesi istenilir.
  • Daha sonra “tercih” değişkenine kayıt edilen bu değerin, herhangi bir case değeri ile aynı olup olmadığı kontrol edilir.
  • Eğer “tercih” değişkenin değeri herhangi bir case değeri ile aynıysa o case değerinin içerisinde ki işlemler yapılır.
  • Eğer “tercih” değişkenin değeri herhangi bir case değeri ile aynı değilse default içerisinde ki işlemler gerçekleştirilir.

Şimdi de eğer bu örneği uzun yoldan yani if-else kullanarak yapmak isteseydik nasıl yapardık ona bakalım;

/**
 If-Else Yapısı İle Basit Hesap Makinesi Örneği
 www.temelprogramlama.com
**/
#include <stdio.h>
int main(){
 int x,y,tercih;
 printf("___ MENU ___\n");
 printf("[1] Toplama\n");
 printf("[2] Cikarma\n");
 printf("[3] Carpma\n");
 printf("[4] Bolme\n");
 printf("Tercih Ettiginiz Islem Numarasi: ");
 scanf("%d",&tercih);
 if (tercih==1){
  printf("Islem Yapilacak Sayilari Giriniz: ");
  scanf("%d %d",&x,&y);
  printf("Sonuc: %d",x+y);
 } else if (tercih==2){
  printf("Islem Yapilacak Sayilari Giriniz: ");
  scanf("%d %d",&x,&y);
  printf("Sonuc: %d",x-y);
 } else if (tercih==3){
  printf("Islem Yapilacak Sayilari Giriniz: ");
  scanf("%d %d",&x,&y);
  printf("Sonuc: %d",x*y);
 } else if (tercih==4){
  printf("Islem Yapilacak Sayilari Giriniz: ");
  scanf("%d %d",&x,&y);
  printf("Sonuc: %d",x/y);
 } else {
  printf("Gecerli Bir Numara Girmediniz!");
 }
 return 0;
}

Baktığınız zaman iki kodda aynı satır sayısında gibi gözükebilir ama Switch Case yapısının sağladığı verimlilik çok yüksektir, şöyle ki “tercih” değişkenin değerini girdikten sonra Switch Case yapısında o değere ait case altında ki işlemleri yapıyor veya o değere ait case yoksa default altında ki işlemleri yapıp, eğer işlem yapıldıysa kendinden sonra ki diğer caselerin içine girmeden yapıdan çıkıyordu ama if-else yapısı kullandığımız zaman işlemimizi yaptırsak bile tek tek tüm if kontrollerini kontrol etmesi gerekiyor ve bize oldukça büyük bir işlem yükü getiriyor. Switch Case kullanarak yapılacak kontrol sayılarını yani işlem yükün hafifleterek programımızın daha verimli çalışmasını sağlayabiliyoruz.

Eğer konu hakkında daha fazla örnek incelemek isterseniz, sitemizde ki C programlama dili örnek çözümleri sayfasına göz atmanızı tavsiye ederiz, önümüzde ki derste döngüler konusuna giriş yapacağız.