CO-S06情報Ⅰ 対策問題

コンピュータとプログラミング思考・計算

次のプログラム(共通テスト用表記)を実行したとき、表示される値はどれか。 (1) x = 5 (2) y = 3 (3) x = x + y (4) y = x - y (5) 表示する(x, y)

解答・解説を見る

正解: 1

正答

1

この問題のポイント

変数のトレース(値の変化を順に追う) を問う問題です。「代入は右辺を今の値で計算する」が徹底できるかがカギです。

解説

変数は「値を入れておく箱」で、代入文「x = x + y」は数学の等式ではなく、「右辺(x + y)を今の値で計算し、その結果を左辺の変数xに入れ直す」という命令です。プログラムの動きを1行ずつ紙の上で追うことをトレースといい、共通テストのプログラム問題はすべてこの作業が土台になります。

1行ずつ変数の値を追います。

  1. (1) x = 5 → x=5
  2. (2) y = 3 → y=3
  3. (3) x = x + y → 右辺は今の値で 5 + 3 = 8 → x=8(yは3のまま)
  4. (4) y = x - y → 右辺は今の値で 8 - 3 = 5 → y=5(この時点のxは8であることに注意)
  5. (5) 表示する(x, y) → 8 と 5

最大の落とし穴は(4)です。xは(3)ですでに8に更新されているのに、うっかり古い値の5を使って 5-3=2 のように計算してしまうミスが起こりがちです。トレースでは「x」「y」の欄を持つ表を書き、1行実行するごとに値を書き換えていくと、この種のミスを防げます。

ちなみにこの3行(x=x+y、y=x-y、x=x-y)は、一時変数を使わずに2つの変数の値を交換するテクニックとしても知られています。共通テストでは「実行後の変数の値はどれか」という形で毎年のように問われるので、表を書いて追う習慣をつけましょう。

選択肢の確認

1.○ トレースすると x=8、y=5。
2.× 初期値のまま。(3)(4)の代入を追っていない。
3.× (4)で更新前の古いxを使うと y=3 のままと誤る。
4.× xとyの表示順を取り違えた値。

ここだけは覚えよう

代入=「右辺を今の値で計算して左辺に入れる」 — トレースは変数の表を書いて1行ずつ。

関連問題

CO-S05CO-S07