Switch Case deyimi işlev bakımından if deyimine
çok benzemektedir. Çok sayıda if işlem blokları kullandığımızda
programın okunurluğu azalacak ve programı izlemek zorlaşacaktır.
Programımızın bir değerini bir çok değerle karşılaştırmak
gerektiğinde switch komutunu kullanacağız. Switch seçeneği ile
değişkenin durumuna göre bir çok durum içersinden bir tanesi
gerçekleştirilir. İstersek de if deyimi ile switch case' yi
birlikte kullanabiliriz. Switch in yaptığı iş kısaca, ifadenin
değerini sırayla sabitlerle karşılaştırarak ve her satırı
işlemektir.
switch( Kontrol Değişkeni )
{
case Sabit1 : komut1;
case Sabit2 : komut2;
.
.
.
default : Komutson;
}
Buna en basit örneğimizi verelim
//switch.cpp
// switch-case yi öğreniyoruz.
#include <iostream.h>
main()
{
int i;
cout<< " 1 ile 4 arası sir sayı giriniz:";
cin>>i;
switch(i)
{
case 1 :cout<<"1 Girdiniz"; break;
case 2 :cout<<"2 Girdiniz"; break;
case 3 :cout<<"3 Girdiniz"; break;
case 4 :cout<<"4 Girdiniz"; break;
default:cout<<"1 ile 4 ten farklı";
}
}
Burada gördüğümüz gibi i değişkenine bağlı
olarak program işliyor. Case'lerinin aldığı değere göre kendinden
sonra gelen komutları işliyorlar. Burada daha önce görmediğimiz
break komutunu gördük. Buna ilerde daha detaylı olarak
değineceğim. Fakat biraz bahsetmek istiyorum. Programımızda
değişkene 1 değerini verdiğimizi farz edelim. Case 1 adlı satırı
geçip ondan sonraki komut dizisini işleme soktuk. Bu işlemin
tamamlanması için break komutu kullanılıyor. Yazılımda break
komutu goto gibi işlev görür ve derleyiciye switch komutundan
çıkması için talimat verir. Sorunu ortadan kaldırmak için her
durum için break deyimi eklemeliyiz (tavsiye). Ne demiştik; bir
çok karşılaştırma olduğunda switch'e ihtiyaç duyuyoruz.
Karşılaştırmaların hiç biri olmadığı anda da ortaya default tan
sonraki satırın işlenmesi kalıyor. Sanırım bu örnekte basit olarak
anlamış olacağız.
Daha karmaşık bir örnek verecek olursak:
//ucgen.cpp
// Program gireceğimiz ölçülere göre üçgenin Alan, Yükseklik ve Tabanını bulur
// switch-case örneğimiz.
#include <iostream.h>
int main()
{
char secenek;
float alan, yukseklik, taban;
cout << "Program gireceğimiz ölçülere göre üçgen'in Alan,
Yükseklik ve Tabanını bulur!\n" << endl
<< " A ---> Alan : Bulmak için yükseklik ve tabanı gireceğiz:" << endl
<< " h ---> Yükseklik : Bulmak için alan ve tabanı gireceğiz:" << endl
<< " t ---> Taban : Bulmak için alan ve yüksekliği gireceğiz:" << endl
<< endl << endl;
cout<< "Seçeneğiniz? ---> A, h, t :";
cin>> secenek;
switch(secenek)
{
case 'a':
case 'A':
{
cout<< endl <<endl <<"Yükseklik: ";
cin>> yukseklik;
cout<<endl << "Taban: ";
cin >> taban;
alan = 0.5 * taban * yukseklik;
cout<<endl << endl << "Alanı: " << alan << endl;
break;
}
case 'h':
case 'H':
{
cout<< endl << endl <<"Alanı: ";
cin>> alan;
cout<<endl << "Tanabı: ";
cin >> taban;
yukseklik = 2.0 * alan / taban;
cout << endl << endl << "Yükselik: " << yukseklik << endl;
break;
}
case 't':
case 'T':
{
cout << endl <<endl <<"Alanı: ";
cin >> alan;
cout << endl << "Yüksekliği: ";
cin >> yukseklik;
taban = 2.0 * yukseklik / alan;
cout << endl << endl <<"Tabanı: " << taban << endl;
break;
}
}
return 0;
}
Gayet basit bir örnek değişkenleri
tanımladık. Caseleri koyduk ve caselerden sonra gelecek komut
satırlarını yerleştirdik. Bu program göründüğü gibi zor değildir.
|