Buradasınız

23- C# (C Sharp) Switch Case Yapısı

c# dersleri

Switch Deyimi

if koşul yapısı ile büyük,küçük ve eşitli durumlarına göre işlemler yapılabiliyordu. Bazı durumlarda sadece eşitliğine bakılmak istenebilir, bu durumlarda swicth-case yapısı kullanılabilir. Swicth-Case yapısı dir değişkenin sadece eşitliğine göre işlem yaptıran şart yapısıdır. Aşağıdaki gibi kullanılır.

switch(değişken)
{
case eşitlik1:
     İşlemler
          break;
case eşitlik2:
     İşlemler
          break;
case eşitlik3:
     İşlemler
          break;
default:
     İşlemler
          break;
}

 

1) switch içine değişken yazılır.

2) case ifadelerinde ise değişkenin eşitliğine göre işlem yapılmasını sağlar. case ifadelerinde sayısal normal yazılır, string " "(çift tırnak) içinde, char ' '(tek tırnak) içinde

3) Her case’den sonra break yazmak zorunludur.case bölümünün bitiğini belirtir.

4) default ifadesi ise değerin case şartlarından hiçbirine uymadığında yapılmasını sağlar.

Bu ifadeyi if yapısında yazacak olursak.

if(değer==eşitlik1)
{
    İşlemler
}
else if(değer==eşitlik2)
{
    İşlemler
}
else if(değer==eşitlik3)
{
    İşlemler
}
else
{
    İşlemler
}

 

Örnek: Klavyeden Beşlik sistemde Ders Notu girilecek girilen nota göre Zayıf,Geçer,Orta ,İyi, Pekiyi olarak ekrana yazdıran programı switch-case ile yapınız.

int not;
Console.WriteLine("Dersinizin Beşlik sistemde değerini Giriniz 1-5");
not = int.Parse(Console.ReadLine());
switch (not)
{
    case 1:
        Console.WriteLine("Zayıf");
        break;
    case 2:
        Console.WriteLine("Geçer");
        break;
    case 3:
        Console.WriteLine("Orta");
        break;
    case 4:
        Console.WriteLine("İyi");
        break;
    case 5:
        Console.WriteLine("Pekiyi");
        break;
    default:
        Console.WriteLine("Doğru Not Girmediniz");
        break;
}
Console.ReadKey();
 

Örnek: Klavyeden iki sayı girilecek. Sayılar girildikten sonra ekrana aşağıdaki gibi Liste yazdırılacak.

İşlem Seçiniz
+: Toplama
-: Çıkarma
*: Çarpma
/: Bölme

Seçilen işleme göre(işlemi char olarak alınız) matematiksel işlemin sonucu yazdırılacak. Soruyu switch-case ile yapınız.

int s1, s2;
char secim;
Console.WriteLine("1. Sayıyı Giriniz");
s1 = int.Parse(Console.ReadLine());
Console.WriteLine("2. Sayıyı Giriniz");
s2 = int.Parse(Console.ReadLine());

Console.WriteLine("İşlem Seçiniz \n+: Toplama \n-: Çıkarma \n*: Çarpma \n/: Bölme");
secim = char.Parse(Console.ReadLine());

switch (secim)
{
    case '+':
        Console.WriteLine("Toplam: {0}", s1 + s2);
        break;
    case '-':
        Console.WriteLine("Fark: {0}", s1 - s2);
        break;
    case '*':
        Console.WriteLine("Çarpım: {0}", s1 * s2);
        break;
    case '/':
        Console.WriteLine("Bölüm: {0}", s1 / s2);
        break;
    default:
        Console.WriteLine("Doğru işlem seçmediniz");
        break;
}
Console.ReadKey();

Birden fazla değerde aynı işlem yapılacaksa ,örneğin e ve E harfinde aynı işlemler yapılsın. bu durumda case ifadesi şu şekilde olabilir.

switch(islem)
{
   //Birden fazla eşitlikte aynı işlemi yaptırma
   case 'E':
   case 'e':
            //İşlemler
   break;
   
   default:
            //İşlemler
   break;
}

goto deyimi: Kod bloğu içinde belirli bir yerden istenen bölgeye gitmek için kullanılana ifadedir. Kod bloğunun herhangi bir yerine yönlendirme işlemi yapılabilir. Gitmek istenilen yere bir etiket(label) oluşturulur ve nezaman gidilecek ise goto ifadesi ile etikete yönlendirilir.

Etiket(label) nasıl oluşturulur?
Etiket değişken isimlerindeki kurallara uyulmalıdır. etiket ismi yazılıp sonuna :(iki nokta üstüste) koyulduğunda etiket oluşturulmuş olur.Aşağıdaki gibi

basa:

bu etikete yönlendirilirken ise aşağıdaki gibi yönlendirilir bir işlem sonucunda basa gitmesi istenebilir.

goto basa;

Örnek; Yukarıdaki matematiksel işlemimizde hesaplamadan sonra tekrar işlem yapmak istiyormusunuz sorularak evet ise tekrar başa gidilsin ve işlem tekrarlansın.

islembasi: //etiket
Console.Clear();//Ekranı temizle
int a, b;
char islem,devammi;

Console.Write("Birinci sayıyı girin: ");
a = int.Parse(Console.ReadLine());
Console.Write("İkinci sayıyı girin: ");
b = int.Parse(Console.ReadLine());

Console.WriteLine("İşlem Seçiniz:");
Console.WriteLine("+:Toplama");
Console.WriteLine("-:Çıkarma");
Console.WriteLine("*:Çarpma");
Console.WriteLine("/:Bölme");
// Console.WriteLine("İşlem Seçiniz:\n+:Toplama\n-:Çıkarma\n*:Çarpma\n/:Bölme");
islem = char.Parse(Console.ReadLine());
switch(islem)
{
case '+':   Console.WriteLine("Toplamları {0}", a + b);                  break;
case '-':   Console.WriteLine("Farkları {0}", a - b);                    break;
case '*':   Console.WriteLine("Çarpımları {0}", a * b);                  break;
case '/':   Console.WriteLine("Bölümleri {0}", a / b);                   break;
default:    Console.WriteLine("Doğru işlem seçmediniz");                 break;
}

Console.Write("Devam Etmek İstiyormusunuz?:(e,E/h,H)");
devammi = char.Parse(Console.ReadLine());

if (devammi == 'e' || devammi == 'E')
goto islembasi; //etikete yönlendirme
else
Console.Write("İşlem Bitti");
Console.ReadKey();

Örnek: Aşağıda verilenler gibi Kare ve dikdörtgenin alanını ve çevresini hesaplayan bir program yapalım.

//İşlem yapılacak Şekli seçin
//1.Kare(K,k)
//2.Dikdörtgen(D,d)
//İşlem seç: 
                 //1.Seçilirse(kare)
                             //Kenar Uzunluğu girin
                             //1.Alan (a,A)
                             //2.Çevre(c,C,ç,Ç)
                             //İşlem seç:
                  //2.Seçilirse
                             //A uzunluğunu gir
                             //B uzunluğunu gir
                             //1.Alan (a,A) 
                            //2.Çevre(c,C,ç,Ç)
                           //İşlem seç:

//Her işlemden sonra yeniden denemek için sor

basagit:
char islem;
int A, B;
int Alan, Cevre;

Console.WriteLine("İşlem yapılacak Şekli seçiniz: ");
Console.WriteLine("1.Kare(k,K)");
Console.WriteLine("2.Dikdörtgen(d,D)");
Console.Write("İşlem Seç: ");
islem = char.Parse(Console.ReadLine());

switch(islem)
{
    case 'k':
        //kare seçilirse
        Console.Write("Kenar uzunluğunu gir:");
        A = int.Parse(Console.ReadLine());
        Console.WriteLine("1.Alan(a,A)");
        Console.WriteLine("2.Çevre(c,C,ç,Ç)");
        Console.Write("İşlem Seç: ");
        islem = char.Parse(Console.ReadLine());
        switch(islem)
        {
            case 'a':
                Console.WriteLine("Alanı {0}", A * A);
                break;
            case 'c':
                Console.WriteLine("Çevresi {0}", 4*A);
                break;
        }
        break;

    case 'd':
        //dikdörtgen seçilirse
                    
        Console.Write("A kenar uzunluğunu gir:");
        A = int.Parse(Console.ReadLine());
        Console.Write("B kenar uzunluğunu gir:");
        B = int.Parse(Console.ReadLine());

        Console.WriteLine("1.Alan(a,A)");
        Console.WriteLine("2.Çevre(c,C,ç,Ç)");
        Console.Write("İşlem Seç: ");
        islem = char.Parse(Console.ReadLine());
        switch (islem)
        {
            case 'a':
                Console.WriteLine("Alanı {0}", A * B);
                break;
            case 'c':
                Console.WriteLine("Çevresi {0}", 2*A+2*B);
                break;
        }

        break;

    default:
        Console.WriteLine("Doğru İşlem seçmediniz.");
        break;

}
Console.Write("Devam etmek isityormusunuz?(e,E/h,H");
islem = char.Parse(Console.ReadLine());
if (islem == 'e' || islem == 'E') goto basagit;

 

Yorumlar

Yorum ekle

Konuyla İlgili Yazılar

c# dersleri

9-C#-4 Örnekler (Write, WriteLine,Veri tipleri, Tür dönüşümleri)

Aşağıdaki çözümleri olan uygulamaları inceleyiniz. Çözümleri olmayanları çözümünü yapınız. 1. Aşağıdaki kodların çıktısı nasıl olur? Console.Write("Gitme, ey... devamı...