基本情報科目Bの擬似言語がわからない人へ|何から勉強すればいい?初心者向けに解説
基本情報技術者試験の科目Bを勉強し始めて、
擬似言語を見ても、何をしているのか全くわからない。
解説を読めばなんとなく理解できるけれど、自分では解けない。
forや配列が出てくると、途中で値がわからなくなる。
このように感じていませんか?
科目Aは用語を覚えることで少しずつ正解できる問題が増えていきます。一方、科目Bでは、擬似言語で書かれた処理を読み、変数の値がどう変わるのかを自分で追わなければなりません。
そのため、科目Aと同じ感覚で勉強していると、急に難しくなったように感じます。
ただ、最初から長いプログラムを読める必要はありません。
擬似言語がわからないときは、変数と代入まで戻り、短いコードを1行ずつ追うところから始めるのがおすすめです。
学ぶ順番は、次のようにすると理解しやすくなります。
変数と代入 → if → for・while → 配列 → トレース → 科目B形式の問題
この記事では、基本情報技術者試験の科目Bで擬似言語がわからない人に向けて、どこから勉強し直せばよいのかを、できるだけやさしく解説します。
科目Bの擬似言語がわからないときに最初にやること¶
最初に結論を整理しておきます。
擬似言語が全く読めないときに、いきなり公開問題や難しいアルゴリズムを何問も解く必要はありません。
まずは、次の4つを意識してください。
- 変数に今どの値が入っているか確認する
- コードを1行ずつ上から実行する
- 変数の値を頭の中だけで覚えず、紙に書く
- 短いコードで理解できてから長い問題へ進む
特に大切なのが、変数の値を書き出すことです。
科目Bが苦手な人ほど、コード全体の意味を一気に理解しようとしてしまいます。しかし、擬似言語は文章のように眺めるだけではなかなか読めるようになりません。
自分がコンピュータになったつもりで、
「1行目を実行すると何が変わる?」
「次の条件は真?偽?」
「2回目のループでは値はいくつ?」
と、一つずつ処理していきます。
これが擬似言語を読む基本です。
まずは「変数と代入」を理解する¶
科目Bの問題には、変数が何度も出てきます。
変数とは、数値や文字などを一時的に入れておく箱のようなものです。
例えば、次の処理を見てみましょう。
x ← 3
x ← x + 2
x ← x × 2
これを見て、すぐに最後のxの値がわからなくても大丈夫です。
1行ずつ追います。
x ← 3
まず、xに3が入ります。
次に、
x ← x + 2
右側を先に計算します。
今のxは3なので、
3 + 2 = 5
となり、新しいxは5です。
最後は、
x ← x × 2
なので、
5 × 2 = 10
となります。
つまり、値の変化は次の通りです。
| 処理 | xの値 |
|---|---|
| 初期 | - |
x ← 3 |
3 |
x ← x + 2 |
5 |
x ← x × 2 |
10 |
擬似言語がわからない人は、まずこの程度の短いコードを確実に追える状態を目指しましょう。
x ← x + 2を数学の等式として考えると、少し変に見えます。これは「xとx+2が等しい」という意味ではありません。
右側を計算して、その結果を左側の変数へ入れるという意味です。
代入や演算子をもう少し詳しく確認したい方は、以下の記事も参考にしてください。
【関連記事】擬似言語の代入(←)と比較の違いとは?演算子の読み方と優先順位を解説
if文は「条件が○か×か」だけを見る¶
変数と代入がわかったら、次は条件分岐です。
例えば、次のコードを見てみましょう。
x ← 3
if (x > 2)
x ← x + 5
endif
難しく考える必要はありません。
最初に、
x = 3
です。
次の条件は、
x > 2
なので、
3 > 2
これは真です。
そのため、ifの中へ進みます。
x ← x + 5
なので、最後のxは8になります。
if文が出てきたら、まず、
「この条件は○か×か?」
だけを考えてください。
いきなりプログラム全体を理解しようとしなくても、条件を一つずつ判定できれば処理は追えます。
if、else、elseifで迷いやすい方は、こちらで詳しく解説しています。
【関連記事】擬似言語のifで迷子になる人へ|条件分岐をスラスラ追う読み方
forやwhileは頭の中だけで追わない¶
科目Bで一気に難しく感じやすいのが、繰返し処理です。
例えば、次のコードです。
x ← 0
for (i を 1 から 3 まで 1 ずつ増やす)
x ← x + i
endfor
これを頭の中だけで考えると、
「今iはいくつだっけ?」
「xは前の値?更新後の値?」
と混乱しやすくなります。
そこで、表を書きます。
| i | x |
|---|---|
| 初期 | 0 |
| 1 | 1 |
| 2 | 3 |
| 3 | 6 |
1回目は、
x ← 0 + 1
なので1。
2回目は、今のxが1なので、
x ← 1 + 2
となり3。
3回目は、
x ← 3 + 3
なので6です。
科目Bが苦手なうちは、トレース表を書いて解いてまったく問題ありません。
むしろ、最初から全部を頭の中で処理しようとするほうが難しいです。
トレース表の具体的な作り方は、以下の記事でも詳しく説明しています。
【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説
配列は「番号付きの箱」と考える¶
for文が少し読めるようになったら、次は配列です。
例えば、
data ← {5, 8, 2, 7}
という配列があるとします。
説明を簡単にするため、ここでは1番目から数えることにします。
data[1] = 5
data[2] = 8
data[3] = 2
data[4] = 7
と考えます。
つまり、配列は番号付きの箱です。
それでは、次のコードを見てみましょう。
data ← {5, 8, 2, 7}
for (i を 1 から 4 まで 1 ずつ増やす)
if (data[i] > 5)
print(data[i])
endif
endfor
ここでも表を書けば難しくありません。
| i | data[i] | 5より大きい? | 出力 |
|---|---|---|---|
| 1 | 5 | × | - |
| 2 | 8 | ○ | 8 |
| 3 | 2 | × | - |
| 4 | 7 | ○ | 7 |
出力されるのは8と7です。
科目Bでは、配列+繰返し+条件分岐の組み合わせが頻繁に登場します。
逆にいえば、この3つを一つずつ追えるようになると、今まで難しく見えていた問題もかなり読みやすくなります。
配列や添字で混乱する場合は、先にこちらを確認してみてください。
【関連記事】擬似言語の配列と添字がわからない人へ|要素数・二次元配列の読み方を解説
「解説を読めばわかるのに、自分では解けない」ときは?¶
科目Bの勉強をしていると、
解説を読むと「なるほど」と思う。
でも、次の問題になるとまた解けない。
という状態になりやすいです。
この場合、知識を増やすことよりも、自分で処理を追う回数を増やすことが大切です。
おすすめは、次の流れです。
自分でトレースする → 答えを確認する → 間違えた場所を特定する → もう一度トレースする
例えば、
「for文が苦手だった」
だけで終わらせるのではなく、
「2回目のループで、xが1から3に更新されたことを見落としていた」
くらい具体的にします。
間違えた場所がわかると、次に何を練習すればよいかもわかります。
一方、解説を読むだけだと、どうしても「わかった気がする」で終わりやすくなります。
科目Bでは、読んだ量より、自分で値を追った回数を増やすことを意識してみてください。
擬似言語がわからない人におすすめの勉強順¶
ここまでの内容を、学習する順番にまとめます。
| 順番 | 学ぶ内容 | 目標 |
|---|---|---|
| 1 | 変数・代入 | 値が更新されることを理解する |
| 2 | 比較・if | 条件が真か偽か判断する |
| 3 | for・while | 繰返し回数を追えるようにする |
| 4 | 配列 | 添字と値をセットで見る |
| 5 | トレース | 表を使って値の変化を記録する |
| 6 | 合計・カウント・最大値 | よく出る処理の型に慣れる |
| 7 | 探索・整列 | 少し長いアルゴリズムを読む |
| 8 | 科目B形式の問題 | 本番形式で練習する |
最初から二分探索やソート、再帰などを完璧に理解しようとしなくて大丈夫です。
まずは10行前後の短い擬似言語を見て、最後の値を正確に答えられる状態を作りましょう。
基本情報技術者試験の科目B全体の勉強順を確認したい方は、こちらの記事も参考になります。
【関連記事】基本情報技術者試験 科目Bの勉強法|初心者が合格までにやることを順番に解説
擬似言語は「実際に動かす」と理解しやすくなる¶
擬似言語の難しいところは、参考書や問題集だけで勉強していると、自分が考えた処理結果が本当に合っているのか確認しにくいことです。
そこでおすすめなのが、
予想する → 実行する → 結果を見る → なぜそうなったか説明する
という練習です。
例えば、
x ← 0
for (i を 1 から 3 まで 1 ずつ増やす)
x ← x + i
endfor
print(x)
を見たら、まず答えを予想します。
次に実際に動かして、6と表示されるか確認します。
もし予想と違っていたら、
「どの行で自分の考えと実際の処理がずれたのか」
を探します。
このやり方なら、正解だけを見るよりも、擬似言語の動きそのものを理解しやすくなります。
擬似言語を学ぶならGiji Academyがおすすめ¶
擬似言語を実際に動かしながら学びたい場合は、Giji Academyも活用してみてください。
Giji Academyは、基本情報技術者試験 科目Bの擬似言語を、ブラウザ上で実行しながら学べる学習サイトです。
変数と代入、条件分岐、繰返し、配列、関数、トレース、探索・整列などを、基礎から順番に学べるようになっています。
特に、
- 参考書を読んでも擬似言語の動きがイメージできない
- 解説を読めばわかるのに、自分では問題を解けない
forや配列が出てくると値を見失う- プログラミング未経験で、何から始めればよいかわからない
という方におすすめです。
Giji Academyでは、教材を読むだけではなく、コードを書いて実行結果を確認できます。
使うときは、最初から実行ボタンを押すのではなく、
- まず自分で結果を予想する
- 紙にトレースする
- Giji Academyで実行する
- 予想と違った行を確認する
という順番がおすすめです。
「読むだけ」から「自分で動かして確かめる」に変えると、擬似言語はかなり理解しやすくなります。
基本的な教材は無料で試せるので、擬似言語が全くわからない方は、まず短いコードを1つ動かすところから始めてみてください。
シミュレーターを使った勉強方法を先に知りたい方は、以下の記事も参考になります。
【関連記事】擬似言語 シミュレーターとは?試験対策に役立つ使い方と学習法を解説
科目Bでは、いきなり過去問だけを解かない¶
基本情報技術者試験の科目Bは、試験時間100分、出題数20問です。
IPAは科目Bについて、情報セキュリティとデータ構造・アルゴリズムを中心とし、プログラミング的思考力を問う問題を擬似言語で出題する形としています。
そのため、科目B対策では擬似言語を避けて通るのは難しいです。
ただし、だからといって最初から本番レベルの問題ばかり解く必要はありません。
基礎があいまいな状態で長い問題へ進むと、
「解けない → 解説を読む → なんとなくわかる → 次も解けない」
を繰り返しやすくなります。
最初は、
- 変数が1〜2個
- ifが1つ
- forが1つ
- 配列の要素が3〜5個
くらいの問題で十分です。
短いコードを正確に読めるようになってから、少しずつ長い問題へ進みましょう。
科目Bの問題を読む具体的な順番については、こちらでも例題付きで解説しています。
【関連記事】科目Bの擬似言語問題の解き方|コードを読む順番を例題で解説
まとめ:擬似言語がわからないなら、短いコードを1行ずつ追うところから始めよう¶
基本情報技術者試験の科目Bで擬似言語がわからないときは、難しいアルゴリズムを覚えることから始める必要はありません。
まずは、
変数と代入 → if → for・while → 配列 → トレース
の順番で、短いコードを1行ずつ追ってみてください。
そして、変数の値はできるだけ紙に書きます。
頭の中だけで処理しようとすると混乱しやすいですが、表にすると「どこで値が変わったのか」が見えるようになります。
解説を読めばわかるのに自分では解けない場合も、心配する必要はありません。必要なのは、さらに解説を読むことではなく、自分で予想して、トレースして、答え合わせをする回数を増やすことです。
擬似言語を実際に動かして確認したい場合は、Giji Academyも使ってみてください。ブラウザ上でコードを書いて実行できるので、自分の予想と実際の結果をすぐに比べられます。
最初の目標は、長い問題を解くことではありません。
10行程度の短い擬似言語を、自分の力で最後まで追えるようになること。
そこまでできるようになると、科目Bの長い問題も少しずつ「小さな処理の組み合わせ」として見えるようになります。