擬似言語の読み方とトレース表作成術:アルゴリズムを1問5分で解き切る実戦解法
基本情報技術者試験(FE)は、2023年4月の新制度移行により、従来の午後試験から「科目B試験(多肢選択式・100分・全20問)」へと大きく生まれ変わりました。
特に大きな変更点が、従来のJava・Python・C言語・表計算などの個別言語選択が全廃され、全受験生が共通の「擬似言語によるアルゴリズム問題(16問・800点相当)」を解答しなければならなくなった点です。
「プログラミング未経験だからコードを読むのが怖い」「1問あたり平均5分で解き切るなんて無理…」と不安を感じる方も多いでしょう。しかし、擬似言語には決まった文法ルールと、機械的に正解を導き出す『トレース表(机上デバッグ)』の型が存在します。本記事では、初学者が最短で科目Bの合格ライン(600点)を突破するための実践的テクニックを徹底解説します。
1. 擬似言語の基本文法と見落とし厳禁の3大ルール
FE科目Bの擬似言語は、実在のプログラミング言語(CやJava)よりも文法が極めてシンプルに整理されています。まず以下の基本記号と構造を頭に入れましょう。
構文・演算子 | 記法例 | 処理の意味と着眼点 |
|---|---|---|
代入演算子 | x ← a + b | 左辺の変数に右辺の計算結果を格納する。数学の『等しい』ではなく『代入』である点に注意。 |
比較演算子 | a = b, a ≠ b, a ≦ b | 等しい(=)、等しくない(≠)、以上・以下。真(True)または偽(False)を返す。 |
論理演算 | and, or, not | 条件式の結合。短絡評価(前条件で確定した場合は後続を評価しない)にも留意。 |
前判定ループ | while (条件) do ... endwhile | 条件が真である間、処理を繰り返す。初回から偽なら1回も実行されない。 |
回数指定ループ | for (i を 1 から n まで 1 ずつ増やす) | 初期値から終了値まで指定間隔で変数を更新しながら繰り返す。終了後の変数iの値に注意。 |
条件分岐 | if (条件) then ... else ... endif | 条件成立時はthen節、不成立時はelse節を実行する。 |
【超重要:配列の添字ルール】:擬似言語問題では、問題文の冒頭に「配列の添字は 0 から始まる」または「添字は 1 から始まる」という規約が必ず明記されています。これを読み飛ばすと、ループ回数や参照インデックスが1つズレて選択肢を全滅させる原因になります。問題を開いた瞬間に添字の開始番号をチェックしましょう。
2. トレース表(机上デバッグ)の書き方:5分で解くプロの型
科目Bで最もやってはいけないNG行動は、「画面上のコードを変数を書き出さずに頭の中だけで追おうとすること」です。ループが3周目に入った時点で人間のワーキングメモリは限界を迎え、確実に混乱します。
合格者が例外なく実践しているのが、メモ用紙に手書きで変数の推移を記録する**「トレース表(机上デバッグ)」**です。
トレース表を素早く・ミスなく書くための鉄則は以下の3点です。
① 変数を列(横方向)に並べる:Step、ループカウンタ(iやj)、参照値(A[i])、比較条件、保持変数(maxやsum)を列としてメモ用紙に枠を作る。
② 値が変わったら古い値を斜線で消す:上書きされた変数は斜線(/)で消し、そのすぐ右か下に新しい数値を書き足す。履歴を残すことで巻き戻し確認ができる。
③ パターンが見えたら省略する:全ループを愚直に追う必要はない。通常は1〜3周目までトレースすれば「何をしているアルゴリズムか」の規則性(ソート、最小値更新、集約など)が見えるため、後半はジャンプして終了条件の判定に移る。
3. 典型例で学ぶトレース実戦:最大値探索アルゴリズム
配列の中から最大値を見つけ出す定番ロジックを例に、実際のトレース手順を見てみましょう。
○整数型: FindMax(整数型の配列: A, 整数型: n)
整数型: maxVal, i
maxVal ← A[0]
for (i を 1 から n - 1 まで 1 ずつ増やす)
if (A[i] > maxVal) then
maxVal ← A[i]
endif
endfor
return maxVal入力データとして要素数 3 の配列 `A = [3, 7, 2]`(添字は 0 から始まる、n = 3)を与えた場合、トレース表は次のように作成します。
実行ステップ | ループ i | 参照要素 A[i] | 条件判定 (A[i] > maxVal) | 変数 maxVal の値 | 備考・処理内容 |
|---|---|---|---|---|---|
初期化 | 未実行 (-) | 未参照 (-) | - | 3 | A[0] の値 3 を初期値として代入 |
ループ 1回目 | 1 | 7 | 7 > 3 → 真 (True) | 3 → 7 に更新 | A[1]=7 が現在の maxVal より大きいため更新 |
ループ 2回目 | 2 | 2 | 2 > 7 → 偽 (False) | 7 のまま保持 | A[2]=2 は小さいため更新なし |
ループ終了 | 3 | 範囲外 | 終了条件 (i = n-1 = 2) を超過 | 7 | ループを抜け、戻り値として 7 を返却 |
このように、表として変数の推移を1行ずつ可視化すれば、途中の条件分岐や最終的な返却値で迷う余地が一切なくなります。
4. 配列の添字操作と「境界値エラー」の落とし穴
科目Bの設問で正解の選択肢を見分ける最大のポイントが、**「境界値(最初と最後)の動作」**です。
初期値の確認:ループ変数の初期値が 0 なのか 1 なのか。配列の先頭要素を正しく参照しているか。
終了条件の不等号:『< n』なのか『≦ n』なのか。1回多く回りすぎて配列外参照エラー(IndexOutOfBounds)を起こさないか。
極端なケースでの検証:要素数が 1 個の場合、あるいは要素がすべて同じ値の場合でも正しく動作するかを頭の片隅でチェックする。
5. 「30秒ルール」で合格を勝ち取る捨て問見極め戦略
科目Bは20問中、**約12〜13問正解すれば600点(合格水準)に到達**します。つまり、「7〜8問は間違えても・捨てても合格できる」ということです。
100分で20問を解く試験において、最も危険なのは「難解なパズル問題に15分以上ハマってしまい、後半の簡単な問題を解き残すこと」です。
問題の種類 | 特徴と難易度 | タイムマネジメントと対応方針 |
|---|---|---|
情報セキュリティ(4問) | 文章読解と基本知識中心。計算が少なく素早く解ける。 | 【最優先で解答】4問を15〜18分で解き、3〜4問を確実に正解して得点土台を作る。 |
基本アルゴリズム(10〜12問) | 配列操作、基本探索、ソート、スタック・キューなど。 | 【標準解答】1問あたり5分を目安にトレース表を書いて堅実に正解を積み上げる。 |
難関・パズル系問題(2〜3問) | 複雑な再帰呼び出し、高度な木構造操作、長大な分岐網。 | 【30秒で見切り】問題文を読んで解法の筋道が見えなければ、即座にフラグを立てて後回しにする。 |
【30秒ルールの鉄則】:問題文を開いて30秒読んでも「処理の目的」や「トレースの開始点」が見えない問題は、一旦適当な記号を選んでフラグをつけ、直ちに次の問題へ進みましょう。解ける問題をすべて解き終えた後、余った時間でじっくり戻るのが合格者の定石です。
6. 実戦演習:擬似言語の穴埋め問題を解いてみよう
以下のプログラムは、整数型の配列 `data` に含まれる正の整数のうち、「偶数だけを足し合わせた合計」を求める関数です。空欄に入る最も適切なものを考えてみましょう。
○整数型: SumEvens(整数型の配列: data, 整数型: n)
整数型: sum, i
sum ← 0
for (i を 0 から n - 1 まで 1 ずつ増やす)
if ( 【 a 】 ) then
sum ← sum + data[i]
endif
endfor
return sum【空欄 a の選択肢】
ア: data[i] % 2 = 0
イ: data[i] % 2 ≠ 0
ウ: i % 2 = 0
エ: sum % 2 = 0
【解説と解答】
正解:ア(data[i] % 2 = 0)
着眼点:問題文の目的は「配列内の偶数の合計」です。偶数とは「2で割った余り(剰余演算 %)が 0 になる数値」を指します。
ア(正解):配列の要素 `data[i]` を 2 で割った余りが 0 のときに合計へ加算するため、正しく偶数のみが足し合わされます。
イ(誤答):余りが 0 でない(1 になる)奇数を抽出してしまうため誤りです。
ウ(誤答):配列の要素ではなく「添字(インデックス)i」の偶奇を判定してしまっているため誤りです(偶数番目の要素の合計になってしまう)。
エ(誤答):現在の合計値 `sum` の偶奇を判定しても意味がないため誤りです。
7. まとめ:今日から始める科目B突破の3ステップ
科目Bの擬似言語は、決して生まれつきのプログラミングセンスを競うものではありません。**「ルールの理解」と「トレース表を書く作業の慣れ」**だけで、誰でも確実に600点の壁を突破できます。
基本文法を覚える:代入 `←`、ループ、そして配列の添字(0始まり/1始まり)の規約を確実に確認する習慣をつける。
トレース表を紙に書く:頭の中だけで考えず、変数の移り変わりを手元で書き出す練習を毎日1〜2問ずつ継続する。
セキュリティ4問を得点源にする:アルゴリズムの失点をカバーできるよう、セキュリティ分野の基本用語と対策シナリオを完璧に仕上げる。
本サイトでは、科目Bで頻出するアルゴリズム・データ構造・セキュリティの個別テーマ解説と実戦演習を順次提供していきます。まずは基本のトレース作法を武器に、一発合格への一歩を踏み出しましょう!
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る