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.
Görev
KolayGü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ğerlendirilmeyecekSı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;
}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
2Değişkenler
Veri TipleriTam Sayı (Integer)Float - DoubleKarakterlerBooleanlarSabitlerprintf TemelleriDeğişken İsimlendirme KurallarıTip Dönüşümü Bölüm 1Tip Dönüşümü Bölüm 2Özet Meydan Okuması3Operatörler
Aritmetik OperatörlerModül OperatörüArtırma/AzaltmaAtama Operatörleriİlişkisel OperatörlerMantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Mantıksal Operatörler Bölüm 3Özet Meydan Okuması