4.3 – switch-case ile İşlem Seçimi


📘 4.3 – switch-case ile İşlem Seçimi


🔹 Açıklama:

Karar yapılarında if-else zincirleri bazı durumlarda okunabilirliği zorlaştırabilir. Birden fazla alternatifin karşılaştırıldığı durumlarda C#’ta switch-case yapısı, kodu daha sade ve düzenli hale getirir.

Bu yapı sayesinde:

  • Kullanıcının seçimine göre farklı işlem yolları izlenebilir,
  • Menü tasarımı kolaylaşır,
  • Karar yapısı sadeleşir.

Özellikle menü sistemleri, hesap makineleri, kullanıcı işlemleri gibi sabit seçenekli yapılar için uygundur.


📍 Kullanım Alanları:

  • Menü sistemleri
  • Hesap makineleri
  • Harf-not eşleştirme
  • Kullanıcıdan alınan seçime göre işlem yürütme
  • Dil seçenekleri / tema değiştirme gibi UI kontrolleri

🎯 Kazanımlar:

  • switch-case yapısını gerçek senaryolarda kullanabilme
  • Kodun okunabilirliğini artırma
  • if-else zincirine göre performans avantajını kavrama
  • Sabit değerli kontrolleri sadeleştirme
  • Geniş işlem menülerinde hatasız yapı kurma becerisi kazanma

🧪 4.3 – switch-case ile İşlem Seçimi: Örneklerle Uygulama


📌 Örnek 1: Dört İşlem Seçimi

🎯 Amaç:
Kullanıcıdan işlem türünü alarak toplama, çıkarma, çarpma veya bölme yap.

🎨 Form Elemanları:

  • txtSayi1, txtSayi2, cmbIslem (ComboBox: “Toplama”, “Çıkarma”, “Çarpma”, “Bölme”)
  • btnHesapla, lblSonuc

💻 Kod:

private void btnHesapla_Click(object sender, EventArgs e)
{
    if (double.TryParse(txtSayi1.Text, out double s1) &&
        double.TryParse(txtSayi2.Text, out double s2))
    {
        switch (cmbIslem.Text)
        {
            case "Toplama":
                lblSonuc.Text = $"Sonuç: {s1 + s2}";
                break;
            case "Çıkarma":
                lblSonuc.Text = $"Sonuç: {s1 - s2}";
                break;
            case "Çarpma":
                lblSonuc.Text = $"Sonuç: {s1 * s2}";
                break;
            case "Bölme":
                lblSonuc.Text = s2 != 0 ? $"Sonuç: {s1 / s2}" : "Bölen 0 olamaz!";
                break;
            default:
                lblSonuc.Text = "Bir işlem seçiniz.";
                break;
        }
    }
    else
    {
        MessageBox.Show("Sayı girişlerini kontrol ediniz.");
    }
}

📝 Açıklama:
ComboBox seçimleri switch-case ile kolayca yönetilir. Her seçenek bir case ile tanımlanır.


📌 Örnek 2: Gün İsmi ile Mesaj Verme

🎯 Amaç:
Kullanıcı haftanın gününü girince uygun mesaj göster.

🎨 Form Elemanları:

  • txtGun (TextBox), btnGoster, lblMesaj

💻 Kod:

private void btnGoster_Click(object sender, EventArgs e)
{
    string gun = txtGun.Text.ToLower();

    switch (gun)
    {
        case "pazartesi":
            lblMesaj.Text = "Haftaya zinde başla!";
            break;
        case "cuma":
            lblMesaj.Text = "Hafta sonu yaklaşıyor!";
            break;
        case "cumartesi":
        case "pazar":
            lblMesaj.Text = "Tatil zamanı!";
            break;
        default:
            lblMesaj.Text = "Keyifli bir gün dileriz.";
            break;
    }
}

📝 Açıklama:
Aynı mesajı veren birden fazla case arka arkaya yazılabilir.


📌 Örnek 3: Harf Notuna Karar Verme

🎯 Amaç:
Kullanıcının girdiği harf notuna göre açıklama yazdırmak.

🎨 Form Elemanları:

  • txtHarf (TextBox), btnAcikla, lblSonuc

💻 Kod:

private void btnAcikla_Click(object sender, EventArgs e)
{
    switch (txtHarf.Text.ToUpper())
    {
        case "AA":
            lblSonuc.Text = "Mükemmel";
            break;
        case "BB":
            lblSonuc.Text = "İyi";
            break;
        case "CC":
            lblSonuc.Text = "Geçer";
            break;
        case "FF":
            lblSonuc.Text = "Başarısız";
            break;
        default:
            lblSonuc.Text = "Geçerli bir harf notu giriniz.";
            break;
    }
}

📝 Açıklama:
switch-case harf tabanlı sınıflandırmalarda oldukça etkilidir.


📌 Örnek 4: Ay Numarasıyla Mevsim Bulma

🎯 Amaç:
Ay numarasına göre hangi mevsim olduğunu göster.

🎨 Form Elemanları:

  • txtAy (TextBox), btnMevsim, lblMevsim

💻 Kod:

private void btnMevsim_Click(object sender, EventArgs e)
{
    if (int.TryParse(txtAy.Text, out int ay))
    {
        switch (ay)
        {
            case 12:
            case 1:
            case 2:
                lblMevsim.Text = "Kış";
                break;
            case 3:
            case 4:
            case 5:
                lblMevsim.Text = "İlkbahar";
                break;
            case 6:
            case 7:
            case 8:
                lblMevsim.Text = "Yaz";
                break;
            case 9:
            case 10:
            case 11:
                lblMevsim.Text = "Sonbahar";
                break;
            default:
                lblMevsim.Text = "1-12 arasında bir sayı giriniz.";
                break;
        }
    }
    else
    {
        MessageBox.Show("Geçerli bir ay giriniz.");
    }
}

📝 Açıklama:
Tek case ile birden fazla değer eşleştirilebilir. Kod sade kalır.


📌 Örnek 5: Menü Seçimi

🎯 Amaç:
Kullanıcının seçtiği menüye göre işlem yönlendirmesi yapmak.

🎨 Form Elemanları:

  • cmbMenu (ComboBox: “Hesapla”, “Raporla”, “Yedekle”, “Çıkış”)
  • btnSec, lblIslem

💻 Kod:

private void btnSec_Click(object sender, EventArgs e)
{
    switch (cmbMenu.Text)
    {
        case "Hesapla":
            lblIslem.Text = "Hesaplama ekranına yönlendiriliyorsunuz...";
            break;
        case "Raporla":
            lblIslem.Text = "Raporlama başlatılıyor...";
            break;
        case "Yedekle":
            lblIslem.Text = "Veriler yedekleniyor...";
            break;
        case "Çıkış":
            Application.Exit();
            break;
        default:
            lblIslem.Text = "Lütfen bir menü seçiniz.";
            break;
    }
}

📝 Açıklama:
Kullanıcıdan gelen sabit seçenekler switch-case ile ideal biçimde kontrol edilir.


✅ Özet:

switch-case kullanımı sayesinde:

  • Menü veya seçim odaklı sistemlerde daha okunabilir kod yazılır
  • Her case bir görev bloğu gibi davranır
  • default ile hatalı girişler kolayca ele alınır
  • Kod mantığı sadeleşir, hata olasılığı azalır

Leave a Reply