判定は、上から順に行う
scoreが80以上ならA、そうでなく60以上ならB、それ以外はCとする独自の例を使います。score=79なら最初の条件は偽、次の条件は真なのでBです。
三つの判定を独立したifとして並べた場合とは処理の意味が異なります。コードのif・elseif・else・endifがどのまとまりを作っているかも読む必要があります。
| score | 最初の条件 | 結果 |
|---|---|---|
| 80 | 80以上:真 | A。後の条件は未評価 |
| 79 | 80以上:偽 | 60以上は真でB |
| 60 | 80以上:偽 | 60以上は真でB |
| 59 | 80以上:偽 | 60以上も偽でC |
境界の値を、別の例にして確かめる
80以上を表す≧は80を含み、80より大きい>は80を含みません。条件式の記号を一文字変えるだけで境界の結果が変わります。
この例では80はA、79と60はB、59はC。代表的な値だけでなく、区切りの値とその直前を比較すると見落としに気付きます。
スコアの入力範囲はこの教材では0〜100の整数と明示します。
実行されなかった枝を、値の表に足さない
score=80なら最初の条件でAへ進み、次のscore≧60は評価しません。後の条件も数式としては真になり得ますが、実際に判定したことにはなりません。
トレースでは偽だった条件、真だった条件、評価されなかった条件を区別します。この選択処理の例には、三つのラベルを後から足す処理も上書きする処理もありません。
問題を解くときも選ばれた枝にある更新だけを値へ反映します。