擬似言語のプログラムは、ほぼすべての行が「変数に値を入れる」ことをしています。だから ← の読み方を正確にしておくと、そのあとが全部楽になります。この回では 整数型: x ← 1 の1行を分解し、代入で前の値が消えることを実際に動かして確かめます。
変数を宣言する ── コロンの前が型
出典:擬似言語の記述形式(基本情報技術者試験用)
- 型名: 変数名
- 変数を宣言する。
- 変数名 ← 式
- 変数に式の値を代入する。
コロンの前が型、後ろが名前です。多くの言語と語順は同じですが、間にコロンが入ります。実際の出題では、こう書かれます。
| 実際に出てくる書き方 | 読み方 |
|---|---|
整数型: i |
整数型の変数 i を用意する |
整数型: top, i |
カンマで区切って2つまとめて用意する。top も i も整数型 |
整数型: 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 |
| 論理型 | true か false |
論理型: 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行を実行すると a と b はどうなりますか。
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文で書くことがあります。
出典:令和5年度 基本情報技術者試験 科目B 公開問題 問3
data[i]とdata[j]の値を入れ替える
擬似言語では、← のような記号だけでなく、処理そのものが日本語で書かれることがあります。outの末尾 に in[1]の値 を追加する も同じ形です。書いてあるとおりに解釈すれば正解にたどりつくように作られています。
実際の出題では、配列の要素を1つずつ後ろへずらすという処理がよく出ます。このとき順番を間違えると、まだ使う値を先に上書きして壊してしまいます。いま a と b で起きたことが、そのまま配列で起きるわけです。
整数型: 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 ← b/b ← a で入れ替わると思う |
1行目で a の値が消える。避難用の変数がいる |
| 宣言しただけの変数を 0 だと思う | 値を入れるまでは未定義。0 でも空文字でもない |
| 見たことのない型が出て手が止まる | 問題文に定義が書いてある(例:8ビット型) |
i ← i + 1 が読めない |
右を先に計算して、その結果を左へ入れ直す |
次に読む
本記事で引用した出典:擬似言語の記述形式(基本情報技術者試験用)/基本情報技術者試験 シラバス Ver9.2(2026年1月8日)/令和5年度・令和6年度・令和8年度 基本情報技術者試験 科目B 公開問題(独立行政法人情報処理推進機構)。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。a と b を入れ替える例題は当サイトのオリジナルです。

