科目Bで足が止まる人の多くは、アルゴリズムの才能ではなく 「擬似言語の読み方」でつまずいています。 擬似言語は外国語に似ていて、文法と読む順番の型さえ身につければ、 あとは練習量の問題です。この記事では科目Bの構造と、 擬似言語を読むための3つの型を例題つきで解説します。
科目Bの構造 — 敵を知る
科目Bは20問を100分で解きます。1問あたり5分。 出題の大半はアルゴリズムとプログラミングで、残りが情報セキュリティです。 つまり擬似言語のトレースができるかどうかが科目Bの合否をほぼ決めます。 逆に言えば、対策する対象は驚くほど絞られています。
覚える構文は5つだけ
擬似言語の構文は、本質的には次の5つしかありません。
- 代入 — x ← 5 (xに5を入れる)
- 条件分岐 — if / elseif / else (もし〜なら)
- 繰り返し — for / while (〜の間くり返す)
- 配列 — A[1], A[2], … (番号つきの箱の列)
- 関数 — 引数を受け取り、値を返す処理のまとまり
プログラミング経験がなくても、この5つは日常の言葉に置き換えられます。 「←」は「入れる」、forは「番号を進めながらくり返す」。 構文で分からないものが出たら、まず日本語に訳してみてください。
型①: トレース表を書く
擬似言語読解の基本動作はトレース、 つまり変数の中身を1行ずつ追いかけることです。頭の中でやろうとせず、表に書きます。
○整数型: f(整数型: n)
x ← 0
for (i を 1 から n まで 1 ずつ増やす)
x ← x + i
endfor
return x
f(4) を呼んだときの動きをトレース表にすると、こうなります。
開始時: x = 0
i = 1 のあと: x = 1
i = 2 のあと: x = 3
i = 3 のあと: x = 6
i = 4 のあと: x = 10 → return 10
この関数は「1からnまでの合計」を計算していました。 トレースを書き終えてから目的が見える — 最初はそれで構いません。 練習を重ねると、書く前に見えるようになります。
型②: 変数に役割の名前をつける
トレースに慣れたら、次は変数の役割を推測します。 擬似言語の変数名はxやiなど素っ気ないものが多いですが、 役割は数パターンに決まっています。
- カウンタ — iやj。ループの回数や配列の位置を指す
- 累積 — 合計や積を貯めていく変数。0や1で初期化される
- 暫定チャンピオン — 最大値・最小値を保持する変数。比較して更新される
- フラグ — 見つかったかどうかを覚える真偽値
「xは累積、iはカウンタ」と名前をつけた瞬間、コードは文章として読めはじめます。 初期化の値(0か1か、最初の要素か)は役割を見分ける大きなヒントです。
型③: 境界だけ丁寧に読む
設問の選択肢はループの境界を突いてきます。 「1から」なのか「0から」なのか、「n まで」なのか「n-1 まで」なのか、 「以上」なのか「より大きい」なのか。 全行を等しく丁寧に読む必要はありません。 初回の1周と最後の1周だけ実際にトレースする — これで境界ミスを誘う選択肢はほぼ排除できます。
もう1つの罠 — returnの位置
設問でもう1つ狙われるのがreturnの位置です。 同じ「配列から探す」処理でも、returnがループの中にあるか外にあるかで動きが変わります。
① forの中に if(A[i]が目的の値) return i → 見つけた瞬間に処理が終わる(早期終了)
② forの外で return 結果 → 配列を最後まで調べ終えてから返す
①は「最初に見つかった位置」を、②は「全体を調べた結果」を返します。 擬似言語を読み始めたら、まずreturnがどこにあるかを確認する — この癖だけで、動きの読み違いがぐっと減ります。
本番での時間戦略
1問5分のペースは、全問を最初から丁寧に解くには足りません。 セキュリティ問題(知識で即答しやすい)を先に確実に取り、 アルゴリズムはトレースが軽そうな問題から手をつける。 1問に8分かけて沼りそうなら、保留の印をつけて次へ。 詳しい時間配分は直前期と当日の戦略の記事で扱います。
頻出ミスまとめ
- 頭の中だけでトレースする — 3行を超えたら書く。書く方が速くて正確です
- 境界の読み飛ばし — 「1から」と「0から」、「まで」と「未満」は指でなぞって確認
- 配列の添字は1始まりが基本 — 擬似言語の配列は多くの場合 A[1] が先頭です(問題文の宣言を必ず確認)
- returnの位置の見落とし — ループの中のreturnか、外のreturnかで答えは変わります
擬似言語はアルゴリズムとプログラミングのカテゴリで 演習できます。この記事の3つの型を意識しながら5問解いてみてください。 トレース表が手癖になれば、科目Bは怖くありません。