Menu
Coddy logo textTech

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

Coddy'nin C Journey'sinin Fundamentals bölümünün bir parçası — ders 23 / 63.

Birden fazla koşul kontrol edilirken, program nihai sonucu öğrendiği anda kontrol etmeyi durdurur. Buna kısa devre değerlendirmesi (short-circuit evaluation) denir.

Örneğin:

int x = 0;
int y = 5;
int 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:

int result = (y / x > 2) && (x != 0);

Bu bir hataya neden olacaktır çünkü y 0'a bölünecektir, bu da C'de tanımsızdır. Bu nedenle, doğru ve etkili ancak hatasız bir kod elde edebilmek için işlemleri iyice düşünmek iyi bir uygulamadır.

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;
int result = (a > 0 && b < 2) || (c < -5 && d < 10);

Bu örnekte, a > 0 ve c < -5 ifadelerinin her ikisi de yanlış (false) olduğu için b < 2 ve d < 10 değerlendirilmeyecektir.

challenge icon

Görev

Kolay

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:

  • 1 (true) değeriyle isSunny
  • 5.4 değeriyle windSpeed
  • 23 değeriyle temperature
  • 9 değeriyle solarPanelOutput
  • 0 (false) değeriyle isCloudy

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

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

Tüm koşullar karşılanıyorsa "Good day for solar energy" yazdırın, aksi takdirde "Not ideal for solar energy" yazdırın.

Kopya kağıdı

Kısa devre değerlendirmesi, nihai sonuç belirlenir belirlenmez koşulları kontrol etmeyi durdurarak mantıksal ifade değerlendirmesini optimize eder.

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

int x = 0;
int result = (x != 0) && (y / x > 2);  // y/x değerlendirilmeyecek

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

int result = (a > 0 && b < 2) || (c < -5 && d < 10);
// Eğer a > 0 yanlışsa, b < 2 değerlendirilmeyecek
// Eğer ilk kısım doğruysa, ikinci kısım değerlendirilmeyecek

Sıralama önemlidir - hatalara neden olabilecek koşulları (sıfıra bölme gibi) güvenlik kontrollerinden sonraya yerleştirin:

// Güvenli: önce x != 0 kontrol edilir
int result = (x != 0) && (y / x > 2);

// Güvensiz: sıfıra bölebilir
int result = (y / x > 2) && (x != 0);

Kendin dene

#include <stdio.h>

int main() {
    // Değişkenleri başlat
    int isSunny = 1;
    float windSpeed = 5.4;
    int temperature = 23;
    int solarPanelOutput = 9;
    int isCloudy = 0;
    
    // Mantıksal ifadeyi oluştur
    int isGoodDay = 
    
    // Aşağıyı değiştirmeyin
    if (isGoodDay) {
        printf("Good day for solar energy\n");
    } else {
        printf("Not ideal for solar energy\n");
    }
    
    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.

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