Menu
Coddy logo textTech

Mantıksal Operatörler Bölüm 3

Coddy'nin C++ Journey'sinin Temeller bölümünün bir parçası — ders 26 / 74.

Birden fazla koşulu kontrol ederken, bilgisayar nihai cevabı bildiği anda kontrol etmeyi durdurur (Buna kısa devre değerlendirmesi denir).

Örneğin:

int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;

Burada x, 0'a eşittir, bu nedenle y / x > 2 ifadesini değerlendirmeyecektir. Eğer sırayı tersine çevirseydik:

bool result = y / x > 2 && x != 0;

Bu bir hataya neden olacaktır çünkü y 0'a bölünecektir, bu da matematikte geçersizdir.

Bu teknik, mantıksal ifadelerin değerlendirilmesini optimize etmek için kullanılır. Örneğin:

int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);

Bu örnekte, b < 2 ve d < 10 değerlendirilmeyecektir çünkü a > 0 ve c < -5 her ikisi de yanlıştır.

challenge icon

Görev

Başlangıç

Güneş paneli enerji üretimi için iyi bir gün olup olmadığına karar veren bir program oluşturun

Şu değişkenleri başlatın:

  • true değeri ile isSunny
  • 5.4 değeri ile windSpeed
  • 23 değeri ile temperature
  • 9 değeri ile solarPanelOutput
  • false değeri ile isCloudy

Bu koşulların TÜMÜNÜ kontrol eden tek bir mantıksal ifade oluşturun:

  • Hava güneşli
  • Rüzgar hızı 10'dan küçük
  • Güneş paneli çıktısı 15'ten küçük
  • Sıcaklık 20'nin üzerinde VEYA bulut YOK

Kopya kağıdı

Kısa devre değerlendirmesi (Short-circuit evaluation), bilgisayarın nihai sonucu öğrendiği anda koşulları kontrol etmeyi bırakması anlamına gelir.

&& (VE) ile, eğer ilk koşul yanlışsa (false), ikincisi değerlendirilmez:

int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2; // y / x > 2 değerlendirilmez

|| (VEYA) ile, eğer ilk koşul doğruysa (true), ikincisi değerlendirilmez:

bool result = (a > 0 && b < 2) || (c < -5 && d < 10);
// Eğer a > 0 yanlışsa, o zaman c < -5 ve d < 10 değerlendirilmez

Bu, hataları (sıfıra bölme gibi) önler ve gereksiz değerlendirmelerden kaçınarak performansı optimize eder.

Kendin dene

#include <iostream>

int main() {
    // Değişkenleri başlat

    
    // Tam mantıksal ifade
    bool result = 
    
    // Sonuçları yazdır
    std::cout << "1. Is it sunny? " << std::boolalpha << isSunny << std::endl;
    std::cout << "2. Is wind speed safe? " << (windSpeed < 10) << std::endl;
    std::cout << "3. Do panels produce less? " << (solarPanelOutput < 15) << std::endl;
    std::cout << "4. Is temperature good OR no clouds? " << (temperature > 20 || !isCloudy) << std::endl;
    std::cout << "5. Final result: " << result << std::endl;

    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler