基本情報技術者試験の科目Bに出てくる擬似言語は、この試験のためだけに作られた書き方です。JavaでもPythonでもないので、誰もが「初めて見る言語」で受験することになります。ただし覚えることは多くありません。この記事で、擬似言語の全体像をつかんでください。
擬似言語は「試験用の書き方」
科目Bで扱うプログラム言語は、IPAが次のように決めています。
出典:情報処理技術者試験 試験要綱 Ver5.6(2026年7月6日)基本情報技術者試験 科目B 出題範囲
注記 プログラム言語について,基本情報技術者試験では擬似言語を扱う。
特定の言語を知っていることは前提にされていません。裏を返せば、プログラミング経験者でも、擬似言語の書き方は読み直す必要があるということです。代入が ← だったり、配列の要素番号が1から始まったりと、見慣れた言語とは違うところがあります。
擬似言語の書き方をまとめた表は、問題冊子の2〜3ページ目に毎回載っています。暗記は必要ありません。
ただし試験時間は100分で20問。本番で表を読み込む時間はありません。だから事前に読み慣れておくのです。この記事はそのための1枚です。
記述形式の全体像 ── これで全部です
擬似言語の書き方は、次の10個の形式と、4つの決めごとだけです。これ以外の書き方は出てきません。
出典:擬似言語の記述形式(基本情報技術者試験用)
擬似言語を使用した問題では,各問題文中に注記がない限り,次の記述形式が適用されているものとする。
〔擬似言語の記述形式〕
- ○手続名又は関数名
- 手続又は関数を宣言する。
- 型名: 変数名
- 変数を宣言する。
-
/* 注釈 */ // 注釈
- 注釈を記述する。
- 変数名 ← 式
- 変数に式の値を代入する。
- 手続名又は関数名(引数, …)
- 手続又は関数を呼び出し,引数を受け渡す。
-
if (条件式1) 処理1 elseif (条件式2) 処理2 elseif (条件式n) 処理n else 処理n+1 endif
- 選択処理を示す。
条件式を上から評価し,最初に真になった条件式に対応する処理を実行する。以降の条件式は評価せず,対応する処理も実行しない。どの条件式も真にならないときは,処理n+1を実行する。
各処理は,0 以上の文の集まりである。
elseif と処理の組みは,複数記述することがあり,省略することもある。
else と処理n+1の組みは一つだけ記述し,省略することもある。 -
while (条件式) 処理 endwhile
- 前判定繰返し処理を示す。
条件式が真の間,処理を繰返し実行する。
処理は,0 以上の文の集まりである。 -
do 処理 while (条件式)
- 後判定繰返し処理を示す。
処理を実行し,条件式が真の間,処理を繰返し実行する。
処理は,0 以上の文の集まりである。 -
for (制御記述) 処理 endfor
- 繰返し処理を示す。
制御記述の内容に基づいて,処理を繰返し実行する。
処理は,0 以上の文の集まりである。
これに加えて、次の4つが決められています。
出典:擬似言語の記述形式(基本情報技術者試験用)
〔演算子と優先順位〕
| 演算子の種類 | 演算子 | 優先度 |
|---|---|---|
| 式 | () . |
高 |
| 単項演算子 | not + - |
↑ |
| 二項演算子(乗除) | mod × ÷ |
↑ |
| 二項演算子(加減) | + - |
↑ |
| 二項演算子(関係) | ≠ ≦ ≧ < = > |
↑ |
| 二項演算子(論理積) | and |
↑ |
| 二項演算子(論理和) | or |
低 |
注記 演算子 . は,メンバ変数又はメソッドのアクセスを表す。
演算子 mod は,剰余算を表す。
※ 原典では優先度の欄が上下1本の矢印で示されています。ここでは行ごとに ↑ で置き換えています。
〔論理型の定数〕
true,false
〔配列〕
配列の要素は,“[”と“]”の間にアクセス対象要素の要素番号を指定することでアクセスする。なお,二次元配列の要素番号は,行番号,列番号の順に“,”で区切って指定する。
“{”は配列の内容の始まりを,“}”は配列の内容の終わりを表す。ただし,二次元配列において,内側の“{”と“}”に囲まれた部分は,1 行分の内容を表す。
〔未定義,未定義の値〕
変数に値が格納されていない状態を,“未定義”という。変数に“未定義の値”を代入すると,その変数は未定義になる。
プログラムの中に endwhile と書かれた行がありました。何の終わりを示していますか。
他の言語との違い ── ここだけ先に押さえる
プログラミングの経験があるほど、うっかり読み飛ばしてしまう違いがあります。
| 擬似言語 | よくある言語 | 気をつけること |
|---|---|---|
x ← 1 |
x = 1 |
代入は ←。= は等しいか調べるほうの意味 |
整数型: x |
int x; |
型を先に、コロンのあとに変数名 |
a[1] が先頭 |
a[0] が先頭 |
要素番号は1から。問題文にも毎回書かれる |
endif endwhile endfor |
} |
閉じ方が処理ごとに違う。どれで閉じているかで種類が分かる |
mod |
% |
剰余算。「割った余り」 |
i を 1 から n まで 1 ずつ増やす |
for(i=1;i<=n;i++) |
回し方が日本語で書いてある |
足し算は +、掛け算は ×、比較は < > ≦ ≧ ≠ と、算数で習った記号がそのまま使われます。<= や != のような書き方は出てきません。
擬似言語で x = 1 と書かれているとき、これは何を表しますか。
配列 a の先頭の要素を指すのはどれですか。
実際に1問読んでみる
説明はここまでです。いちばん簡単な出題を1問、実際に読んでみましょう。使う知識は「変数の宣言」と「代入」だけです。
出典:基本情報技術者試験 科目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)。なぜそうなるのかは、このあと1行ずつ動かして確かめます。
読み方の順番
1〜3行目は宣言と同時に代入しています。整数型: x ← 1 は「整数型の変数 x を用意して、1 を入れる」という意味です。
4〜6行目が本題です。x ← y は「y の値を x に入れる」。矢印の向きどおり、右から左へ値が移ります。
ここでの落とし穴は6行目の z ← x。このとき x には、4行目で書き換えられたあとの値が入っています。最初の 1 ではありません。
追う前に、ひとつ予想してみましょう
6行目 z ← x を実行したあと、z の値はいくつになりますか。
実際に1行ずつ動かして確かめます。右側の変数の箱が、どの行で書き換わるかを見てください。
トレースシミュレータ 代入で値が入れ替わる
出典:科目B サンプル問題 問1
ループ開始前
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
出力されるのは y と z の値、つまり 3,2。正解は カ です。
オ 3,1 は、6行目の x をまだ 1 だと思ってしまった人の答えです。誤答の選択肢は、どこで間違えたかに対応して作られています。
この先の読み進め方
擬似言語の書き方は、上の1枚で全部です。あとは1つずつ、実際に動かして体に入れるだけです。第1部では記述形式の要素を1回に1つずつ扱います。
整数型: x ← 1 の読み方○ の意味・引数・戻り値. でメンバ変数やメソッドを指す(準備中)次に読む
本記事で引用した出典:擬似言語の記述形式(基本情報技術者試験用)/情報処理技術者試験 試験要綱 Ver5.6(2026年7月6日)/基本情報技術者試験 科目B サンプル問題 問1(独立行政法人情報処理推進機構)。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

