📘 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