擬似言語の代入「←」|値が上書きされるしくみと、入れ替えに箱がもう1つ要る理由【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠第1部 擬似言語の読み方 G2-3最終更新 2026-10-17

科目Bのプログラムでいちばん多く出てくる記号が ← です。そしていちばん多くの人がつまずくのもここです。

期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円2,600円中身を見る ›

この回の内容を動画で見る

講義「擬似言語の地図と、変数・型・代入」(全9分25秒)のうち、この記事の内容は 4分40秒ごろから始まります(再生するとそこから流れます)。

← は「入れる」ではなく「上書きする」。この違いが分かると、科目Bのプログラムは書き出して追えるものに変わります。

代入 ── ここでほぼ全員がつまずく

まず、間違ったプログラムを見てもらいます。

a に 3、b に 7 が入っています。この2つを入れ替えたいので、素直に書きました。

a ← b
b ← a

a が 3、b が 7 のとき、この2行を実行すると a と b はどうなりますか。

1行ずつ動かして確かめます。a の中身がいつ消えるかに注目してください。

入れ替えたつもりが、入れ替わらない

当サイトオリジナル


ループ開始前

いま計算していること

まだ計算していません

変数の状態

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

なぜこうなるのか ── ← は「入れる」ではなく「上書きする」

← は「右の値で、左の箱を上書きする」という意味です。箱に入るのは1つだけ。新しい値を入れれば、前の値はどこにも残りません。

代入は、①右側の式を先に計算し、②その値を変数に書き込み、③変数に入っていた値は消える

代入で起きること。値を追うときは、この3つを毎回あてはめる

数学の =(等しい)ではありません。右から左への一方通行の書き込みです。

a←bを実行する前・実行するとき・実行したあとの3コマ。bの値7のコピーがaに入り、aに入っていた3は箱から落ちて消える

代入の3コマ。a と b がつながるのではなく、値のコピーが入って前の値が消える

よくある思い違い ── a ← b は「a と b が同じになる」ではない

a ← b を、「a と b がつながって、以後どちらかが変わればもう一方も変わる」と読んでしまう人がいます。そうはなりません。

起きているのは、そのときの b の値のコピーが a に入ることだけです。書き込みが終われば、2つの箱に関係はありません。あとで b が変わっても、a は変わりません。

そして値のコピーが入るぶん、a に入っていた値は押し出されて消えます。取り戻す方法はありません。

正しく入れ替えるには、箱がもう1つ要る

値を失わないためには、先に退避させてから上書きするしかありません。

整数型: tmp
tmp ← a        // a の 3 を退避させる
a ← b          // a に 7 が入る(3 は tmp にある)
b ← tmp        // b に 3 を戻す

// のうしろは注釈で、実行されません。読む人のためのメモです。

実行した行 a b tmp
(開始) 3 7 未定義
tmp ← a 3 7 3
a ← b 7 7 3
b ← tmp 7 3 3
この3行は、整列(ソート)でよく使う

「一時的に退避させる変数」は、値を入れ替えて並べる整列(ソート)のプログラムによく出てきます。

実際の出題では、入れ替えが日本語の1文で書かれることもあります。

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問3(プログラムの一部)

data[i]とdata[j]の値を入れ替える

擬似言語では、← のような記号だけでなく、処理そのものが日本語で書かれることがあります。書いてあるとおりに解釈すれば正解にたどりつくように作られています。

a が 3、b が 7 のとき、2つの値を入れ替えたい(tmp は整数型で宣言済み)。空欄 ▭ に入るのはどれですか。

tmp ← b
▭
a ← tmp

自分自身を使う代入 ── x ← x + 3 が読めない

矢印の両側に同じ名前が出てくる形があります。数学の式として読むと意味が通らないので、多くの人がここで止まります。

x ← x + 3

図「代入で起きること」の3つを、そのままあてはめるだけです。x が 5 だとします。

① 右側 x + 3 を計算5 + 3 = 8(このとき x はまだ 5)

② その 8 を x に書き込むx は 8 になる

③ 元の 5 は消えるどこにも残らない

「x と x + 3 が等しい」という意味ではありません。右を計算して、左に入れ直しているだけです。

この形は科目Bのほとんどの問題に出ます。とくに次の3つは、見た瞬間に意味が浮かぶまで慣れておいてください。

書き方 読み方 どこで出るか
i ← i + 1 i を1つ増やす 繰返しで「次へ進む」ときの定番(繰返しは G6-1)
total ← total + x total に x を足し込む 合計を求めるときの定番
count ← count + 1 数を1つ数える 条件に合うものを数えるときの定番

どれも同じ箱を読んで、計算して、同じ箱に書き戻しています。動かして確かめます。

右側を先に計算してから、左に入れる

当サイトオリジナル


ループ開始前

いま計算していること

まだ計算していません

変数の状態

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

次の2行を実行したあと、count はいくつですか。

整数型: count ← 7
count ← count + count

次の4行を実行したあと、b はいくつですか。

整数型: a ← 4
整数型: b ← a
a ← a + b
b ← a

次の7行を実行したあと、total はいくつですか。

整数型: total ← 0
整数型: x ← 3
total ← total + x
x ← 5
total ← total + x
x ← 2
total ← total + x

トレース ── 変数の値を書き出しながら読む

ここまでで分かったことが、そのまま科目Bの解き方につながります。

なぜ暗算で解けないのか

代入は上書きです。つまり同じ変数名でも、行によって中身が違います。「x はいくつだったか」は、何行目の話かを言わないと決まりません。

人間の頭は、これを数行しか保持できません。実際、7行しかないサンプル問題 問1 でも間違える人が出ます ── 6行目で、x がすでに書き換わっていることを見落とすからです。

だから科目Bは、変数の値を書き出しながら読みます。これをトレースといいます。暗算しないと決めた時点で、この試験はかなり解きやすくなります。

このページのシミュレータがやっていたのは、トレース表を自動で書いていただけです。自分の手で同じことができれば、本番でも同じ精度で解けます。

表の作り方、繰返しや配列があるときの書き方、本番で書く量を減らす判断は、次のページにまとめてあります。

つまずきポイントまとめ

まちがえ方 正しい理解
= を代入だと思う 代入は ←。= は等しいか調べるほう
a ← b/b ← a で入れ替わると思う 1行目で a の値が消える。退避用の変数がいる
a ← b で 2つの箱が連動すると思う 入るのはそのときの値のコピー。あとで b が変わっても a は動かない
i ← i + 1 が読めない 右を先に計算して、その結果を左へ入れ直す
右側に書いた変数も書き換わると思う 右側は読まれるだけ。書き換わるのは矢印の左だけ
変数の値を頭の中で追う 書き出す(トレース)。上書きされるので、覚えていられない

次に読む

科目Bが難しいと感じたら、この順番で

読み方の基礎を固めてから、本番と同じ形の問題で試す。

1

まず、読み方の基礎

科目B 基礎講義

プログラムを1行ずつたどって、値の変わり方を見る。定番アルゴリズムの型をそろえる。

0円通常 2,600円先着100名・12月3日まで

講座の中身を見る ›

講義の目次と無料の1本を見てから、Udemy で0円で受講できます

2

次に、本番と同じ形で力試し

オリジナル模試 3回分

初見の問題を、本番と同じ時間で通して解く。

1,500円定価 2,600円

模試の中身を見る ›

この記事で引用した資料

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

「入れ替えたつもりの2行」と、2つのシミュレータで使った例は当サイトのオリジナルです。

タイトルとURLをコピーしました