科目Bの解き方|擬似言語は9つの記述形式しかない
基本情報技術者試験でもっとも「差がつく」のが科目Bです。ただ、 覚えるべき文法は思っているより少ない——擬似言語の仕様が書かれたIPAの原典は A4で2ページ、記述形式は全部で9種類しかありません。 原文の一覧をそのまま示したうえで、仕様に書かれていないのに問題には出てくるもの、 読み方・トレースの手順・頻出のワナまで順に解説します。
科目Bとは(配点と内容)
科目Bは20問・100分・1,000点満点(基準点600点)。1問あたり5分の計算になります。 中心はアルゴリズムとプログラミングで、加えて情報セキュリティ分野からも出題されます。
IPAはサンプル問題の資料で、この2分野の比率を アルゴリズムとプログラミング8割/情報セキュリティ2割と示しています。 20問に当てはめるとアルゴリズム16問・情報セキュリティ4問が目安です。
なぜ「シンプルなのに難しい」のか
当サイトの取材で、受験者がこう表現していました。
「シンプルな構造すぎて、逆に難しいと感じる」
科目Bの問題文は複雑ではありません。難しさの正体は、短いコードのロジックを、頭の中で正確に最後まで追いきる集中力にあります。 これは知識の暗記では身につかず、手を動かした反復でしか鍛えられません。だから早めの着手が効きます。
「擬似言語の仕様」はどこに書いてあるのか
擬似言語の仕様を探すと、参考書・解説サイト・大学の講義資料まで大量に出てきますが、 原典は1つだけです。IPAの 「試験で使用する情報技術に関する用語・プログラム言語など」(Ver.5.1)に付いている 別紙2「擬似言語の記述形式(基本情報技術者試験,応用情報技術者試験用)」がそれです。
そしてこの別紙2は、A4で2ページしかありません。 置かれている見出しは次の5つだけで、これ以外に「仕様」と呼べるものはありません。
| 別紙2の見出し | 中身 |
|---|---|
| 〔擬似言語の記述形式〕 | 下の9種類の表(この記事に全部載せています) |
| 〔演算子と優先順位〕 | 7段階の優先順位表と、mod・. の注記 |
| 〔論理型の定数〕 | true,false の2語だけ |
| 〔配列〕 | [ ] でのアクセスと、{ } の意味。二次元は「行番号, 列番号」 |
| 〔未定義,未定義の値〕 | 3行の定義 |
バージョンは追いかけなくてよい(基本情報にとっては)
検索するとVer.5.0のPDFが上位に出てくることがあり、 「古い版を見てしまったのでは」と不安になります。当サイトで両方の別紙2を突き合わせたところ、 Ver.5.0とVer.5.1で、基本情報向けの中身は1文字も変わっていませんでした (2026年8月16日に確認)。
| 版 | 公開 | 適用 | 何が変わったか |
|---|---|---|---|
| Ver.5.0 | 2022年8月4日 | 2023年4月の試験から | 基本情報技術者試験の出題範囲変更への対応(=いまの科目Bの形式になった版) |
| Ver.5.1(現行) | 2023年11月6日 | 2024年4月の試験から | 応用情報技術者試験における擬似言語の記述形式の追加。別紙2の題名に「応用情報技術者試験用」が加わっただけで、 記述形式・演算子・配列・未定義の記載は同一 |
※版の比較は当サイトが両方のPDFを開いて突き合わせたものです。今後の改訂で変わる可能性はあるので、 不安ならIPAのシラバス一覧で最新版の番号だけ見てください。
ITパスポートの別紙1とは「2か所」だけ違う
同じPDFの中に別紙1(ITパスポート試験用)があり、これを見て覚えると取り違えます。 ただし実際に突き合わせると、違いは2か所だけでした。 9種類の記述形式そのものは、別紙1と別紙2で同一です。
| 項目 | 別紙1(ITパスポート) | 別紙2(基本情報・応用情報) |
|---|---|---|
| 記述形式9種類 | 同じ | 同じ |
| 演算子「式」の欄 | () のみ | () と .(メンバ変数・メソッドのアクセス) |
| 〔未定義,未定義の値〕 | 項目そのものが無い | あり |
この2か所は偶然ではありません。どちらもクラスとインスタンスを扱う問題のために要るものです。
基本情報の科目Bには、単方向リストのようにオブジェクトの参照をたどる問題が出るので、
. で次の要素を参照し、リストの終端を「未定義」で表す必要があります。
=別紙1で勉強すると、ここが丸ごと抜けます。
擬似言語の記述形式は9種類しかない(IPA原文)
前節の別紙2から、〔擬似言語の記述形式〕の表をそのまま整理したものです。載っているのは次の9種類だけで、 これ以外の書き方が出てきたらそれは仕様ではなく、問題文が定義しているものだと考えてください。
| 記述形式 | 意味 |
|---|---|
○手続名又は関数名 | 手続又は関数を宣言する |
型名: 変数名 | 変数を宣言する |
/* 注釈 *//// 注釈 | 注釈を記述する |
変数名 ← 式 | 変数に式の値を代入する |
手続名又は関数名(引数, …) | 手続又は関数を呼び出し、引数を受け渡す |
if/elseif/else/endif | 選択処理。条件式を上から評価し、最初に真になったものだけ実行する |
while (条件式)/endwhile | 前判定繰返し。条件式が真の間、処理を繰返す |
do/while (条件式) | 後判定繰返し。処理を実行してから条件を判定する |
for (制御記述)/endfor | 繰返し。制御記述の内容に基づいて処理を繰返す |
do 〜 while(後判定)です。 while 〜 endwhile は条件を先に見るので0回で終わることがあるのに対し、
do 〜 while は必ず1回は実行されます。
ここを取り違えると、ループ回数が1つずれて答えが変わります。
演算子と優先順位(これも公式に定められている)
同じ別紙2に、演算子の優先順位の表があります。上ほど優先度が高い順です。
| 種類 | 演算子 |
|---|---|
| 式(優先度:高) | () . |
| 単項演算子 | not + - |
| 二項演算子:乗除 | mod × ÷ |
| 二項演算子:加減 | + - |
| 二項演算子:関係 | ≠ ≦ ≧ < = > |
| 二項演算子:論理積 | and |
| 二項演算子:論理和(優先度:低) | or |
実務のプログラミング言語とほぼ同じ感覚で読めますが、関係演算子が and/or より先に評価される点は
条件式を読むときに効きます。a > 0 and b > 0 は括弧が無くても
(a > 0) and (b > 0) と解釈されます。
また mod(剰余)は乗除と同じ優先度で、. はメンバ変数やメソッドへのアクセスを表します。
配列・論理型・「未定義」
- 配列:
[と]の間に要素番号を書いてアクセスする。 二次元配列は「行番号, 列番号」の順にカンマ区切り(例:data[2, 3]) - 配列の内容:
{が始まり、}が終わりを表す。 二次元配列では、内側の{}に囲まれた部分が1行分 - 論理型の定数:
trueとfalse - 未定義:変数に値が格納されていない状態を「未定義」という。 「未定義の値」を代入すると、その変数は未定義になる
⚠️ 仕様に「書かれていない」のに、問題には出てくるもの
ここが擬似言語のいちばん厄介なところです。別紙2の冒頭には 「各問題文中に注記がない限り、次の記述形式が適用されているものとする」と書かれています。 裏を返すと、問題文の注記のほうが仕様より強いということです。 実際、IPAが公開している科目Bのサンプル問題を見ると、 別紙2に載っていない書き方がふつうに使われています。
| 問題で出てくるもの | 別紙2の記載 | どこで決まるか |
|---|---|---|
| 配列の要素番号の開始値 | 規定が無い | 問題文の注記(「配列の要素番号は1から始まる」など)。0始まりの可能性を排除できない |
÷ の切り捨て | 演算子表に ÷ はあるが切り捨ての規定は無い | 問題文。サンプル問題では「◯÷2 の商」のように式の中で明示されている |
| 型名(整数型・文字列型など) | 一覧が無い。「型名: 変数名」という書式だけ | 問題文。「整数型」「文字型」「整数型の配列」などがその場で使われる |
return | 記述形式の9種類に入っていない | 問題文。関数の戻り値を返す文として使われる |
for の制御記述の書き方 | 「制御記述の内容に基づいて」とあるだけで書式は未定義 | 問題文。「i を 1 から n まで 1 ずつ増やす」のような日本語で書かれる |
| 配列の要素数の取得 | 規定が無い | 問題文。「配列名の要素数」という書き方で使われる |
大域(グローバル変数)の宣言 | 規定が無い | 問題文。「大域: 型名: 変数名」の形で宣言される |
| クラス・メンバ変数・コンストラクタ | . 演算子と「未定義」しか無い | 問題文。クラスの説明が図や表で毎回添えられる |
| 条件式の日本語表記 | 演算子表には ≦ ≧ = がある | 問題文。実際には「age が 3 以下」のように日本語で書かれることがある |
※上の「問題で出てくるもの」は、IPAが公開している科目Bのサンプル問題で当サイトが確認した書き方です (問題文そのものは転載していません)。今後の出題でこのとおりとは限りません。
解く手順:トレース表を作る
おすすめは、変数の値の変化を表にして書き出す方法です。たとえば「各桁の合計を求める」次のコードを、n=1234 で追ってみます (この問題では、÷ は商の整数部を求めるものとします)。
○整数型: digitSum(整数型: n)
整数型: s
s ← 0
while (n > 0)
s ← s + (n mod 10)
n ← n ÷ 10
endwhile
return s | ループ回数 | n mod 10 | s(合計) | n ÷ 10 後のn |
|---|---|---|---|
| 1回目 | 4 | 4 | 123 |
| 2回目 | 3 | 7 | 12 |
| 3回目 | 2 | 9 | 1 |
| 4回目 | 1 | 10 | 0 |
n が 0 になって while を抜け、戻り値は 10。こうして1行ずつ・1変数ずつ書き出せば、複雑に見える問題も必ず追えます。
配列を扱う場合のトレース
配列が出てくると、追う対象が「変数」だけでなく「いま見ている要素番号」に増えます。
要素番号の列を必ず作るのがコツです。次は「最大値の要素番号を返す」コードで、
data が {3, 9, 9, 2}、要素番号は1から始まるものとします。
○整数型: maxIndex(整数型の配列: data)
整数型: i, mi
mi ← 1
for (i を 2 から dataの要素数 まで 1 ずつ増やす)
if (data[i] > data[mi])
mi ← i
endif
endfor
return mi | i | data[i] | data[mi] | 条件 data[i] > data[mi] | 更新後の mi |
|---|---|---|---|---|
| 2 | 9 | 3 | 真 | 2 |
| 3 | 9 | 9 | 偽(等しいので更新しない) | 2 |
| 4 | 2 | 9 | 偽 | 2 |
戻り値は2。ここで効いているのが3行目です。
条件が >(厳密)なので、同じ値 9 が並んでも最初に見つけたほうが残ります。
これが ≧ だったら答えは3に変わります。
等号の有無だけで答えが変わる——科目Bの典型的な出題ポイントです。
頻出のワナ(ここで失点する)
- 「値」と「位置(添字)」の取り違え:最大値を探す問題で、返すのが値なのか要素番号なのかを最後まで意識する。上の例なら、値なら9、要素番号なら2。
- 「>」と「≧」の違い:同じ値が並んだとき、厳密な「>」なら更新されず、最初の要素が残る。等号の有無で答えが変わる。
- ループの境界:「1から n まで」なのか「2から」なのか、開始・終了の1つのズレが致命傷になる。
- 前判定と後判定:
whileは0回で終わりうるが、do 〜 whileは必ず1回実行される。 - 要素番号の開始値を確認しないまま始める:問題文の注記を読む(上記のとおり公式の記述形式には規定が無い)。
- 条件式の優先順位:
and/orより関係演算子が先に評価される。括弧が無くても慌てない。
前判定と後判定の違いのように「回数がずれる」タイプは、動かして見るのがいちばん早いです → 擬似言語トレース練習(1行ずつ動かす)
情報セキュリティ分野の対策
科目Bにはアルゴリズム以外に情報セキュリティも出ます(20問中4問が目安)。 こちらは用語と典型的な対策の理解が中心で、 アルゴリズムより短期で得点源にしやすい分野です。認証・暗号・マルウェア・アクセス制御といった頻出テーマを、科目Aの学習と兼ねて押さえておきましょう。 演習は セキュリティ 練習問題(科目A型4問+科目B型4問)でできます。
練習のしかた
- まずはトレース表を紙に書き、確実に正解を出せるようにする(書き方が定まらないうちは 擬似言語トレース練習で、1行ごとに変数がどう変わるかを見ながら真似をするのが早い)
- 同じ型(探索・集計・整列など)の問題を繰り返し、パターンを体に入れる
- 慣れてきたら表を省略し、時間を計って「読み切る速さ」を鍛える(1問5分が基準)
ただし科目Bは、IPAが公開している問題が全部で50問しかありません(本番およそ2.5回分)。 繰り返すうちに答えを覚えてしまうので、正答率は指標になりません。 入手できる問題の内訳と、少ない問題数で仕上げる進め方は 科目Bの過去問は50問だけで詳しく解説しています。
問題数が足りないぶんは、1問を改造して増やすのが有効です。
条件を > から ≧ に変えたら答えはどう変わるか、
要素番号を0始まりにしたらどこが壊れるか、while を do 〜 while に置き換えたら回数はどうなるか。
この記事で挙げたワナが、そのまま改造のネタになります。
それでも科目Bだけ伸び悩むなら(必要な人だけ)
無料の練習問題と過去問で多くの人は十分戦えます。そのうえで「科目Bの読解だけがどうしても伸びない」人向けの、任意の補強策です。 判断の考え方は 独学か講座か(お金を払う価値があるのは科目Bだけ) にまとめました。
よくある質問
科目Bはプログラミング経験がないと解けませんか?
特定の言語の経験は不要です。科目Bは共通の「擬似言語」で出題され、変数・代入・条件分岐・繰り返しといった基本を読み取れれば解けます。むしろ「1行ずつ正確に追う(トレース)」訓練の方が重要です。
トレースが苦手です。速くする方法は?
慣れが最大の近道です。まずは紙に変数の値の変化を書き出す「トレース表」で確実に追えるようにし、同じ型の問題を繰り返すうちに、頭の中だけで追えるようになっていきます。速さは正確さの後からついてきます。
擬似言語の記述形式はITパスポート試験と同じですか?
IPAの資料には「別紙1 ITパスポート試験用」と「別紙2 基本情報技術者試験、応用情報技術者試験用」が別々に載っています。ただし当サイトで両方を突き合わせたところ、記述形式の9種類そのものは同一で、違いは2か所だけでした。別紙2にだけ、メンバ変数やメソッドにアクセスする「.」演算子と、「未定義、未定義の値」の項目があります。どちらもクラスを扱う問題で必要になるものなので、ITパスポート向けの解説で覚えるとそこが抜けます。応用情報技術者試験とは完全に共通なので、上位試験へ進むときはそのまま使えます。
擬似言語で使えるプログラム言語の知識は、どの言語のものが近いですか?
どれか特定の言語に合わせて覚える必要はありません。IPAの記述形式は代入が「←」、条件分岐が if / elseif / endif、繰返しが while / do 〜 while / for という、どの言語にも共通する骨組みだけで構成されています。むしろ普段使っている言語の癖のほうが邪魔になることがあり、たとえば C 系の言語に慣れていると配列を0始まりだと思い込みがちですが、擬似言語の仕様に開始値の規定はありません。なお情報処理安全確保支援士試験ではC++・Java・ECMAScriptという実在の言語が出題されますが、基本情報の科目Bで扱うのは擬似言語だけです。
科目Bの問題文は電卓やメモを使って解いてよいのですか?
試験会場では備品のメモ用紙とボールペンが配られ、それを使って解けます。ただし自前の筆記用具は持ち込めず、メモ用紙は科目Aと科目Bの間で回収されて新しいものが配られます。当日の持ち物の詳細は持ち物ガイドにまとめています。
出典・ご注意
- IPA 基本情報技術者試験(試験要綱・出題範囲)
- IPA 「試験で使用する情報技術に関する用語・プログラム言語など」Ver.5.1(別紙2 擬似言語の記述形式)
- IPA 「試験で使用する情報技術に関する用語・プログラム言語など」Ver.5.0(別紙2 基本情報技術者試験用)
- IPA 試験要綱・シラバスなど(用語・プログラム言語などの最新版)
- IPA 基本情報技術者試験 科目B サンプル問題(出題分野の比率)
擬似言語の記述形式・演算子の優先順位は、IPAが公開している「試験で使用する情報技術に関する用語・プログラム言語など」Ver.5.1の別紙2(基本情報技術者試験、応用情報技術者試験用)を2026-08-07に確認した内容です。別紙1(ITパスポート試験用)との違い2か所、およびVer.5.0との比較は、当サイトが両方の原文を2026年8月16日に突き合わせた結果であり、IPAが差分として公表しているものではありません。「仕様に書かれていないのに問題には出てくるもの」は、IPAが公開している科目Bのサンプル問題で確認した範囲の観察で、今後の出題を保証するものではありません。記述形式は改訂されることがあるため、最新版はIPA公式でご確認ください。掲載しているコードとトレース例は当サイトが作成したオリジナルで、IPAの公開問題を転載したものではありません。出題数・時間・比率は執筆時点の公表内容にもとづく目安です。
最終更新日: