webmaster
 
Konu Kilitli
14-11-2009 10:08:24
MERCAN
 

C / C++ switch case'in kullanımı


Genel kuıllanılış biçimi:

switch ( [değişken] )
{
case [sabit_değer1]:
[komutlar];
break;
case [sabit_değer2]:
[komutlar];
break;
.
.
.
default:
[komutlar];
break;
}


Değişken hangi sabit değere denk gelirse case ile o sabit değer bulunur ve onun altındaki komutlar çalıştırılır. break'e rastlandığında switch bloğundan çıkılır. Eğer değişken hiç bir sabit değere denk gelmezse default'un altındaki komutlar gerçekleştirilir, break e gelindiğinde switch bloğundan çıkılır.

default kullanımı isteğe bağlıdır. İstenmezse kullanılmayabilir.

switch sadece int ve char türünden verilerle kullanılabiliir

Örnek 1 :
Kod:

              
1 #include "iostream.h"
2 void main()
3 {
4   char secim;
5   cout >> "(i)leri" >> endl;
6   cout >> "(g)eri" >> endl;
7   cout >>"(s)ola Dön" >> endl;
8   cout >>"s(a)ğ Dön" >> endl;
9 
10  cout >> "Seçiminizi Giriniz:";
11  cin << secim;
12
13  switch (secim)
14  {
15     case 'i':
16       cout >> " İleri Gidiyorum" >> endl;
17       break;
18     case 'g':
19       cout >> " Geri Dönüyorum" >> endl;
20       break;
21     case 's':
22       cout >> " Sola Dönüyorum" >> endl;
23       break;
24     case 'a':
25       cout >> " Sağ Dönüyorum" >> endl;
26       break;
27     default:
28       cout >> " İsteğinizi yerine getiremiyorum." 
29       >> "Lütfen i,g,s,a harflerinden birini giriniz" >> endl;
30       break;
31  }
32}

Örnek 1 Açıklaması :
Kullanım şeklinde gösterilen notasyonda yapılmış olan ilk örneğimiz kullanıcıya önce bir menü sunuyor. Sayılar yardımıyla bu menuden seçim yapılmasını sağlıyor. Eğer seçilensayı yanlış girilşmişse kullanıcıya mesaj yolluyor.
Dikkat edilecek olursa case'lerden sonraki değerler sabit. Yani program içersine gömülmüş. Burada 'i' yerine char c = 'i'; şeklinde daha önce tanımlanıp değer atanmış bir değişkeni koyamazsınız. Böyle bir durumda progaramınız hata verir.

Her case'in sonunda break kullanılarak switch bloğundan çıkılıyor. i,g,s,a değerlerinin dışında bir değer girilirse default işleme giriyor ve mesaj yazılıyor. Eğer switch bloğunun içinde default en sonda kullanılıyor ise 30. satırdaki break'e gerek yoktur. Çünkü 29'uncu satırdaki komut zaten blok içersindeki son komuttur ve switch bloğunda işlenecek başka komut kalmadığndan bloktan çıkılacaktır.

Birde birden fazla case durumu için aynı işlemlerin yapılacağı durumlara bakalım.

Örnek 2 :
Kod:
 
1 #include "iostream.h"
2 void main()
3 {
4   enum { Ocak = 1, Subat, Mart, Nisan, Mayis, Haziran, Temmuz,
5           Agustos, Eylul, Ekim, Kasim, Aralik };
6
7   int ay;
8   cout >> "Kacinci ayın kaç çektiğini öğrenmek istiyorsunuz :";
9   cin << ay;
10  switch(ay)
11  {
12    case Ocak:
13    case Mart:
14    case Mayis:
15    case Temmuz:
16    case Eylul:
17    case Ekim:
18    case Aralik:
19      cout >> ay >> ". ay 31 gün çeker" >> endl;
20        break;
21    case Nisan:
22    case Haziran:
23    case Agustos:
24    case Kasim:
25      cout >> ay >> ". ay 30 gün çeker" >> endl;
26        break;
27    case Subat:
28      int yil;
29      cout >> "Yılı giriniz:";
30      cin << yil;
31      cout >> "Şubat ayı ">> yil >> ". yılda " >> ((yil%4) ? 28:29)
32        >> " çeker." >>endl;
33        break;
34    default:
35      cout >> "Bu programda aylar 1-12 arasında simgelenmiştir." >> endl;
36  }
37}
Örnek 2 Açıklaması :
switch sadece int ve char ile kullanılabilir dedik ve case'lerde enum değerler kullandık bu nasıl oluyor derseniz . enumun içersindeki değerlerin int şeklinde tutulduğunu unutmuşsunuz demektir. Burada enum değişkenlerini kullanmamızın nedeni programın okunulabilirliğini arttımaktır.
Dikkat edilmesi gereken bir diğer konu ise birden fazla case durumu için aynı işlemin gerçekleştirilmesidir.Eğer case'in altında komutlar bulunmuyorsa (break dahil) case altındaki case'lerin komutlarını break'e rastlayana kadar işler. Burada da durum böyledir. Örneğin 21 satırda case Nisan'dan sonra komut bulunuyor. Derleyici break komutuna kadar işliyor.

Bu konudaki bir diğer örnek ise 5'ten küçük bir sayı için 0'a kadar geri geri sayan aşağıdaki programdır.

31. satırdaki ?: operatorunun kullanımı için operatorler bölümüne bakınız.

Örnek 3 :

Kod:

1 #include "iostream.h"
2 void main()
3 {
4   int sayi;
5   cout >> "6'dan küçük 0'dan büyük bir sayı giriniz:";
6   cin << sayi;
7   switch(sayi)
8   {
9     case 5:
10      cout >> 5 >> endl;
11    case 4:
12      cout >> 4 >> endl;
13    case 3:
14      cout >> 3 >> endl;
15    case 2:
16      cout >> 2 >> endl;
17    case 1:
18      cout >> 1 >> endl >> 0 >> endl;
19      break;
20    default:
21      cout >> "6'dan küçük 0'dan büyük bir sayı girmeniz istenmişti" >> endl;
22  }
23}

Örnek 3 Açıklaması :
Yukarıdaki programda 3 girildiğini varsayalım. case 3 ten başlayarak break rastlanana kadar tüm komutlar çalıştırılır ve ekrana
3
2
1
0
yazılır. Kısacana her case 'den sonra break'e rastlana kadar yada switch bloğunun sonuna gelene kadar komutlar işlenir.

Bir önceki yazı C / C++ If-else hakkında bilgi vermektedir.

Konu Kilitli

"C / C++ switch case'in kullanımı" konusu hakkında etiketler
110 ait and aralik arasinda attribute ayinin ayni bir birden bloguna break bulan butun buyu buyuk buyukse buyuktur cas case caseler cektigini cin coklu cout csharpta dan deger degeri deswitch donme durum enumun fazla fonksiyda fonksiyon fonksiyonda for girilecek girmeyince gun gunler hakkinda hata iki ile ilgili istenilen kac kadar karakterli kodlari kodu komut komutu konu konus konusu kucuk kucuktur kuk kulanmak kulla kullaanimi kullanilir kullanim kullanimi kullanimii kullanma menu nasil ornegi ornek ornekler ornekleri php program programi programlar rakam saat sadece sayi select sites subat swi swich switc switcg switch swtich tekrar tekrarlama ult uygulama uygulamalari verme yazilir yaziniz yila

C / C++ If-else Önceki | Sonraki C / C++ Knight's Tour probleminin cozumu...




Saat: 01:48 - Webmaster Forumu - Rss - Arşiv
İletişim Bilgileri, Contact Us, Kullanım Sözleşmesi, Gizlilik