基本情報技術者試験 科目B サンプル問題 問1の解説|代入は上書きされる

基本情報技術者試験

科目B サンプル問題 問1難易度 ★擬似言語・変数と代入最終更新 2026-09-22

科目Bのいちばん最初に置かれている問題です。7行しかなく、配列も繰返しも出てきません。それでも間違える人が出るのは、← が「入れる」ではなく「上書きする」だからです。ここを取り違えたまま先へ進むと、あとの問題が全部ずれます。

難易度 ★(当サイトの目安)── 入れ替えの3行を上から実行するだけ。代入が「上書き」だと分かれば決まる。4段階の決め方は科目B 最短合格の戦略にあります。

出題

出典:基本情報技術者試験 科目B サンプル問題 問1

次の記述中の に入れる正しい答えを,解答群の中から選べ。

プログラムを実行すると,“”と出力される。

〔プログラム〕

整数型: x ← 1
整数型: y ← 2
整数型: z ← 3
x ← y
y ← z
z ← x
yの値 と zの値 をこの順にコンマ区切りで出力する

解答群

ア 1,2イ 1,3ウ 2,1

エ 2,3オ 3,1カ 3,2

答えだけ先に見る

正解は カ(3,2)。決め手は6行目の z ← x で、このときの x はもう 1 ではありません。

この問題を解くのに要る文法

使われているのは宣言と代入だけです。詰まった要素があれば、先にそこだけ拾ってください。

プログラムの読み方 ── 上から1行ずつ、それだけ

この問題には ○ で始まる行がありません。部品に分かれていない、7行のプログラムです。だから読み方は単純で、1行目から順に、書いてあるとおりに実行するだけです。

そのうえで、← の読み方だけ間違えないでください。

← は「右の値を、左の箱に上書きする」

x ← y→ y のいまの値を読んで、x に上書きする

y のほうは変わりません。そして x に元から入っていた値は、消えます。戻せません。

数学の = のような「等しい」ではありません。右から左への一方通行の書き込みです。矢印の向きがそのまま意味を表しています。

1行ずつ追う

x の箱がいつ書き換わるかを見てください。6行目に来たとき、そこに何が入っているかが答えを決めます。

トレースシミュレータ 7行を1行ずつ追う

出典:科目B サンプル問題 問1


ループ開始前

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

答え

正解は カ(3,2)

x ← yx は 1 → 2 に(1 は消える)

y ← zy は 2 → 3 に

z ← xx はいま 2 なので、z は 3 → 2 に

出力するのは y と z なので 3,2。x は出力されません。

選んだ答え どこで間違えたか
オ 3,1 いちばん多い誤り。6行目の z ← x で、x をまだ 1 だと思っている。4行目で上書きされたことを見落とした形
エ 2,3 x と y を出力してしまった形。出力するのはy と z。問題文の指定を読み違えている
ア 1,2 4〜6行目を実行していない(宣言時の値をそのまま答えた)形
ウ 2,1 代入の向きを逆に読んだ形。x ← y は「x を y に入れる」ではありません
カ 3,2 正解。上書きされたあとの値を、そのつど読み直せている

1行変えると、答えはどうなるか

この出題は6行目の z ← x だけで決まっています。そこを1行変えたらどうなるか、自分で追ってみてください。

出題の6行目だけを z ← x から z ← 1 に変えました。出力は何になりますか。

整数型: x ← 1
整数型: y ← 2
整数型: z ← 3
x ← y
y ← z
z ← 1          ← ここだけ変えた
yの値 と zの値 をこの順にコンマ区切りで出力する
入れ替えたいときの正しい書き方

この出題の3行は、入れ替えているように見えて入れ替わっていません。2つの箱の中身を本当に入れ替えるには、先に片方を別の箱へ逃がす必要があります。

その書き方と、なぜそうなるのかは G2-3 代入「←」 で扱っています。実際の出題では、この「逃がす行」が空欄になります。

次に読む

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

6行目を z ← 1 に変えた類題は当サイトのオリジナルです。

Copied title and URL