擬似言語問題で焦る人への対策方法!|試験本番で頭が真っ白にならないためにどうすれば!?
基本情報技術者試験の科目Bで、擬似言語の問題を見た瞬間に焦ってしまう。
問題文は読んでいるはずなのに、何を聞かれているのか頭に入ってこない。 コードを見ても、変数や配列がぐちゃぐちゃに見えてしまう。
このような経験はありませんか?
実は、擬似言語問題で焦るのは、能力がないからではありません。多くの場合、本番で焦ったときに戻る場所が決まっていないことが原因です。
この記事では、試験本番で頭が真っ白にならないための対策を、IT初心者にもわかりやすく解説します。文法の細かい説明ではなく、焦ったときにどう立て直すかに絞ってお話しします。
基本情報技術者試験の科目Bは、IPA公式ページで試験時間100分、出題数20問と示されています。単純計算では1問5分ですが、擬似言語問題では読む、考える、追う、選ぶという作業が必要になります。
だからこそ、焦らないための準備が大切です。
擬似言語問題で焦るのは普通¶
まず伝えたいのは、擬似言語問題で焦るのは普通だということです。
特にIT初心者の場合、擬似言語は日常で見慣れない書き方です。日本語のように見える部分もあれば、プログラムのような記号も出てきます。
さらに科目Bでは、問題文が長く見えることもあります。変数、配列、ループ、条件分岐が一気に出てくると、どこから読めばいいのかわからなくなりますよね。
このとき、多くの人は最初から全部を理解しようとします。ですが、それが焦りを強くします。
擬似言語問題は、最初から完璧に読む必要はありません。大切なのは、今どこを見ればよいかを決めることです。
頭が真っ白になったときの最初の30秒¶
本番で固まったときは、無理に読み進めないほうがいいです。
焦った状態でコードを追うと、同じ行を何度も読んでしまいます。読んでいるのに理解できない感覚が強くなり、さらに焦ります。
そんなときは、まず30秒だけ立て直します。
まず設問だけを見る¶
最初に見るのは、コードではなく設問です。
この問題は何を答える問題なのか。出力結果を聞いているのか、空欄に入る式を選ぶのか、処理の説明を選ぶのかを確認します。
これだけで、読む場所が変わります。
出力結果を聞いているなら、最後に表示される値や返される値を追います。空欄補充なら、空欄の前後の変数や条件を見ます。
設問を見ずにコードへ入るのは、ゴールを知らないまま走り出すようなものです。焦っているときほど、まずゴールを見ましょう。
次に主役の変数を探す¶
設問を確認したら、主役の変数を探します。
主役の変数とは、答えに関係する変数です。戻り値、表示される値、空欄の近くで使われる値、条件判定に使われる値などが主役になりやすいです。
逆に、ループ用のiや一時的な作業変数は、最初から深追いしなくて大丈夫です。必要になったときだけ見ればよいです。
実務でも、私はコードを読むときにすべての変数を同じ重さでは見ません。まず、どの値が最終結果に影響するのかを探します。
これは試験の擬似言語でも同じです。
焦ったときはコードを日本語に戻す¶
擬似言語で焦る人は、コードをコードのまま理解しようとしていることが多いです。
もちろん、最終的にはコードとして読める必要があります。ですが、焦ったときは一度日本語に戻したほうが楽です。
たとえば、次のような処理を見てみましょう。
整数型: count ← 0
整数型: i
for (i を 1 から 5 まで 1 ずつ増やす)
if (scores[i] ≧ 60)
count ← count + 1
endif
endfor
return count
このコードを見て焦ったら、まず日本語にします。
点数を順番に見て、60点以上なら人数を1増やす。最後にreturn countで人数を返す。
これだけです。
コードとして見ると難しく感じるかもしれませんが、日本語に戻すとかなりシンプルです。擬似言語は、人間が処理の流れを理解するための表現です。
だからこそ、わからなくなったら日本語に戻して大丈夫です。
サンプルで見る焦らない読み方¶
ここからは、実際に短いサンプルで確認します。
次のプログラムは、配列の中にある数値のうち、最初に70以上になる位置を探す処理です。
○整数型: findFirst(整数型の配列: scores)
整数型: pos ← 0
整数型: i
for (i を 1 から scoresの要素数 まで 1 ずつ増やす)
if ((pos = 0) and (scores[i] ≧ 70))
pos ← i
endif
endfor
return pos
焦ったときは、まず設問を想像します。もし、この関数の戻り値を問われているなら、主役はposです。
iも必要ですが、最初から細かく見る変数ではありません。posがいつ0から変わるかを見ればよいです。
たとえば、scores = {55, 68, 72, 90}のときは、次のように追えます。
| i | scores[i] | 条件を満たすか | pos |
|---|---|---|---|
| 初期 | - | - | 0 |
| 1 | 55 | 満たさない | 0 |
| 2 | 68 | 満たさない | 0 |
| 3 | 72 | 満たす | 3 |
| 4 | 90 | posが0ではない | 3 |
戻り値は3です。
ここで大事なのは、90も70以上なのに、posは4にならないことです。条件にpos = 0があるため、最初に見つけた位置だけを記録しています。
焦っていると、このような条件を見落としやすいです。だからこそ、主役の変数が変わる条件だけは丁寧に見ます。
焦りを減らすトレースのコツ¶
トレースとは、プログラムを上から順番に追いながら、変数の値を確認することです。
擬似言語が苦手な人ほど、頭の中だけでトレースしようとします。ですが、焦っているときの頭の中はあまり信用できません。
私もエンジニアとしてバグを調べるとき、頭の中だけで判断しません。ログを出したり、値を書き出したりして、事実を見えるようにします。
試験ではログを出せないので、代わりに簡単な表を書きます。
全部を書かなくていい¶
トレース表というと、すべての変数をきれいに書かないといけないと思うかもしれません。
でも、本番ではきれいさよりも速さが大切です。答えに関係する変数だけを書けば十分です。
たとえば、合計を求める問題ならsumを中心に見ます。件数を数える問題ならcountです。
最大値を求める問題なら、今の最大値と比較対象だけを見ます。
| 問題のタイプ | 主役になりやすい変数 | 見るポイント |
|---|---|---|
| 合計を求める | sum, total | いつ足されるか |
| 件数を数える | count | 条件を満たした回数 |
| 最大値を探す | max | 更新される条件 |
| 最小値を探す | min | 更新される条件 |
| 見つかったか判定する | flag, found | trueになるタイミング |
| 位置を返す | pos, index | 最初か最後か |
このように、問題のタイプごとに見る変数を決めておくと、本番で迷いにくくなります。
トレースや学習ステップを基礎から確認したい方は、以下の記事も参考になります。
【関連記事】擬似言語の勉強方法とは?IT初心者でも無理なく身につく学習ステップを解説
試験本番で使える読み方テンプレート¶
焦らないためには、本番で使う読み方を決めておくのが効果的です。
毎回なんとなく読み始めると、問題ごとに迷います。迷う時間が増えると、焦りも増えます。
おすすめは、次の順番です。
- 設問を見る
- 選択肢の形を見る
- 戻り値や表示される値を見る
- 主役の変数を探す
- 主役の変数が変わる条件を見る
箇条書きにすると多く見えますが、慣れると短時間でできます。
特に大切なのは、最初に設問を見ることです。何を答えるのかが決まれば、コードのどこを読むべきかが絞れます。
選択肢を見るのはズルではない¶
選択肢を先に見ることに抵抗がある人もいます。
でも、選択肢を見るのはズルではありません。試験では、与えられた情報を効率よく使うことも大切です。
選択肢が数値なら、出力結果や戻り値を追う問題です。選択肢が条件式なら、空欄の前後にある比較や分岐を見ます。
選択肢が説明文なら、プログラム全体の目的をつかむ必要があります。
このように、選択肢を見ることで読み方を切り替えられます。
焦らない人は問題を小さくしている¶
擬似言語が得意な人は、問題を一気に理解しているように見えます。
しかし実際には、問題を小さく分けています。関数全体、ループ全体、条件式、変数の更新というように、分解して読んでいます。
これは実務でも同じです。複雑なプログラムを読むとき、エンジニアは全体を一気に理解しようとはしません。
まず、この関数は何を返すのかを見ます。次に、どの変数が変わるのかを見ます。
そして、怪しい条件だけを詳しく追います。
科目Bの擬似言語問題も、同じように小さくして読めばよいです。大きな問題に見えても、中身は小さな処理の組み合わせです。
焦りやすい人の練習方法¶
本番で焦らないためには、普段の練習から本番に近い状態を作ることが大切です。
ただし、最初から時間を測って解く必要はありません。いきなりタイマーを使うと、焦る練習になってしまいます。
まずは、読み方を固定する練習をしましょう。
1問ごとに振り返る¶
問題を解いたら、正解か不正解だけで終わらせないようにします。
どこで焦ったのか、どの変数を追いすぎたのか、どの条件を見落としたのかを書きます。
この振り返りがとても大切です。
間違えた理由が、文法なのか、時間なのか、トレースなのかで次にやることが変わります。原因がわからないまま問題数だけ増やしても、同じミスを繰り返しやすいです。
制限時間は少しずつ短くする¶
慣れてきたら、時間を測ります。
最初は1問10分でも大丈夫です。次に8分、6分と短くしていきます。
いきなり本番と同じペースを求める必要はありません。読む順番が定着してから、少しずつ速くしていきましょう。
時間配分そのものに悩んでいる方は、以下の記事も参考にしてください。
【関連記事】基本情報技術者試験の科目Bで時間が足りない人へ|擬似言語問題を速く読むコツ
本番前日にやるべきこと¶
本番前日は、新しい難問に挑戦しすぎないほうがよいです。
難しい問題で自信を失うと、本番でも焦りやすくなります。前日は、新しい知識を増やすより、戻る手順を確認する日にしましょう。
具体的には、短い擬似言語問題を2〜3問だけ解きます。そして、設問を見る、主役の変数を探す、変化する条件を見るという流れを確認します。
また、よく間違えるパターンだけを見直します。
| 前日に確認すること | 理由 |
|---|---|
| 代入の向き | 値の更新を間違えないため |
| ループの開始と終了 | 1回多い・少ないを防ぐため |
| 配列の添字 | 位置のズレを防ぐため |
| 条件の境界 | 以上・未満のミスを防ぐため |
| 戻り値・表示値 | 最後の答えを取り違えないため |
前日は、完璧を目指す日ではありません。焦ったときに戻る場所を思い出す日です。
本番中にやってはいけないこと¶
焦ったときほど、やってはいけないことがあります。
それは、同じ問題に長く粘りすぎることです。
科目Bでは、1問に時間を使いすぎると、後半の解ける問題を落としてしまう可能性があります。わからない問題に粘るほど、不安も強くなります。
2分ほど読んでも、何を追えばいいかわからない場合は、一度飛ばしてよいです。印を付けて、後で戻れば大丈夫です。
もう一つは、頭の中だけで計算し続けることです。
焦っているときほど、頭の中の値はズレます。少しでも不安なら、主役の変数だけでいいので書き出しましょう。
まとめ¶
擬似言語問題で焦るのは、決して珍しいことではありません。
試験本番は時間制限がありますし、見慣れないコードを見るだけでも緊張します。だからこそ、焦らない精神力だけに頼るのは危険です。
大切なのは、焦ったときに戻れる手順を持つことです。
設問を見る。選択肢の形を見る。戻り値や表示値を見る。主役の変数を探す。変数が変わる条件を見る。
この順番を練習しておくと、頭が真っ白になっても立て直しやすくなります。
私の経験から見ても、コードを読む力は才能ではなく、手順でかなり改善できます。実務でも試験でも、複雑な処理は小さく分けて読むのが基本です。
擬似言語が苦手でも大丈夫です。
焦ったときに、自分を責めないでください。まずは一度止まり、設問に戻り、主役の変数を探す。
それだけで、見える景色は変わります。
試験本番で大切なのは、完璧に解くことではありません。取れる問題を落とさず、わからない問題に飲み込まれないことです。
焦っても戻れる。
その状態を作って、本番に向かいましょう。
ここまでお読みいただきありがとうございました。