基本情報 科目B 擬似言語の読み方

公開: 2026年7月10日 更新: 2026年7月10日 カテゴリ: 基本情報技術者試験

基本情報技術者試験の科目Bで一番つまずきやすいのが、擬似言語のコードを読んで答える問題です。コツは、文法を暗記することよりも、代入・配列・ループを1行ずつトレースできる形にすること。この記事では、初見のコードをどう読めばよいかを、例題と表で順番に解説します。

手を動かして確認したい人へ:この記事の考え方は、擬似言語ステッパーでそのまま練習できます。コードを1行ずつ実行し、変数の値がどう変わるかを画面で見られます。

科目Bの擬似言語でまず見る場所

コード全体を上から読もうとすると、ループや配列で迷いやすくなります。最初に見るべき場所は3つです。

1. 変数と配列の宣言 — 何を記録する問題かが分かります。
2. ループの範囲 — 何回くり返すか、どの添字を使うかを確認します。
3. if文の条件 — 値が更新されるタイミングを見つけます。

この3つを先に拾うと、「何となく読む」状態から抜けられます。特に配列が出たら、添字が何番から始まり、何番まで使われるかを必ず書き出します。

代入は「右を計算して、左に上書き」

擬似言語では sum ← sum + i のような代入がよく出ます。これは「sum と sum+i が等しい」という意味ではありません。右辺の値を先に計算し、その結果で左辺の変数を上書きするという意味です。

処理意味
x ← 3x に 3 を入れるx は 3 になる
x ← x + 1今の x に 1 を足して、x を上書きx が 3 なら 4 になる
a[i] ← x配列 a の i 番目に x を入れるi が 2 なら a[2] を更新

科目Bのミスの多くは、「更新前の値」と「更新後の値」が混ざることから起きます。代入を見たら、その行で表を更新する、と決めておくと安定します。

配列は「添字」と「値」を分けて見る

配列の問題では、a[i]i は値そのものではなく、何番目を見るかを表す番号です。たとえば a ← {4, 1, 7, 3} なら、次のように表にします。

添字1234
a[添字]4173

i ← 3 のとき、a[i]a[3] なので値は 7 です。i は場所、a[i] は中身。ここを分けて考えるだけで、配列問題はかなり読みやすくなります。

配列は「場所」と「中身」を分ける 添字 1 添字 2 添字 3 添字 4 4 1 7 3 i = 3 なら、a[i] は a[3]。中身は 7
図1: 添字は「場所」、配列の値は「中身」。この区別が配列トレースの第一歩

例題1: 配列の合計をトレースする

次の擬似言語を見て、最後に sum がいくつになるか考えます。

整数型の配列: a ← {4, 1, 7, 3}
整数型: sum ← 0
整数型: i

for (i を 1 から 4 まで 1 ずつ増やす)
  sum ← sum + a[i]
endfor

変数表を作ると、次のようになります。

周回ia[i]更新前 sum更新後 sum
開始前---0
1周目1404
2周目2145
3周目37512
4周目431215

答えは 15 です。ポイントは、sum ← sum + a[i] の右辺にある sum は「更新前のsum」だということです。

例題2: 最大値を探す

最大値を探す問題は、科目Bで頻出です。基本形は「仮の最大値を置き、より大きい値を見つけたら更新する」です。

整数型の配列: a ← {4, 1, 7, 3}
整数型: max ← a[1]
整数型: i

for (i を 2 から 4 まで 1 ずつ増やす)
  if (a[i] > max)
    max ← a[i]
  endif
endfor
周回ia[i]条件 a[i] > maxmax
開始前---4
1周目211 > 4 は偽4
2周目377 > 4 は真7
3周目433 > 7 は偽7

答えは 7。ここでは i が 2 から始まっている点にも注目です。max ← a[1] で1番目はすでに見ているので、ループは2番目からでよい、という考え方です。

for と while の読み分け

for は回数が見えやすいループ、while は条件が成り立つ間だけ続くループです。試験では、終了条件の読み間違いがそのまま誤答になります。

書き方見るべきところ間違いやすい点
for (i を 1 から n まで)開始値・終了値・増え方最後の値を含むかどうか
while (i ≦ n)条件式と、i がどこで更新されるか更新忘れ・1回多い/少ない

迷ったら、頭の中だけで考えずに i = 1, 2, 3... と実際に書きます。科目Bでは、1回ずれる選択肢がよく用意されています。

トレース表の作り方

紙に書くときは、きれいな表でなくても大丈夫です。次の形だけ守れば十分です。

列: 変数名、配列の注目値、条件判定
行: ループの周回、または代入が起きたタイミング
書く値: 更新前と更新後が混ざらないように、代入後の値を残す

時間がない本番では、すべての変数を書く必要はありません。答えに関係する変数だけを書けば十分です。たとえば合計問題なら isum、最大値問題なら ia[i]max を追います。

よくあるミス

Q. 配列の1番目と0番目で混乱します。
A. 基本情報の擬似言語では、配列の添字は1から始まる形で出てくることが多いです。問題文の添字の前提を必ず確認し、表の先頭に「1, 2, 3...」と書いてから解き始めると安全です。

Q. if文の中が実行されたか忘れます。
A. 条件判定の列を作り、真なら「○」、偽なら「×」と書くのがおすすめです。max更新のような問題では、この1列があるだけで見直しが速くなります。

Q. ループの最後で i がどうなるか分かりません。
A. for は終了値まで実行したあと、次の値に増やそうとして条件を外れます。答えに i の最終値が関係する場合は、ループ終了後の i も1行追加して確認しましょう。

次に練習するページ

擬似言語は、読むだけよりも実際にステップ実行した方が早く身につきます。

擬似言語ステッパー — 配列の合計・最大値・線形探索・バブルソートを1行ずつ実行できます。
基本情報 科目Bの解き方ガイド — 科目B全体の時間配分と勉強順を整理しています。
ソートアルゴリズム可視化 — 比較と交換の動きをアニメーションで確認できます。
探索アルゴリズム可視化 — 線形探索と二分探索の違いを見比べられます。

まとめ

科目Bの擬似言語は、難しい文法を大量に覚える試験ではありません。代入は右を計算して左に上書き、配列は添字と値を分ける、ループは周回ごとに表へ書く。この3つを徹底すれば、初見のコードでも落ち着いて読めます。