CO-P21情報Ⅰ 対策問題

コンピュータとプログラミングプログラミング特訓 (第3問対策)

次のプログラムは、買い物金額に応じた送料を計算する。送料が「0」と表示されるのは、kingaku がどの値のときか。 (1) もし kingaku >= 5000 ならば: (2) | souryou = 0 (3) そうでなくもし kingaku >= 2000 ならば: (4) | souryou = 300 (5) そうでなければ: (6) ⎿ souryou = 500 (7) 表示する(souryou)

解答・解説を見る

正解: 1

正答

1

この問題のポイント

境界値の判定(以上・未満の境目) を問う問題です。

解説

「kingaku >= 5000」の「>=」は「以上」、つまり5000ちょうどを含みます。等号を含むか含まないか(以上/より大きい、以下/未満)の区別が、この問題の全てです。

各選択肢の値を多分岐に通してトレースします(条件は上から順に評価、最初に成立した枝だけ実行)。
kingaku=5000のとき: 5000>=5000 → 真 → souryou=0。
kingaku=4999のとき: 4999>=5000 → 偽。4999>=2000 → 真 → souryou=300。
kingaku=2000のとき: 2000>=5000 → 偽。2000>=2000 → 真 → souryou=300。
kingaku=1999のとき: どちらも偽 → そうでなければ → souryou=500。
送料0になるのは 5000 だけです。

この問題の値の選び方(1999/2000/4999/5000)には意味があります。条件の境目の前後1円ずつ、いわゆる境界値です。プログラムの誤りは境界のところで起こりやすいため、テスト(動作確認)では境界値を狙って入力するのが定石です。実際のECサイトの送料計算もまさにこのロジックです。

共通テストでは「この値のとき何が表示されるか」「意図と違う動きをするのはどの値か」という形で境界値の理解が問われます。条件式を見たら「等号あり(>=)か等号なし(>)か」に印をつけ、境目ちょうどの値がどちらの枝に落ちるかを言えるようにしておきましょう。

選択肢の確認

1.○ 5000>=5000 は真(以上は境目を含む)。送料0。
2.× 4999は最初の条件に落ち、2番目の条件で300円。
3.× 2000は 2000>=2000 が真で300円。
4.× 1999はどの条件にも該当せず500円。

ここだけは覚えよう

「>=」は境目ちょうどを含む — テストは境界値(境目とその前後1)で行うのが定石。

関連問題

CO-P20CO-P22