C++ Switch-Case Yapısı

C++ dilinde, switch-case yapısı, bir değişkenin belirli değerlerine göre farklı kod bloklarını çalıştırmak için kullanılan bir kontrol yapısıdır. Özellikle, çok sayıda if-else koşulu yazmak yerine, daha temiz ve düzenli bir kod yazmak için kullanılır. Bu yazıda, switch-case yapısının nasıl çalıştığını ve nasıl kullanıldığını detaylı bir şekilde inceleyeceğiz.


switch-case Yapısının Temel Kullanımı

switch-case yapısı, bir değişkenin değerini kontrol eder ve bu değere karşılık gelen case bloğuna gider. Eğer hiçbir case bloğu ile eşleşme olmazsa, opsiyonel olarak default bloğu çalıştırılır.

Söz Dizimi:

switch (değişken) {
    case değer1:
        // Değer1 ile eşleşirse çalışacak kod
        break;
    case değer2:
        // Değer2 ile eşleşirse çalışacak kod
        break;
    default:
        // Hiçbir değerle eşleşmezse çalışacak kod
}

  • değişken: Değerini kontrol etmek istediğiniz değişken.
  • case: Bu, değişkenin alabileceği olası değerleri tanımlar.
  • break: Bir case bloğu çalıştırıldığında, switch yapısının dışına çıkmak için kullanılır. break olmadan, bir sonraki case bloğu da çalışabilir (bu duruma “fall-through” denir).
  • default: Hiçbir case bloğu ile eşleşmeyen durumlar için çalışacak olan bloğu belirtir. Bu blok opsiyoneldir.

Örnek:

Aşağıda, bir sayıya göre haftanın hangi günü olduğunu belirleyen bir switch-case örneği bulunmaktadır.

#include <iostream>
using namespace std;

int main() {
    int gün = 3; // Hafta günü (1 = Pazartesi, 2 = Salı, ...)
    
    switch (gün) {
        case 1:
            cout << "Pazartesi" << endl;
            break;
        case 2:
            cout << "Salı" << endl;
            break;
        case 3:
            cout << "Çarşamba" << endl;
            break;
        case 4:
            cout << "Perşembe" << endl;
            break;
        case 5:
            cout << "Cuma" << endl;
            break;
        case 6:
            cout << "Cumartesi" << endl;
            break;
        case 7:
            cout << "Pazar" << endl;
            break;
        default:
            cout << "Geçersiz gün!" << endl;
    }

    return 0;
}

Bu örnekte, gün değişkenine bağlı olarak haftanın hangi günü olduğunu ekrana yazdırıyoruz. gün 3 olduğunda, program “Çarşamba” yazdırır. Eğer gün değeri 1 ile 7 arasında değilse, default bloğu çalışır ve “Geçersiz gün!” mesajı yazdırılır.


Switch-Case ile Dikkat Edilmesi Gerekenler

  1. break Kullanımı: Her case bloğunun sonunda bir break ifadesi bulunmalıdır. Aksi takdirde, program break olmadan bir sonraki case bloğuna geçer ve bu istenmeyen sonuçlar doğurabilir. Bu duruma fall-through denir.
  2. Farklı Veri Tipleri Kullanılamaz: switch-case yapısı yalnızca tamsayılar (int, char) ve enum türleriyle çalışır. float, double, string gibi türler ile switch-case kullanılamaz.
  3. default Bloğu Opsiyoneldir: default bloğu, her zaman zorunlu değildir. Eğer case ifadelerinin hepsi belirli bir durumu kapsıyorsa, default bloğuna gerek yoktur.

Switch-Case ve Fall-through

Yukarıda da bahsettiğimiz gibi, switch-case yapısında bir break ifadesi olmadığında, kod bir sonraki case bloğuna geçer. Bu duruma fall-through denir. fall-through, istenildiğinde kullanılabilir ancak dikkatli olunması gerekir.

Fall-through Örneği:

#include <iostream>
using namespace std;

int main() {
    int gün = 3;

    switch (gün) {
        case 1:
        case 2:
        case 3:
            cout << "Hafta içi" << endl;
            break;
        case 6:
        case 7:
            cout << "Hafta sonu" << endl;
            break;
        default:
            cout << "Geçersiz gün!" << endl;
    }

    return 0;
}

Bu örnekte, gün 1, 2 veya 3 olduğunda “Hafta içi” mesajı yazdırılacak, çünkü bu üç case bloğu arasında bir break ifadesi olmadığından, program case 1, case 2 ve case 3 bloklarına “fall-through” yapar.


Sonuç

C++ dilinde switch-case yapısı, bir değişkenin değerine göre farklı işlemler gerçekleştirmek için çok kullanışlı bir kontrol yapısıdır. if-else yapısına göre daha düzenli ve okunabilir bir çözüm sunar, özellikle birden çok koşul kontrolü gerektiren durumlar için tercih edilir.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir