最終更新日:2026年10月9日
fe fe-technology pseudocode trace programming
まず結論
IPAの擬似言語は、Pythonなどの特定言語を覚えるためのものではなく、処理の流れを共通の書き方で表すためのものです。基本情報技術者試験(FE)の科目Bでは、記号を見分けたら、初期値→条件判定→代入→次の判定の順に値を追うことが大切です。
根拠はIPA「試験で使用する情報技術に関する用語・プログラム言語など」Ver.5.1の別紙2(PDFの6〜7ページ)です。個別の問題文に注記がある場合は、その指定を優先します。
直感的な説明
擬似言語を読む作業は、機械の動作手順を順番に確認することに似ています。
- 変数:現在の値を記録する箱
- 代入:箱の中身を書き換える
- 条件:次にどの処理へ進むかの判断
- 繰返し:条件に応じて同じ工程へ戻る
式を一度に暗算するのではなく、「今、どの行にいて、どの箱が変わったか」を確かめます。
定義・仕組み
IPAの基本記号
| 記述 | 読み方 | 注意点 |
|---|---|---|
整数型: count |
変数countを宣言 | 型と名前を区別する |
count ← 3 |
countに3を代入 | 以前の値は上書きされる |
count = 3 |
countと3が等しいか比較 | ←と混同しない |
count ≠ 3 |
3と等しくないか比較 | notとは別の記法 |
a mod b |
aをbで割った余り | 周期・偶奇判定にも使う |
and / or / not |
論理積/論理和/否定 | 演算の優先順位を確認 |
data[i] |
配列dataの要素番号i | 番号の開始位置は問題文で確認 |
data[i, j] |
二次元配列の行i・列j | Pythonの添字表現と同一視しない |
object.member |
メンバ変数・メソッドへのアクセス | 点は小数点とは限らない |
| 未定義 | 値が格納されていない状態 | 数値0とは違う |
「←」は代入、「=」は比較です。式の左側の変数が更新されることをまず確認しましょう。
選択・繰返しの見方
| 記述 | 動作 | |
|---|---|---|
if ... elseif ... else ... endif |
上から順に条件を判定し、最初に真となる枝を実行 | |
while ... endwhile |
処理前に条件を判定。0回で終わる場合もある | |
do ... while |
処理後に条件を判定。少なくとも1回実行 | |
for ... endfor |
制御記述に従って繰り返す。範囲や刻みは記述を確認 | |
関数名(引数, ...) |
関数・手続を呼び出す | 引数に何を渡すか確認 |
より詳しい制御構造の比較は前判定・後判定の繰返しで確認できます。
演算の優先順位
IPAの別紙2では、主な演算の優先順位は 括弧やメンバアクセス → 単項演算子 → 乗除・mod → 加減 → 比較 → and → or の順です。
たとえば true or false and false は、先に false and false を評価するため true です。判断が難しければ括弧を補ってください。
科目Aでどう出る?
科目Aの基礎知識としては、代入と等価比較、前判定と後判定、配列と添字、論理演算の区別が役立ちます。
特に x ← x + 1 は数学の等式ではありません。現在のxに1を足し、その結果をxへ代入する命令です。これが読めないと科目Bのトレースでも値がずれます。
科目Bでどう使う?
変数を表で追う(トレース)
次のプログラムは説明用のオリジナル例です。配列 data の要素番号は1から始まるとし、data = {4, 7, 2} です。
○main()
整数型: i, total
整数型の配列: data ← {4, 7, 2}
i ← 1
total ← 0
while (i ≦ 3)
if (data[i] mod 2 = 0)
total ← total + data[i]
endif
i ← i + 1
endwhile
まず i=1、total=0 から開始します。偶数の要素だけを加算するため、各回の変数の変化は次の通りです。
| 判定時のi | data[i] | 偶数? | 処理後のtotal | 次のi |
|---|---|---|---|---|
| 1 | 4 | はい | 4 | 2 |
| 2 | 7 | いいえ | 4 | 3 |
| 3 | 2 | はい | 6 | 4 |
最後は i=4 で i ≦ 3 が偽となり終了します。最終的なtotalは6です。
1行ずつ動かすトレース練習
「次の1行」を押すと、現在の実行行・変数の値・条件の結果が変化します。偶数だけを合計する上のプログラムと同じ処理です。
擬似言語トレース:偶数だけ合計
配列の添字は1から開始。見るポイント:条件が偽のときは合計を更新しない。
配列: ① 4 ② 7 ③ 2
現在の i:
現在の total:
次に実行する行: i ← 1
JavaScriptを使えない場合も、直前のトレース表で同じ結果を確認できます。
試験でのトレース手順
- 初期値を書く。配列の添字開始番号も確認する。
- 条件式を評価し、実行する枝だけを選ぶ。
- 代入した変数だけ値を更新する。
- ループ末尾で次の添字を記録する。
- 再び条件を確認し、偽になった時点で止める。
表では「条件判定時の値」と「処理後の値」を混在させないことがコツです。
よくある誤解・混同
| 誤読 | 正しくは |
|---|---|
← と = は同じ |
代入と比較で役割が異なる |
while の本体は必ず1回実行 |
初回の条件が偽なら0回 |
elseif の後続条件も全部評価する |
先に真となった枝があれば後続の条件は評価しない |
| 配列の最初は必ず0番 | 問題文に指定された要素番号に従う |
mod は割り算の商 |
mod は余り |
| 未定義は0 | 未定義と0は異なる |
| Pythonと同じ記法で考えればよい | IPA別紙2と問題文の規則で読む |
条件分岐については条件分岐の判定順序、配列の理解には配列の基本も参考になります。
まとめ(試験直前用)
←は代入、=は比較。- 配列の添字開始番号は必ず問題の指定を確認する。
whileは条件を先に判定する。- 演算の順序は、特に and が or より先。
- トレースは初期値→判定→更新→次の判定を表にする。
- 別紙2は共通の記述形式。問題ごとの注記が優先される。