擬似言語の変数宣言と型・代入|「←」で値が上書きされる【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-08-14

擬似言語のプログラムは、ほぼすべての行が「変数に値を入れる」ことをしています。だから の読み方を正確にしておくと、そのあとが全部楽になります。この回では 整数型: x ← 1 の1行を分解し、代入で前の値が消えることを実際に動かして確かめます。

変数を宣言する ── コロンの前が型

出典:擬似言語の記述形式(基本情報技術者試験用)

型名: 変数名
変数を宣言する。
変数名
変数にの値を代入する。

コロンの前が型、後ろが名前です。多くの言語と語順は同じですが、間にコロンが入ります。実際の出題では、こう書かれます。

実際に出てくる書き方 読み方
整数型: i 整数型の変数 i を用意する
整数型: top, i カンマで区切って2つまとめて用意する。topi も整数型
整数型: itemCount ← 0 用意すると同時に、右の値を入れる
整数型の配列: data 整数型の配列を用意する(→ G4で扱います)
宣言と代入は別のこと

整数型: len ← dataの要素数 は、「箱を用意する」と「箱に値を入れる」を1行でやっているだけです。整数型: i のように箱だけ用意する書き方もあり、そのとき中身は空です(=未定義。後述)。

整数型: i, tail は何を宣言していますか。

どんな型が出てくるか

試験で扱われる型は、次のように定められています。

出典:基本情報技術者試験 シラバス Ver9.2(2026年1月8日)3.プログラミング(1)③ データ型と変数

プログラム言語で使用される代表的なデータ型と,変数の概念を理解する。

用語例 整数型,実数型,論理型,文字型,文字列型,抽象データ型,構造型,代入

擬似言語のプログラムの中では、次の形で書かれます。

入るもの 書かれ方の例
整数型 1, 0, -3 などの整数 整数型: i, tail
実数型 小数を含む数 実数型: valueL, maxL ← -∞
文字型 1文字 文字型の配列: data
文字列型 文字の並び 文字列型: relatedItem
論理型 truefalse 論理型: divideFlag

出典:擬似言語の記述形式(基本情報技術者試験用)

〔論理型の定数〕

true,false

論理型に入るのはこの2つだけです。「できたら true、できなかったら false を返す」という関数は、実際の出題でよく出てきます。

型は問題文が決めることもある

使える型は記述形式に列挙されていません。その問題だけで通用する型が、問題文で定義されることがあります。

出典:令和8年度 基本情報技術者試験 科目B 公開問題 問2

関数complement は,引数として渡された8 ビット型の値x について,x に加算すると00000000 になる値を返す。8 ビット型の加算は,値を符号なし2 進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。

○8ビット型: complement(8ビット型: x)
  8ビット型: y

8ビット型 は記述形式にもシラバスにも出てきません。見たことのない型が出てきたら、問題文に定義が書いてあります。そこを読めば必ず解けるようになっています。

ある問題文に「8ビット型」の説明がありました。そのプログラムに次の行があります。何をしていますか。
8ビット型: y

← は「右の値を、左の箱に入れる」

順番が大事です。先に右側を計算して、その結果を左の箱に入れます。

書き方 何が起きるか
x ← 5 x の箱に 5 が入る
x ← y y中身をコピーして x に入れる。y は変わらない
i ← i + 1 先に i + 1 を計算し、その結果を i に入れ直す。1増える
x = 5 これは代入ではない。「x は 5 か?」と調べている
代入すると、前の値は消える

箱に入るのは1つだけです。x ← y をした瞬間、x に入っていた値はどこにも残りません。この当たり前のことが、次の場面で効いてきます。

動かす前に、ひとつ予想してみましょう

a が 3、b が 7 のとき、次の2行を実行すると ab はどうなりますか。
a ← b と書いて、次の行に b ← a と書きます。

実際に動かして確かめます。

トレースシミュレータ 入れ替えたつもりが失敗する

当サイトオリジナルの例題


ループ開始前

いま計算していること

まだ計算していません

変数の状態

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

入れ替えるには、もう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

この「一時的に避難させる変数」は、整列(ソート)の問題で必ず出てきます。

日本語の1文で書かれることもある

入れ替えを、擬似言語では次のように日本語の1文で書くことがあります。

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問3

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

擬似言語では、 のような記号だけでなく、処理そのものが日本語で書かれることがあります。outの末尾 に in[1]の値 を追加する も同じ形です。書いてあるとおりに解釈すれば正解にたどりつくように作られています。

同じことが配列でも起きる

実際の出題では、配列の要素を1つずつ後ろへずらすという処理がよく出ます。このとき順番を間違えると、まだ使う値を先に上書きして壊してしまいます。いま ab で起きたことが、そのまま配列で起きるわけです。

配列は G4、繰返しは G6 で扱います。この回では「代入は上書きである」だけ持って帰ってください。

整数型: x ← 5 の次の行に x ← x + 3 と書きました。実行後の x はいくつですか。

箱を用意しただけの変数は「未定義」

出典:擬似言語の記述形式(基本情報技術者試験用)

〔未定義,未定義の値〕

変数に値が格納されていない状態を,“未定義”という。変数に“未定義の値”を代入すると,その変数は未定義になる。

整数型: i と書いただけの i は未定義です。0 ではありません。実際の出題では、配列を「未定義の値」で埋めて用意する書き方も出てきます。

整数型の配列: work ← {(n1 + n2)個の 未定義の値}

出典:令和6年度 基本情報技術者試験 科目B 公開問題 問4

未定義そのものが答えを分ける問題もあります。詳しくはG11で扱います。

どこからでも使える変数 ── 大域

宣言の前に 大域: と付いた変数は、プログラム全体のどこからでも読み書きできます

大域: 整数型の配列: data ← {2, 1, 3, 5, 4}

出典:令和5年度 基本情報技術者試験 科目B 公開問題 問3

手続の中で data と書けば、この配列を指します。引数で渡されていないのに使えるので、「この変数どこから来た?」と迷ったら宣言部を見上げてください。詳しくはG10で扱います。

つまずきポイントまとめ

まちがえ方 正しい理解
を代入だと思う 代入は 等しいか調べるほう
a ← bb ← a で入れ替わると思う 1行目で a の値が消える。避難用の変数がいる
宣言しただけの変数を 0 だと思う 値を入れるまでは未定義。0 でも空文字でもない
見たことのない型が出て手が止まる 問題文に定義が書いてある(例:8ビット型)
i ← i + 1 が読めない 右を先に計算して、その結果を左へ入れ直す

次に読む

本記事で引用した出典:擬似言語の記述形式(基本情報技術者試験用)基本情報技術者試験 シラバス Ver9.2(2026年1月8日)/令和5年度・令和6年度・令和8年度 基本情報技術者試験 科目B 公開問題(独立行政法人情報処理推進機構)。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。ab を入れ替える例題は当サイトのオリジナルです。

Copied title and URL