
【基本情報】科目Bの擬似言語入門|初心者でも読めるプログラムの読み方
入門の次は、値が変わる処理を自分で追ってみましょう。 負の数の最大値で学ぶトレース実演(全文無料)では、初期値と更新条件を変える確認問題まで練習できます。まず解説を隠して途中の値を書き、答えが合わなければ最初にずれた行を見直してください。
コードを読む練習は、変数の値を紙に残すところから
この記事の例題では「行番号・変数・値」の欄を作り、代入や繰返しのたびに書き換えてください。解説を閉じても追えるか、全文無料の第39回「擬似言語とトレースの基本」でも試せます。
基本のトレースから探索・整列などへ練習を広げたい方は、科目B・擬似言語の単品教材の無料部分・収録内容を見る。有料教材なので、まず説明が自分に合うか確認してください。単品は科目A・B全60回講座とは別商品です。購入済みの同じ教材を買い直す必要はありません。この記事の解説と例題は全文無料のままです。
「科目Bの問題を開いたけど、擬似言語が何をしているのか全然分からない……」
「プログラミング経験がないから、コードを見るだけで難しく感じる😇」
「変数?配列?for?while?どこから読めばいいの?」
基本情報技術者試験の科目Bを勉強し始めた人が、最初につまずきやすいのが、
擬似言語
です。
でも、最初から難しいアルゴリズムを理解する必要はありません。
まず覚えてほしいのは、
プログラムは上から順番に、変数の値がどう変化するか追いかける
ということ。
この記事では、
変数 → 代入 → 条件分岐 → 繰返し → 配列 → 関数 → トレース
の順番で、擬似言語の読み方を超入門から解説します。
プログラミング未経験でも大丈夫です。
最終的に、
「コードを見たら、紙に値を書きながら処理を追える」
状態を目指しましょう🔥
⸻
1.そもそも擬似言語とは?
擬似言語とは、
アルゴリズムやプログラムの処理を表現するための言語
です。
PythonやJavaなど、特定のプログラミング言語そのものではありません。
例えば、
x ← 10
y ← 20
z ← x + y
という処理があったとします。
これは、
x に10を入れる
y に20を入れる
x + y の結果を z に入れる
という意味です。
したがって最後は、
z = 30
になります。
最初はこのくらい単純な処理から慣れていけばOKです。
⸻
2.科目Bで一番大事なのは「トレース」
擬似言語を攻略するうえで、ぜひ覚えてほしい言葉があります。
それが、
トレース
です。
トレースとは、
プログラムを順番に追いながら、変数などの値がどう変化するか確認すること
です。
例えば、
x ← 1
x ← x + 2
x ← x × 3
なら、
最初
x = 1
↓
x = 1 + 2
= 3
↓
x = 3 × 3
= 9
となります。
答えは、
x=9
です。
科目Bでは、この「値を追う力」が非常に重要になります。
⸻
3.「←」は代入
最初に覚えたい記号が、
←
です。
例えば、
x ← 5
なら、
xに5を代入する
という意味です。
ここで数学の「=」と同じ感覚で考えないことがポイントです。
例えば、
x ← x + 1
という処理。
数学なら、
x = x + 1
はおかしく見えますよね。
でもプログラムでは、
現在のxに1を足して、その結果を新しいxとして保存する
という意味です。
⸻
4.x ← x + 1 を実際に追ってみる
例えば、
x ← 3
x ← x + 1
なら、
最初は、
x = 3
です。
次の処理で、
x ← 3 + 1
となるため、
x = 4
になります。
つまり、
右側を先に計算して、その結果を左側へ入れる
と考えると分かりやすいです。
⸻
5.変数とは?
変数は、
値を入れておく箱
と考えると分かりやすいです。
例えば、
x ← 10
なら、

というイメージです。
その後、
x ← 20
が実行されれば、

となります。
前の10ではなく、
現在のxは20
です。
⸻
6.複数の変数を追ってみよう
次の処理を考えます。
x ← 2
y ← 3
x ← x + y
y ← x × 2
順番に追います。
最初は、
x = 2
y = 3
次に、
x ← x + y
なので、
x = 2 + 3
= 5
この時点で、
x = 5
y = 3
です。
次に、
y ← x × 2
なので、
y = 5 × 2
= 10
最終的には、
x = 5
y = 10
となります。
⸻
7.トレース表を作る
変数が増えてきたら、頭の中だけで追わない方が安全です。
おすすめは、
トレース表
です。
先ほどの処理なら、

となります。
科目Bでは、このように紙へ書き出すだけでかなりミスを減らせます。
⸻
8.条件分岐とは?
次に重要なのが、
条件分岐
です。
「もし○○なら、この処理をする」
という仕組みです。
例えば、
if x > 10
y ← 1
else
y ← 0
endif
とします。
x=15なら、
15 > 10
なので条件成立。
したがって、
y = 1
になります。
⸻
9.if文は「条件を見る」
条件分岐を見たら、最初に、
条件が真か偽か
を確認します。
例えば、
x ← 7
if x >= 5
y ← 10
else
y ← 20
endif
なら、
7 >= 5
は真です。
したがって、
y = 10
となります。
ポイントは、
ifを見たら条件式を先に判定する
ことです。
⸻
10.比較演算子
条件式では、比較演算子が登場します。
代表例を整理すると👇

例えば、
x > 5
なら、
xは5より大きいか?
という意味です。
⸻
11.「以上」と「より大きい」を混同しない
ここは単純ですが、トレース中に意外とミスします。
例えば、
x = 5
のとき、
x > 5
は、
偽
です。
一方、
x >= 5
なら、
真
です。
境界値は注意しましょう。
⸻
12.AND・OR・NOT
条件式が複雑になると、
AND
OR
NOT
も登場します。
例えば、
x > 5 AND x < 10
なら、
xが5より大きく、かつ10より小さい
という意味です。
x=7なら、
7 > 5 → 真
7 < 10 → 真
両方真なので、
全体も真
です。
⸻
13.ANDとORの違い
覚え方はシンプルです。
AND
両方成立したら真
OR
どちらか一方でも成立したら真
例えば、
x > 10 OR y > 10
なら、
xまたはyのどちらかが10より大きければ真になります。
⸻
14.繰返し処理
科目Bで非常に重要なのが、
繰返し
です。
例えば、
for i = 1 to 5
処理
endfor
なら、
iの値を変えながら処理を繰り返します。
イメージは、
i = 1
↓
i = 2
↓
i = 3
↓
i = 4
↓
i = 5
です。
⸻
15.for文をトレースしてみる
例えば、
x ← 0
for i = 1 to 5
x ← x + i
endfor
を考えます。
最初は、
x = 0
です。
i=1なら、
x = 0 + 1
= 1
i=2なら、
x = 1 + 2
= 3
i=3なら、
x = 3 + 3
= 6
そのまま続けると、

となります。
最終的なxは、
15
です。
⸻
16.ループは表にすると一気に読みやすくなる
初心者ほど、
for i = 1 to 10
のようなコードを頭の中だけで処理しようとしがちです。
おすすめは、
i | x | y
のような表を問題用紙へ作ること。
例えば、
i x
1 1
2 3
3 6
というように、
1ループごとに1行
書きます。
これだけでかなり読みやすくなります。
⸻
17.while文
for以外に、
while
も重要です。
whileは、
条件が成立している間、処理を繰り返す
というものです。
例えば、
x ← 1
while x < 10
x ← x × 2
endwhile
を考えます。
⸻
18.whileをトレースする
最初は、
x = 1
条件は、
x < 10
です。
順番に追うと、
1
↓
2
↓
4
↓
8
↓
16
となります。
x=16になったところで、
16 < 10
は偽。
そこでループ終了です。
⸻
19.forとwhileの違い
ざっくり整理すると、
for
回数を意識した繰返し
while
条件を満たしている間の繰返し
です。
ただし、実際の問題ではコードそのものを見て、
何回繰り返すのか
を判断できることが重要です。
⸻
20.配列とは?
次に科目Bで超重要なのが、
配列
です。
配列は、
複数のデータをまとめて扱う仕組み
です。
例えば、
data = [10, 20, 30, 40]
のようなイメージです。
1つの名前で複数の値を管理できます。
⸻
21.配列は「番号」と「値」を分けて考える
配列問題では、
要素番号
と、
その場所に入っている値
を混同しないことが重要です。
例えば、
data = [10, 20, 30, 40]
なら、
場所 → 値
という関係があります。
問題文で添字が0始まりなのか1始まりなのかも必ず確認しましょう。
ここを読み飛ばすと、答えが1つずれる原因になります。
⸻
22.配列を図にする
配列が出たら、次のように書くのがおすすめです。

例えば、
data[2]
なら、0始まりの場合は、
30
です。
配列は頭の中だけで扱わず、
横に並べて書く
とかなり分かりやすくなります。
⸻
23.配列+繰返し
科目Bでは、
配列とループ
が組み合わされます。
例えば、
data = [3, 5, 2, 8]
sum ← 0
for i = 0 to 3
sum ← sum + data[i]
endfor
という処理。
これは配列の値を順番に足しています。
⸻
24.実際に追ってみる
トレース表を作ります。

したがって、
sum=18
です。
コードだけを見るより、かなり分かりやすいですよね。
⸻
25.最大値を探す処理
配列問題では、
最大値・最小値
を探す処理も重要です。
例えば、
data = [3, 8, 5, 10, 4]
max ← data[0]
for i = 1 to 4
if data[i] > max
max ← data[i]
endif
endfor
という処理。
これは、
今まで見つけた最大値と、次の値を比較する
処理です。
⸻
26.最大値探索をトレース
最初は、
max = 3
です。
次に8を見ると、
8 > 3
なので、
max = 8
次の5は、
5 > 8
ではないので変更なし。
次の10で、
10 > 8
となるので、
max = 10
最後の4でも変更なし。
答えは、
10
です。
⸻
27.「現在値」を意識する
擬似言語で混乱する原因の1つが、
昔の値と現在の値が頭の中で混ざること
です。
例えば、
x ← 2
x ← x + 3
x ← x × 2
なら、
2 → 5 → 10
です。
最後の処理で、
2 × 2
としてはいけません。
その時点でのxは、
5
だからです。
常に、
「今の値はいくつ?」
を意識しましょう。
⸻
28.関数とは?
次に、
関数
です。
関数は、
特定の処理をまとめたもの
と考えると分かりやすいです。
例えば、
function add(a, b)
return a + b
endfunction
という関数があるとします。
x ← add(3, 5)
なら、
3 + 5
を計算して、
8
を返します。
したがって、
x = 8
です。
⸻
29.引数と戻り値
関数では、
引数
戻り値
という言葉が重要です。
例えば、
add(3, 5)
なら、
3と5が、
引数
です。
そして、
return 8
の8が、
戻り値
です。
イメージすると、
3・5
↓
[ add ]
↓
8
です。
⸻
30.関数を見たら「中へ入る」
例えば、
function double(x)
return x × 2
endfunction
a ← 5
b ← double(a)
なら、
まず、
a = 5
です。
次に、
double(5)
へ入ります。
関数内部では、
5 × 2
なので、
10
を返します。
したがって、
b = 10
です。
⸻
31.入れ子とは?
少し慣れてくると、
繰返しの中に繰返し
が登場します。
例えば、
for i = 1 to 3
for j = 1 to 2
処理
endfor
endfor
です。
外側が3回。
そのたびに内側が2回。
したがって処理回数は、
3 × 2=6回
です。
⸻
32.二重ループの読み方
二重ループでは、
内側を全部終えてから、外側が1つ進む
と考えます。
イメージは、

です。
この構造を理解しておくと、ソートなどの問題にも入りやすくなります。
⸻
33.探索アルゴリズム
科目Bでは、
「データの中から目的の値を探す」
処理も重要です。
代表例が、
線形探索
と、
二分探索
です。
⸻
34.線形探索
線形探索は、
先頭から順番に探す
方法です。
例えば、
[4, 7, 2, 9, 5]
から9を探すなら、
4 → 違う
7 → 違う
2 → 違う
9 → 発見
となります。
非常に分かりやすい探索方法です。
⸻
35.二分探索
二分探索は、
探索範囲を半分ずつ絞る
方法です。
ただし、
基本的には整列済みデータ
が前提です。
例えば、
[2, 5, 8, 11, 14, 17, 20]
から17を探す場合、
中央付近を確認しながら、
左半分か右半分か
を判断して探索範囲を狭めます。
⸻
36.線形探索と二分探索

特に、
二分探索=整列済み+半分ずつ
を覚えておきましょう。
⸻
37.スタック
データ構造では、
スタック
も重要です。
スタックは、
最後に入れたものを最初に取り出す
構造です。
これを、
LIFO
といいます。

覚え方は、
積み重ねた皿
です。
⸻
38.キュー
キューは、
最初に入れたものを最初に取り出す
構造です。
これを、
FIFO
といいます。

イメージは、
レジの行列
です。
⸻
39.スタックとキューを比較

ここはセットで覚えましょう。
⸻
40.科目Bでよくある失敗① 頭の中だけで解く
最も避けたいのが、
全部頭の中で追う
ことです。
簡単な問題ならできます。
でも、
配列
+
ループ
+
条件分岐
+
変数更新
が組み合わさると、一気に難しくなります。
だから、
書く
ことが重要です。
⸻
41.最低限この3つを書く
擬似言語問題では、
最低でも、
① ループ変数
② 更新される変数
③ 配列の値
を書き出しましょう。
例えば、
i | data[i] | x
という表です。
問題に合わせて列を追加します。
⸻
42.よくある失敗⑴ コード全体を一気に理解しようとする
長い擬似言語を見ると、
「全部理解しないと解けない」
と思ってしまいます。
でも、実際には、
① 初期値を確認
↓
② ループ範囲を確認
↓
③ 条件を確認
↓
④ 変数更新を確認
のように分解すればOKです。
1行ずつ処理する
ことを意識しましょう。
⸻
43.よくある失敗⑵ 初期値を見落とす
例えば、
sum ← 0
と、
sum ← 1
では結果が変わります。
特に、
合計
最大値
カウンタ
などでは初期値が重要です。
コードを読み始めたら、
最初に初期値へ丸を付ける
くらいでもOKです。
⸻
44.よくある失敗⑶ 添字を勘違いする
配列では、
0始まりか1始まりか
を必ず確認します。
例えば、
data = [10, 20, 30]
でも、
0始まりなら、
data[0] = 10
です。
問題の定義を読まず、
「配列は絶対0始まり」
と思い込まないようにしましょう。
⸻
45.よくある失敗⑷ ループ終了条件を間違える
例えば、
i < 5
と、
i <= 5
では、実行回数が変わります。
<
なのか、
≦
なのか。
境界を必ず確認します。
⸻
46.擬似言語を読む順番
問題を見たら、僕なら次の順番で確認します。
STEP1
変数・配列を確認
STEP2
初期値を確認
STEP3
ループを探す
STEP4
条件分岐を確認
STEP5
どの変数が更新されるか確認
STEP6
トレース表を作る
この順番を習慣化すると、コードがかなり読みやすくなります。
⸻
47.練習問題①
次の処理後のxはいくつでしょう?
x ← 2
x ← x + 3
x ← x × 4
順番に追うと、
2
↓
5
↓
20
答えは、
20
です。
⸻
48.練習問題②
次の処理後のsumはいくつでしょう?
sum ← 0
for i = 1 to 4
sum ← sum + i
endfor
トレースすると、

答えは、
10
です。
⸻
49.練習問題③
次の処理後のyはいくつでしょう?
x ← 8
if x > 5
y ← 1
else
y ← 0
endif
8>5なので条件は真。
答えは、
y=1
です。
⸻
50.練習問題④
次の処理後のsumはいくつでしょう?
data = [2, 4, 6, 8]
sum ← 0
for i = 0 to 3
if data[i] > 4
sum ← sum + data[i]
endif
endfor
4より大きい値は、
6と8
です。
したがって、
sum = 6 + 8
= 14
答えは、
14
です。
⸻
51.練習問題⑤
次の処理では何回「処理」が実行されるでしょう?
for i = 1 to 4
for j = 1 to 3
処理
endfor
endfor
外側が4回。
内側が3回。
したがって、
4 × 3 = 12
答えは、
12回
です。
⸻
52.初心者向けおすすめ練習順
いきなり難しい問題へ行く必要はありません。
おすすめは👇
① 代入
↓
② if
↓
③ for
↓
④ while
↓
⑤ 配列
↓
⑥ 配列+for
↓
⑦ 関数
↓
⑧ 探索
↓
⑨ 二重ループ
↓
⑩ 複合問題
この順番で少しずつレベルを上げます。
⸻
53.1日20分でもOK
擬似言語は、
まとめて5時間勉強するより、毎日少しずつ読む
方が慣れやすいです。
例えば、
5分
→ 前日の復習
10分
→ 擬似言語を1〜2問トレース
5分
→ 間違えた原因を確認
これだけでもOKです。
重要なのは、
コードを見る日を空けすぎないこと
です。
⸻
54.科目Aと並行しよう
科目Bは、
科目Aが全部終わってから始める
必要はありません。
科目Aで、
2進数
論理演算
アルゴリズム
あたりを学び始めたら、簡単な科目B問題にも触れていくのがおすすめです。
例えば1日60分なら、
科目A:40分
科目B:20分
のように分けてもOKです。
⸻
55.最初は「正解する」より「追える」を目標にする
初心者のうちは、
何問正解したか
だけで判断しない方がいいです。
最初の目標は、
コードを最後までトレースできたか
です。
例えば不正解でも、
初期値を確認できた
↓
ループ回数を確認できた
↓
配列の値を書けた
↓
変数の更新を追えた
なら、かなり前進しています。
⸻
56.試験直前チェックリスト
次を確認してみましょう👇
☐ 「←」の意味を説明できる
☐ x←x+1を説明できる
☐ ifの条件を判定できる
☐ AND・ORを区別できる
☐ forをトレースできる
☐ whileをトレースできる
☐ 配列の添字を確認する癖がある
☐ 配列+forを追える
☐ 関数の引数・戻り値が分かる
☐ 二重ループを追える
☐ 線形探索を説明できる
☐ 二分探索を説明できる
☐ スタックとキューを区別できる
☐ トレース表を自分で作れる
半分以上怪しい場合でも大丈夫です。
上から順番に練習していきましょう。
⸻
57.最後にこれだけ覚える
時間がない人は、まずここ👇

そして一番大事なのは、
分からなくなったら紙に書く。
これです🔥
⸻
まとめ
科目Bの擬似言語は、最初に見ると難しく感じます。
でも、基本的な構造は、
代入
条件分岐
繰返し
配列
関数
などの組合せです。
いきなりコード全体を理解しようとせず、
初期値を見る
↓
ループを見る
↓
条件を見る
↓
変数の更新を見る
↓
紙にトレースする
という順番で読みましょう。
特に、
「頭の中だけで解かない」
ことが重要です。
配列や変数の値を書き出すだけで、擬似言語はかなり読みやすくなります。
最初は遅くても大丈夫。
正確にトレースする
↓
慣れて少しずつ速くなる
という順番で進めていきましょう🔥
⸻
📚 基本情報技術者試験を勉強している方へ
このnoteでは、
基本情報の難しいテーマを、初学者でも理解できるように整理する
をテーマに、科目A・科目Bの攻略記事を公開しています。
今回の記事は、科目Bをこれから始める方向けの擬似言語の入口です。
次のステップとしては、
配列・探索・ソート・再帰・スタック/キュー・計算量・科目B実践問題
などを順番に勉強していくと、かなり理解しやすくなります。
役に立ったら、スキ・フォローしてもらえると嬉しいです🙌
試験前にもう一度確認できるよう、ぜひ保存しておいてください📌