論理式

  1. コンパイラは、10 < valueをすでに式として認識しているため、その後にコンマが続くことを期待して、writelnの有効な引数として受け入れる。式全体を括弧で囲んでも、同じ式の後ろに閉じ括弧が続くため、これは機能しない。
  2. 式を(10 < value) < 20とグループ化すると、コンパイルエラーは発生しない。この場合、まず10 < valueが評価され、その結果が< 20で使用されるからだ。

    10 < valueのような論理式の値は、falseまたはtrueのいずれかになることはわかっている。falseおよびtrueは、それぞれ0および1として整数式の一部となる。(自動型変換については、後の章で説明する。)その結果、式全体は、0 < 20または1 < 20のいずれかと同等になり、どちらもtrueと評価される。

  3. "下限値より大きく、上限値より小さい"という式は、次のようにコード化できる。
    writeln("Is between: ", (value > 10) && (value < 20));
    D
  4. "全員に自転車がある"は、personCount <= bicycleCountまたはbicycleCount >= personCountと記述できる。論理式の残りの部分は、演習問題からDに直接変換できる。
    writeln("We are going to the beach: ",
            ((distance < 10) && (bicycleCount >= personCount))
            ||
            ((personCount <= 5) && existsCar && existsLicense)
            );
    D

    2つの主な条件を分離して読みやすくするために、||演算子の配置に注意。