switch case Deyimi

 

       Programcılıkta yaygın olarak kullanılan koşul ifadelerinden biri de switch-case deyimleridir.

       Sadece bir değişkenin durumuna bağlı olarak, o değişkenin aldığı değere göre tek tek if-else blokları yazmak yerine switch-case deyimi kullanılması tercih edilmektedir. Switch-case deyimiyle yapabildiklerimi aynı şekilde if-else kullanarak da yapabiliriz fakat, uzun kod satırları yerine düzenli switch-case blokları kod okunabilirliği için de önemlidir.

       Switch-case deyiminin yapısı aşağıdaki gibidir.

switch(ifade) 
{
  case kontrol1: işlemler1; break;
  case kontrol2: işlemler2; break;
  default : işlemler3; break;
}

 

 Switch-case kullandığımızda da dikkat etmemiz gereken birtakım kurallar vardır.

  • Kontrol alanındaki değerler sabit olmak zorundadır. Herhangi bir değişkeni burada tanımlayamayız. Belirlediğimiz sabit değerler sayı, karakter, metin olabilir.
  • default ve case ifadelerini istediğimiz sırada yazabiliriz. Dikkat etmemiz gereken önemli konu aynı case kontrolünü birden fazla yazamayız.
  • default ifadesi eğer yazdığımız case’lerden hiçbiri verdiğimiz ifade ile eşleşmez ise çalışmaktadır. Eğer ifade yazdığımız case’lerden biriyle eşleşirse default ifadesi çalışmaz.
  • default kontrolünü yazmak zorunda değiliz. Eğer default ifadesi yer almıyorsa hiçbir işlem yapmadan uygulamamız switch bloğundan çıkmaktadır.

 

       Şimdi bir örnek yapalım. Kullanıcıdan tuttuğu takımın kısaltmasını isteyelim. Kullanıcı da tuttuğu takımın kısaltmasını girip sonucu görsün. Bu örnekte şimdiye kadar anlatılanlara ek olarak iki farklı komut da kullanacağız.

       -Bunlardan ilki Console.ReadLine() komutu. Bu komut ile kullanıcıdan console ekranında bir giriş yapılması beklenilmektedir. Kullanıcı giriş yapıp enter tuşuna bastığında girdiği veri string olarak alınmaktadır. Bu sebeple kullanıcının girdiği veriyi doğrudan string değişkenine aktarabildik.

       -Bir diğer komut ise ToLower() fonksiyonudur. Bu fonksiyon verilen string değerinin içeriğini tamamen küçük karakterlerden oluşan hale getirir.

       Yazdığımız senaryoda eğer kullanıcı “GS” girseydi, bizim case ifademizde “gs” yer aldığı için eşleşme yapılamayacaktı. Bu gibi durumları önlemek için kullanıcı değeri girdikten sonra girdiği karakterlerin büyük harf içermesi ihtimaline karşı tamamen küçük harflere dönüştürüyoruz.

       Şimdi ilk olarak kullanıcıdan takımın kısaltmasını alalım.

 

string takimKodu = "";
Console.Write("Takım kısaltması: ");
takimKodu = Console.ReadLine();

 

       Artık kullanıcının girdiği kısaltmayı string değişkenimize aldık, fakat yukarıda bahsettiğimiz duruma karşı da önlem almamız gerekmekte. Bunun için de takim kodumuzu her ihtimale karşı küçük harflere dönüştürüyoruz.

string takimKodu = "";
Console.Write("Takım kısaltması: ");
takimKodu = Console.ReadLine();
takimKodu = takimKodu.ToLower();

       Takım kodunu da switch ile kontrol etmeye hazır hale getirdik. Şimdi switch-case deyimimizle kontrolümüzü sağlayabiliriz.

static void Main(string[] args)
        {
            string takimKodu = "";

            Console.Write("Takım kısaltması: ");
            takimKodu = Console.ReadLine();
            takimKodu = takimKodu.ToLower();
           
            switch (takimKodu)
            {
                case "gs":
                    Console.WriteLine("Galatasaray");
                    break;

                case "fb":
                    Console.WriteLine("Fenerbahçe");
                    break;

                case "bjk":
                    Console.WriteLine("Beşiktaş");
                    break;

                case "ts":
                    Console.WriteLine("Trabzonspor");
                    break;

                case "bur":
                    Console.WriteLine("Bursaspor");
                    break;
                default:
                    Console.WriteLine("Takım bulunamadı!");
                    break;
            }
        }

Uygulamamız çalışıyor artık. Şimdi biraz da kodumuzu okunur hale getirelim.

       Yukarıda 3 satır harcadığımız değişken tanımlaması, veri alınması ve verinin ufaltılması işlemlerini tek satıra indirip kodumuzu daha okunur ve düzenli bir hale getirebiliriz. Diğer takımlar içinde case'ler ekleyip takım havuzunu arttırabilirsiniz.

 static void Main(string[] args)
        {
            Console.Write("Tuttuğunuz takımın kısaltması: ");
            string takimKodu = Console.ReadLine().ToLower();

            switch (takimKodu)
            {
                case "gs":
                    Console.WriteLine("Galatasaray");
                    break;

                case "fb":
                    Console.WriteLine("Fenerbahçe");
                    break;

                case "bjk":
                    Console.WriteLine("Beşiktaş");
                    break;

                case "ts":
                    Console.WriteLine("Trabzonspor");
                    break;

                case "bur":
                    Console.WriteLine("Bursaspor");
                    break;
                default:
                    Console.WriteLine("Takım bulunamadı!");
                    break;
            }
        }



 

Add comment