CodeBlanks Logo Icon CodeBlanks

Hata yönetimi

try/catch ile geçersiz girdileri güvenle yakalarsın.

Hata yönetimi

Bölme işleminde sıfıra bölme büyük bir sorundur: a / 0 tanımsızdır ve program çökebilir. Bu yüzden bölmeyi yapmadan önce b'nin sıfır olup olmadığını kontrol etmeliyiz.

C++'ta if ifadesi bir koşulu denetler. if (b == 0) yazdığında, b sıfırsa sonraki blok çalışır. Böylece hatayı yakalayıp güvenli bir değer dönebilirsin.

Bu projede sıfıra bölme durumunda 0 döneceğiz. Gerçek uygulamada bir hata mesajı yazdırabilir veya bir istisna fırlatabilirsin; ama şimdilik basit tutuyoruz.

if ile koşul

if ifadesi bir koşul doğruysa bir blok çalıştırır. Sözdizimi: if (koşul) { ... }. Koşul true ise blok işler, false ise atlanır.

Sıfır kontrolü için: if (b == 0) return 0;. Burada == eşitlik karşılaştırmasıdır (atama = ile karıştırma). b sıfırsa metot 0 döndürür ve bölme yapılmaz.

return metottan anında çıktığı için, sıfır kontrolünden sonraki return a / b; satırı yalnızca b sıfır değilse çalışır. Bu yapı erken çıkış (early return) olarak adlandırılır.

Uygulama Sıfır kontrolü ekle

divide metodunun gövdesini değiştir: önce if (b == 0) return 0; ile sıfır kontrolü ekle, sonra return a / b; ile normal bölmeyi yap. main zaten calc.divide(20, 4) ve calc.divide(20, 0) çağrılarıyla hazır; çıktı 5 ve 0 olmalı.

Başlangıç kodu

main.cpp
#include <iostream>

class Calculator {
public:
    double add(double a, double b) { return a + b; }
    double subtract(double a, double b) { return a - b; }
    double multiply(double a, double b) { return a * b; }
    double divide(double a, double b) { return a / b; }
};

int main() {
    Calculator calc;
    // Bölmede sıfır kontrolü ekle
    std::cout << calc.divide(20, 4) << std::endl;
    std::cout << calc.divide(20, 0) << std::endl;
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Calculator {
public:
    double add(double a, double b) { return a + b; }
    double subtract(double a, double b) { return a - b; }
    double multiply(double a, double b) { return a * b; }
    double divide(double a, double b) {
        if (b == 0) return 0;
        return a / b;
    }
};

int main() {
    Calculator calc;
    // Bölmede sıfır kontrolü ekle
    std::cout << calc.divide(20, 4) << std::endl;
    std::cout << calc.divide(20, 0) << std::endl;
    return 0;
}

Beklenen çıktı

5
0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bölmede bölen sıfır olursa ne yapılmalı?

  • Program çöker
  • Sonuç 0 olur
  • Önce kontrol edip 0 dönmek Doğru cevap
  • Derleme hatası verilir

Açıklama: Önce if (b == 0) ile kontrol edip güvenli değer dönmeliyiz.

2 Sıfır kontrolü

Soru
if (____) return 0;
Cevap
if (b == 0) return 0;

Açıklama: b == 0 ile sıfır kontrolü yapılır.

3 Hata yönetimi kavramlarını eşleştir

Kavram Anlamı
if (b == 0) Sıfır kontrolü
return 0; Güvenli değer
== Eşitlik karşılaştırma
early return Erken çıkış

Başlangıç bölümündeki tüm dersler