コンテンツへスキップ
Topos Uranos

要約

条件とは、値が真または偽である式である。このレッスンでは、C++ で条件をどう組み立てるかを学ぶ。二つの値を比較して bool を生む六つの関係演算子、論理学の連言、選言、否定と同じように条件を組み合わせる三つの論理結合子 &&、||、!、そしてそれらの間の順序と算術に対する順序を決める優先順位である。さらに、C++ が数学の書き方から離れる二つの特徴も学ぶ。一つは連鎖 1 < x < 5 で、これはコンパイルできるが、見かけどおりの意味ではない。もう一つは短絡評価で、&& と || の第一オペランドがすでに結果を決めているとき、第二オペランドは計算されない。これによって危険な演算を守ることができる。最後に、ド・モルガンの法則による複合条件の否定を真理値表で確かめ、中心となる例として、うるう年の条件とその否定を扱う。この単元にはまだ分岐がない。条件は計算され、true または false として出力されるだけで、レッスン 分岐 がそれらにプログラムを制御させる。

学習目標

  1. 「xx は 1 以上 10 以下である(両端を含む)」のような文を翻訳する複合条件を C++ で書く。
  2. ド・モルガンの法則で複合条件を否定し、その同値性を真理値表で確かめる。
  3. count != 0 && total / count > 2 のように、短絡評価を使って演算を守る。
  4. 1 < x < 5 と書く誤りを見つけ、それが何を計算するかを説明し、直す。

式としての条件

レッスン 文字・真偽値・型変換・定数 は bool 型とその二つの値 true と false を紹介し、レッスン 算術演算 は、式には優先順位と結合規則が決める木と、オペランドが決める型があることを示した。このレッスンは二つの考えを一つにする。条件とは bool 型の式である。何かを問う文ではなく、結果が答えになる計算である。count < 10 は count + 1 と同じように計算される。オペランドをとり、演算子を適用し、値を得る。ただ、その値が数ではなく true または false だというだけである。そうであれば、算術式について成り立つことはすべて条件についても成り立つ。条件には優先順位があり、木があり、名前のついた変数に保存でき(const bool inRange{…})、出力もできる。ここから、このレッスン全体を貫く問いが生じる。ある文(「その年はうるう年である」「年齢は 18 以上 65 以下である」)が与えられたとき、ありうるすべてのデータに対してちょうどその真理値をもつ式はどれか。