D Programlama Dili - Çözümler

Mantıksal İfadeler

  1. Derleyici 10 < sayı'yı bir ifade olarak tanıdığı için, ondan sonra bir virgül bekliyor. Bütün ifadenin etrafına parantezler koyulduğunda da sorun çözülmüyor, çünkü bu sefer de 10 < sayı ifadesinden sonra bir kapama parantezi bekliyor.
  2. (10 < sayı) < 20 şeklinde gruplama kullanıldığında derleme hatası olmaz, çünkü derleyici önce 10 < sayı ifadesini işletir, ondan sonra onun sonucunu < 20 ile kullanır. 10 < sayı gibi bir mantıksal ifadenin sonucunun da ya false ya da true olduğunu biliyoruz.

    false ve true değerleri tamsayı işlemlerinde kullanıldıklarında otomatik olarak 0 ve 1 değerlerine dönüşürler. (Otomatik tür dönüşümlerini daha sonra göreceğiz.) O yüzden de bütün ifade ya 0 < 20 ya da 1 < 20 haline gelir ve ikisinin sonucu da her zaman için true'dur.

  3. "Alt sınırdan büyüktür ve üst sınırdan küçüktür" mantıksal ifadesini şöyle kurarız:
        writeln("Arasında: ", (sayı > 10) && (sayı < 20));
    
  4. "Yeterince bisiklet var" ifadesini kişi_sayısı <= bisiklet_sayısı veya bisiklet_sayısı >= kişi_sayısı olarak yazabiliriz. Diğerleri de sorudaki ifade doğrudan D koduna çevrilerek yazılabilir:
        writeln("Plaja gidiyoruz: ",
                ((mesafe < 10) && (bisiklet_sayısı >= kişi_sayısı))
                ||
                ((kişi_sayısı <= 5) && araba_var && ehliyet_var)
               );
    

    Okumayı kolaylaştırmak için || işlecinin ayrı bir satıra yazıldığına dikkat edin. Böylece sorudaki iki koşulu temiz bir şekilde iki ayrı satırda görebiliyoruz.