Anasayfa / C++ / C++ Karar Yapıları: if-else Kullanımı

C++ Karar Yapıları: if-else Kullanımı

Bir bilgisayar programı yazarken, programın her zaman baştan sona tek bir düz çizgi halinde ilerlemesini bekleyemeyiz. Kullanıcıdan gelen verilere, yapılan hesaplamaların sonuçlarına veya sistemin durumuna göre programın kararlar alması ve farklı yollara sapması gerekir. C++ programlama dilinde, programın akışını kontrol etmek ve karar verme otomasyonunu (decision-making automation) sağlamak için seçim ifadeleri (selection statements) kullanılır.

Bu kapsamlı rehberde, C++ dilinde if ve else ifadelerinin nasıl kullanıldığını, program akışını nasıl değiştirdiğini ve doğru, hataya dayanıklı kodların nasıl yazılacağını inceleyeceğiz.

1. C++’ta Kontrol Yapılarına (Control Structures) Genel Bakış

Karmaşık bir görev için program yazıldığında, aynı amaca ulaşmak için pek çok farklı algoritma tasarlanabilir. Bazı algoritmaları anlamak çok kolayken, bazıları oldukça karmaşıktır. Deneyimler, bir programda ortaya çıkan hata (bug) sayısının, programın formatıyla ve yapısıyla doğrudan ilişkili olduğunu göstermektedir.

Kodun yürütülme akışının (flow of execution) kolayca takip edilebileceği bir format kullanmak; sadece hata ayıklamayı (debugging) kolaylaştırmakla kalmaz, aynı zamanda programın daha sonra gözden geçirilmesini ve bakımının yapılmasını da büyük ölçüde kolaylaştırır. Doğru, hataya dayanıklı ve bakımı kolay bir kod elde etmenin temel yöntemi, aşağıdaki üç temel kontrol yapısından birini veya birkaçını bir arada kullanmaktır:

  1. Sıralı Yapı (Sequence Structure): Düz bir çizgi halinde, yukarıdan aşağıya sırayla çalışan kodlar.
  2. Seçim Yapısı (Selection Structure): Programın bir şarta bağlı olarak dallanmasını (branching) sağlayan karar yapıları.
  3. Döngü Yapısı (Loop Structure): Bir işlemin tekrarlanmasını (iteration/repetition) sağlayan yapılar.

Programlamada tüm süreçler, yalnızca bu üç mantık yapısı kullanılarak kodlanabilir. Bu temel kontrol yapılarını kullanma yaklaşımına Yapısal Programlama (Structured Programming) adı verilir ve yazılım mühendisliğinde çok önemli bir tekniktir. C++ dili, tüm bu temel kontrol yapılarını destekleyerek, yapısal programlamanın gücünü Nesne Yönelimli Programlama (OOP) paradigması ile kusursuz bir şekilde birleştirir.

2. Karar Verme Otomasyonu: Neden Seçim İfadelerine İhtiyacımız Var?

Daha önceki rehberlerimizde değişkenleri ve veri tiplerini işlemiştik. Ancak programlarımızın akıllı davranabilmesi için, eğer/değilse mantığıyla çalışan karar mekanizmalarına ihtiyaçları vardır. Seçim (selection) ifadeleri olan if, else ve switch yapılarını anlamak, programınızın akışını kontrol etmenizi sağlar.

C++ dilinde if ifadesi, iki farklı formda (biçimde) uygulanır:

  • Basit if ifadesi (Simple if statement)
  • if...else ifadesi (if…else statement)

Bu formların nasıl çalıştığını sözdizimi kuralları (syntax) ve örneklerle inceleyelim.

3. Form 1: Basit “if” İfadesi (Simple if Statement)

Basit if yapısı, sadece belirli bir koşulun “doğru” (true) olması durumunda bir işlemin yapılmasını, “yanlış” (false) olması durumunda ise o işlemin atlanmasını sağlar.

C++ dilinde basit if ifadesinin temel sözdizimi şu şekildedir:

if (expression is true) // Eğer ifade doğruysa
{
    action1;            // 1. eylemi gerçekleştir
}
action2;                // 2. eylemi gerçekleştir
action3;                // 3. eylemi gerçekleştir

Nasıl Çalışır? Program if anahtar kelimesini gördüğünde, parantez içindeki ifadeyi (expression) değerlendirir. Eğer bu ifade doğru (true) ise, süslü parantezler { } arasındaki action1 kodu çalıştırılır ve ardından program action2 ve action3 ile yoluna devam eder. Ancak ifade yanlış (false) ise, program action1 bloğunu tamamen atlar ve doğrudan action2 ve action3 üzerinden çalışmaya devam eder.

Örnek Kod (Pekiştirme Amaçlı): Daha önceki operatörler dersimizde öğrendiğimiz büyüktür (>) operatörünü kullanalım.

#include <iostream>
using namespace std;

int main() {
    int yas = 20;

    cout << "Sisteme giriş yapılıyor..." << endl;

    if (yas >= 18) {
        cout << "Reşit bir kullanıcısınız. Sisteme hoş geldiniz!" << endl;
    }

    cout << "Giriş işlemi tamamlandı." << endl;
    return 0;
}

Bu örnekte, yas değişkeni 18’den büyük veya eşit olduğu için (20), program if bloğunun içine girecek ve karşılama mesajını yazdıracaktır. Eğer yas değişkeni 15 olsaydı, if bloğu atlanacak ve sadece “Giriş işlemi tamamlandı.” yazısı ekrana basılacaktı.

4. Form 2: “if-else” Yapısı (if-else Statement)

Sadece koşulun sağlandığı durumu değil, sağlanmadığı durumu da yönetmek istediğimizde if...else yapısını kullanırız. Bu yapı, programın iki farklı yoldan birini kesin olarak seçmesini sağlar.

Sözdizimi şu şekildedir:

if (expression is true) // Eğer ifade doğruysa
{
    action1;            // 1. eylemi gerçekleştir
}
else                    // Değilse (ifade yanlışsa)
{
    action2;            // 2. eylemi gerçekleştir
}
action3;                // 3. eylemi gerçekleştir

Nasıl Çalışır? Bu yapıda, eğer ifade (koşul) doğru (true) çıkarsa, program sadece action1 bloğunu çalıştırır, else bloğunu atlar ve doğrudan action3 adımına geçer. Eğer ifade yanlış (false) çıkarsa, bu kez action1 bloğu atlanır, program doğrudan else bloğundaki action2 kodunu çalıştırır ve ardından action3 adımıyla akışına devam eder.

Örnek Kod (Pekiştirme Amaçlı): Bir önceki konumuzda eşitlik operatörünü (==) işlemiştik. Şimdi bunu şifre kontrolü için kullanalım:

#include <iostream>
using namespace std;

int main() {
    int dogruSifre = 1234;
    int girilenSifre = 9999;

    if (girilenSifre == dogruSifre) {
        cout << "Şifre doğru. Kasaya erişildi." << endl;
    }
    else {
        cout << "Hatalı şifre! Güvenlik kilidi devrede." << endl;
    }

    cout << "Sistem kontrolü sonlandırıldı." << endl;
    return 0;
}

Yukarıdaki programda koşul (9999 == 1234) yanlış olduğu için, C++ derleyicisi if bloğunu pas geçecek ve else bloğuna girecektir. Kullanıcıya hatalı şifre mesajı gösterildikten sonra program normal akışına devam edecektir.

5. Çoklu Dallanma: switch İfadesi (Multiple-Branching)

Eğer kontrol etmeniz gereken koşullar basit bir if-else yapısını aşıyor ve çok fazla seçeneğe ayrılıyorsa, C++ bir başka güçlü seçim yapısı olan switch ifadesini sunar. Bu, bir koşula bağlı olarak program kontrolünün, tanımlanmış birçok olası noktadan birine aktarıldığı çoklu-dallanma (multiple-branching) ifadesidir.

switch ifadesi şu şekilde uygulanır:

switch(expression)
{
    case 1:
    {
        action1;
    }
    case 2:
    {
        action2;
    }
    case 3:
    {
        action3;
    }
    default:
    {
        action4;
    }
}
action5;

Koşul ifadesinin sonucuna göre (örneğin sonuç 2 çıkarsa), program doğrudan case 2 bölümüne atlar. Eğer hiçbir eşleşme bulunamazsa default bloğundaki action4 çalışır.

6. Yeni Başlayanlar İçin Kariyer ve Öğrenme Yol Haritasında “if-else”in Yeri

Eğer C++’ı profesyonel bir yazılım mühendisi olmak veya popüler oyun motorlarında (Unreal Engine gibi) oyun geliştirmek için öğreniyorsanız, temel yapı taşlarını atlamamalısınız. C++’ta karar yapıları, öğrenme sürecinizin tam merkezinde yer alır.

Önerilen başlangıç düzeyi çalışma takvimine göre (4-6 aylık bir eğitim periyodunda):

  • 1. Ay (Temeller): Değişkenler, veri tipleri, girdi/çıktı, operatörler, “if” ifadeleri (if statements) ve döngüler (loops).
  • 2. Ay ve Sonrası: Fonksiyonlar (functions), diziler (arrays), referanslar ve Nesne Yönelimli Programlama (OOP).

Gördüğünüz gibi “if-else” mantığını oturtmak, değişkenleri ve operatörleri öğrenir öğrenmez atmanız gereken ilk kodlama adımıdır. Günlük rutinlerinizde her gün en az 30 dakika teorik okuma yapıp, 60 dakika kod yazarak (kopyala-yapıştır yapmadan) bu temel karar yapılarını kalıcı olarak öğrenebilirsiniz. Eğer programınız hata verirse pes etmeyin; hataları okuyun, bolca “if-else” örneği yazarak kodları isteyerek bozun ve deneyler yapın.

Bir sonraki makalemizde, karar yapılarından sonraki en önemli yapı olan Döngülere (Loop Structures) giriş yapacağız. Mutlu kodlamalar!

Etiketlendi:

Cevap bırakın

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