Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
   
Konu: C# - switch Deyimi {25}
Hera
*
avatar
Yüzbaşı
Durum: Çevrimdışı
Seviye Puanı: 9
Yaşam Puanı: 42 / 201
Deneyim: 5 / 100
Rep Sayısı: 27
Mesaj Sayısı: 101
Üyelik Tarihi: 13.04.2019
     
Yorum: #1
C# - switch Deyimi {25}
26.05.2019 21:26
switch deyimi genellikle kompleks if-else bloklarının yerine tercih edilir. switch deyimi ile yapabileceğimiz bütün kontrolleri if deyimi ile de yapabiliriz, ancak bazı durumlarda switch deyimi okunabilirliği arttırdığı için tercih edilir.
Bir switch yapısında break, case, switch ve goto anahtar sözcükleri kullanılır.
switch bloğu bir ifadenin üreteceği değerlere göre programın akışını dallandırır. Temel bir switch yapısı aşağıdaki gibidir;

Kod:
switch(ifade)
{
    case sabit1:
        deyim1;
        break;
    case sabit2:
        deyim2;
        break;
    default:
        deyim3;
        break;
}


switch deyimi aşağıdaki gibi sırayla çalışır;
  1. Önce switch parantezi içindeki ifade hesaplanır.
  2. Programın akışı, hesaplanan ifade ile aynı case sabitinin bulunduğu satıra gelir.
  3. Eğer herhangi bir case sağlanmıyorsa, akış default anahtar sözcüğünün bulunduğu yere gelir ve buradan devam eder.
ÖNEMLİ NOT Nickli Kullanıcıdan Alıntı:
İki veya daha fazla sayıda case ifadesi olamaz, Her biri farklı olmalıdır.

C veya C++ programcılarının hatırlayacağı gibi, eğer break anahtar sözcüğü kullanılmaz ise case sabitleri doğru bulunsa bile akış devam edecektir. Bu yüzden her case satırının sonuna break anahtar sözcüğü ile switch bloğunun dışına çıkılırdı. Ancak bu durumda C#'ta geçerli değildir. C#'ta case deyimi sağlandığı zaman ikinci bir case deyimine goto anahtar sözcüğü ile açıkça belirtmedikçe geçilmez, örneğin;
Kod:
using System;

namespace C13
{
    class Program
    {
        static void Main()
        {
            int a = 1;
            switch (a)
            {
                case 1:
                    Console.WriteLine("Case1");
                case 2:
                    Console.WriteLine("Case2");
                    break;
                default:
                    break;
            }
        }
    }
}

bu programı derlediğimizde aşağıdaki hatayı alırız;
"Control cannot fall through from one case label ('case1:') to another"
yani: "Bir case deyiminden ('case1:') diğer bir case deyimine geçilemez."
Bu hatayı önlemek için goto anahtar sözcüğü kullanılır. Yukarıdaki programda case1:'den sonra aşağıdaki deyim yazılırsa derleme hatası almayız.

goto case 2;

Ancak bu durumda da ekrana hem "case1" hem de "case2" yazısı yazılacaktır.

Eğer birbiri ardında gelen case ifadeleri arasında herhangi bir deyim yoksa bu hatay ıalmayız; bu durumda zaten ard arda gelen bütün case ifadeler için aynı deyim çalıştırılır. Bunun için aşağıdaki gibi bir kullanım vardır.
Kod:
using System;

namespace C13
{
    class Program
    {
        static void Main()
        {
            int a = 1;
            switch (a)
            {
                case 1:
                case 2:
                    Console.WriteLine("Case1 ve case2");
                    break;
                case 3:
                    Console.WriteLine("Case3");
                    break;
                default:
                    break;
            }
        }
    }
}


switch Deyimi ile ilgili Önemli Kurallar
  1. case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadır. Bu ifadeler içinde değişken bulunamaz.
  2. case ifadeleri C#'ta herhangi bir tamsayı sabiti, karakter ya da string sabiti olabilir.
  3. default durumunu istediğimiz yere yazabiliri. Aynı şekilde case ifadelerinide istediğimiz sırada yazabiliriz.
  4. Bir switch bloğunda iki ya da daha fazla sayıda aynı case ifadesi bulunamaz.
  5. Bir switch bloğunda default case olmak zorunda değildir.
  6. Akış herhangi bir case ifadesine geldiğinde, akış farklı bir case ifadesinin yönelndirilmek istenirse goto anahtar sözcüğü kullanılır.
Şimdi if-else blokları ile yapmış olduğumuz 4 işlem programının aynısını switch deyimi ile yapalım.
Kod:
using System;

namespace C13
{
    class Program
    {
        static void Main()
        {
            int sayi1, sayi2;
            string islem;

            Console.WriteLine("Birinci sayıyı giriniz : ");
            sayi1 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("İkinci sayıyı giriniz : ");
            sayi2 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\nToplama ---> t");
            Console.WriteLine("Çıkarma ---> c");
            Console.WriteLine("Çarpma ---> m");
            Console.WriteLine("Bölme ---> b");
            Console.WriteLine("İşleminizi seçiniz : ");
            islem = Console.ReadLine();

            switch (islem)
            {
                case "t":
                    Console.WriteLine("Sonuç : {0}", sayi1 + sayi2);
                    break;
                case "m":
                    Console.WriteLine("Sonuç : {0}", sayi1 * sayi2);
                    break;
                case "c":
                    Console.WriteLine("Sonuç : {0}", sayi1 - sayi2);
                    break;
                case "b":
                    switch (sayi2)
                    {
                        case 0:
                            Console.WriteLine("Bölen sıfır olamaz!");
                            break;
                        default:
                            float sonuc = (float)sayi1 / (float)sayi2;
                            Console.WriteLine("Sonuç : {0}", sonuc);
                            break;
                    }
                    break;
            }
        }
    }
}
(Bu konu en son: 26.05.2019 Tarihinde, Saat: 21:54 düzenlenmiştir. Düzenleyen: Hera.)

Yaşamak için 2 yol vardır: Sanki hiçbir şey mucize değilmiş gibi yaşayabilirsin; sanki her şey mucizeymiş gibi yaşayabilirsin.

C# Dersleri {Detaylı}


Alinti
Dessy
*
avatar
Yarbay
Durum: Çevrimdışı
Seviye Puanı: 22
Yaşam Puanı: 181 / 532
Deneyim: 30 / 100
Rep Sayısı: 113
Mesaj Sayısı: 592
Üyelik Tarihi: 20.11.2015
     
Yorum: #2
RE: C# - switch Deyimi {25}
26.05.2019 22:37
Teşekkürler, Emeğine Sağlık Smile

İnstagram Sınırsız Hesap > Git
Youtube Sınırsız Hesap > Git
Sosyal Medyada Sınırsız Hesap Açma p2 Yakında.
Alinti
DARKDAYS
*
avatar
Albay
Durum: Çevrimdışı
Seviye Puanı: 30
Yaşam Puanı: 724 / 731
Deneyim: 25 / 100
Rep Sayısı: 459
Mesaj Sayısı: 1206
Üyelik Tarihi: 08.04.2017
      
Yorum: #3
RE: C# - switch Deyimi {25}
27.05.2019 16:33
Teşekkürler, Emeğine Sağlık Smile

Parmak uçlarına bak, parmak izlerini görüceksin ve o izlerden ne önce, ne şimdi, ne daha sonra olucak.
Dünya üzerinde 150 Milyar insan yaşamış, biri o parmak izlerine sahip değil !

MİRROR
Alinti



1 Ziyaretçi