基本情報技術者試験の科目Bとは?擬似言語・アルゴリズム対策を初心者向けに解説
基本情報技術者試験の勉強を始めると、多くの人がつまずくのが科目Bです。
科目Aは用語や知識を覚えれば少しずつ点数が伸びやすい一方で、科目Bは擬似言語で書かれたプログラムを読み、処理の流れを考えながら解く必要があります。IT初心者の方にとっては、ここで一気に試験が難しく感じられるかもしれません。
でも、安心してください。 科目Bは才能やセンスだけで解くものではありません。
読み方の順番、変数の追い方、よく出る処理のパターンを知っておけば、少しずつ解けるようになります。この記事では、基本情報技術者試験の科目Bとは何か、擬似言語とアルゴリズムをどう対策すればよいかを初心者向けに解説します。
基本情報技術者試験の科目Bとは¶
まずは、科目Bがどのような試験なのかを整理しておきましょう!
基本情報技術者試験は、ITエンジニアとしての基礎知識や考え方を問う国家試験です。その中でも科目Bは、知識を覚えているかだけでなく、プログラムの処理を読み取る力が問われます。
IPAが公開している科目Bのサンプル問題によると、科目Bは「アルゴリズムとプログラミング」と「情報セキュリティ」の二つの分野で構成されています。分野別の出題割合は、「アルゴリズムとプログラミング」が8割、「情報セキュリティ」が2割を想定されています。
つまり、科目Bで合格点を目指すなら、擬似言語とアルゴリズム対策は避けて通れないということです。
科目Bの出題内容¶
科目Bの中心になるのは、擬似言語で書かれたプログラムを読んで、空欄に入る処理や実行結果を考える問題です。
イメージしやすいように、出題内容を簡単に整理します。
| 分野 | 内容 | 初心者が意識したいポイント |
|---|---|---|
| アルゴリズムとプログラミング | 擬似言語、変数、配列、条件分岐、繰返し、関数、データ構造など | 処理を1行ずつ追う力が必要 |
| 情報セキュリティ | マルウェア対策、アクセス管理、ログ、バックアップ、脆弱性管理など | 科目Aの知識とつながりやすい |
| プログラムの基本要素 | 型、変数、代入、演算、比較、論理演算など | 最初に固めたい基礎 |
| データ構造及びアルゴリズム | スタック、キュー、リスト、木構造、整列、探索など | 苦手な人が多いが頻出 |
| 応用的なプログラム | データサイエンス、AIなどの題材を使った処理 | 問題文を落ち着いて読むことが大切 |
この表だけを見ると、難しそうに感じるかもしれません。
ただ、最初からすべてを完璧に理解する必要はありません。まずは、変数、配列、条件分岐、繰返しの4つを押さえるだけでも、問題文の見え方がかなり変わります。
科目Bが難しく感じる理由¶
科目Bが苦手な人は、とても多いです。私もエンジニアとして学習相談を受ける中で、科目Bで手が止まる人を何人も見てきました。
では、なぜ科目Bは難しく感じるのでしょうか。
プログラムを読む経験が少ないから¶
IT初心者にとって、プログラムを読むこと自体が慣れない作業です。
文章問題なら前から読めば意味がわかりますが、プログラムはそうはいきません。変数の値が途中で変わったり、条件によって処理が分岐したり、繰返しによって同じ処理が何度も実行されたりします。
たとえば、次のような処理を見てみましょう。
整数型: x ← 1
整数型: y ← 2
x ← y
y ← x + 3
この処理では、最初にxは1、yは2です。しかし、3行目でxにyの値が代入されるので、xは2になります。
その後、yにはx + 3の結果が入るため、yは5になります。ここで大事なのは、変数は途中で値が変わるという感覚です。
プログラムに慣れていないと、最初のxが1だったことに引っ張られてしまいます。科目Bでは、この小さな読み違いが失点につながります。
問題文が長く見えるから¶
科目Bの問題は、本文、プログラム、選択肢がセットになっています。
そのため、初めて見ると情報量が多く感じます。特に試験本番では時間制限もあるので、焦ってしまいやすいです。
でも、問題文のすべてを同じ重さで読む必要はありません。まずは「何を求める問題なのか」を確認し、次に「入力」「出力」「変数」「繰返し条件」を見ていくと、読むべき場所が整理されます。
アルゴリズムの考え方に慣れていないから¶
アルゴリズムとは、ざっくり言えば問題を解くための手順です。
料理でいえばレシピに近いものです。カレーを作るときに、野菜を切る、炒める、水を入れる、煮る、ルーを入れるという順番がありますよね。
プログラムも同じです。コンピュータに何をどの順番でやらせるかを決めるのがアルゴリズムです。
科目Bでは、この手順を擬似言語で読み取る力が必要になります。だからこそ、単語を暗記するだけではなく、処理の流れを追う練習が欠かせません。
擬似言語とは何か¶
ここで、科目Bの主役になる擬似言語について確認しておきましょう。
擬似言語とは、特定のプログラミング言語ではなく、試験用に処理の流れを表すための記述方法です。JavaやPythonのような実在の言語そのものではありませんが、考え方はプログラミングにかなり近いです。
擬似言語そのものがまだ不安な方は、先に以下の記事を読んでおくと理解しやすくなります。 【関連記事】擬似言語とは?IT初心者にもわかる意味・書き方・プログラミングとの違いをやさしく解説
擬似言語でよく使う記述¶
基本情報技術者試験の擬似言語では、変数の宣言、代入、条件分岐、繰返し、関数呼び出しなどが登場します。
まずは、次の対応を押さえておきましょう。
| 擬似言語の記述 | 意味 | 読み方のコツ |
|---|---|---|
| 整数型: x | 整数を入れる変数xを用意する | 箱を作るイメージ |
| x ← 10 | xに10を代入する | 右の値を左に入れる |
| if 条件 | 条件が正しいときだけ処理する | 分かれ道 |
| while 条件 | 条件が正しい間、繰り返す | 終了条件に注目 |
| for | 回数を決めて繰り返す | 何回回るかを数える |
| return | 結果を返す | 関数の答え |
特に大切なのは、矢印の読み方です。
x ← 10 は、xが10に変わるという意味です。数学の等号とは違い、左右が同じという意味ではありません。
ここを曖昧にしたまま進むと、トレースで混乱します。試験対策では、まず代入を体で覚えるくらい繰り返しましょう。
記号や書き方をまとめて確認したい方は、以下の記事もあわせて確認してみてください。 【関連記事】擬似言語の記号・記述形式一覧|試験前のチェック早見表
科目Bで必要なアルゴリズムの基礎¶
次に、アルゴリズム対策で最初に押さえたい内容を見ていきます。
科目Bでは、いきなり高度なプログラムを理解するというより、基本的な処理の組み合わせを読めるかが重要です。最初に見るべきなのは、順次処理、条件分岐、繰返し処理です。
順次処理¶
順次処理とは、上から順番に処理を実行することです。
これは一番シンプルですが、意外と大切です。なぜなら、変数の値は上から順番に変わっていくからです。
整数型: a ← 3
整数型: b ← 5
a ← b
b ← a + 2
この場合、最後のaは5、bは7です。
最初のaが3だったことは、3行目で上書きされています。科目Bでは、こうした上書きを見落とさないことが大切です。
条件分岐¶
条件分岐は、条件によって実行する処理を変える仕組みです。
たとえば、点数によって合格か不合格を判定する処理を考えてみます。
整数型: score ← 75
文字列型: result
if (score が 60 以上)
result ← "合格"
else
result ← "不合格"
endif
scoreは75なので、60以上という条件を満たします。そのため、resultには合格が入ります。
条件分岐では、どの条件が最初に真になるかを確認しましょう。elseifが複数ある場合は、上から順番に評価されます。
繰返し処理¶
繰返し処理は、科目Bで苦手に感じる人が多いところです。
理由はシンプルで、同じ処理を何回も実行するため、変数の値が何度も変わるからです。ここでは、小さな例で見てみましょう。
整数型: i
整数型: total ← 0
for (i を 1 から 3 まで 1 ずつ増やす)
total ← total + i
endfor
この処理では、iが1、2、3と変化します。
totalは最初0です。1回目で1、2回目で3、3回目で6になります。つまり、最後のtotalは6です。
繰返し処理が出てきたら、頭の中だけで追おうとしないでください。最初のうちは、iとtotalの表を書きながら追うのがおすすめです。
| 回数 | i | totalの変化 |
|---|---|---|
| 初期値 | - | 0 |
| 1回目 | 1 | 1 |
| 2回目 | 2 | 3 |
| 3回目 | 3 | 6 |
このような表を作ることを、トレースといいます。
トレースは地味ですが、科目Bの得点力に直結します。エンジニア歴10年の今でも、複雑な処理を読むときは紙やメモに変数を書き出します。
プロでも頭だけで全部追うわけではありません。だから初心者の方も、書きながら解くことを恥ずかしいと思わなくて大丈夫です。
科目Bの擬似言語問題の解き方¶
ここからは、実際に科目Bの問題を解くときの流れを説明します。
いきなりプログラムの1行目から読むと、途中で迷子になりやすいです。まずは全体像をつかみ、次に細かい処理を追っていきましょう。
最初に問題が聞いていることを確認する¶
最初に見るべきなのは、設問です。
この問題は、実行結果を聞いているのか。空欄に入る条件を聞いているのか。配列の何番目の値を聞いているのか。
ここを確認しないままプログラムを読むと、必要のない場所まで細かく読んでしまいます。科目Bは時間との勝負でもあるので、目的を先に決めることが大切です。
変数の初期値を確認する¶
次に、変数の初期値を見ます。
変数がどの値から始まるかがわからないと、その後の処理を正しく追えません。特に配列やカウンタ変数は、初期値の見落としがよくあります。
たとえば、total ← 0 なのか total ← 1 なのかで、結果が変わることがあります。
小さな違いに見えますが、試験ではその小さな違いが選択肢の差になります。
繰返しの回数を確認する¶
繰返し処理が出てきたら、何回実行されるかを確認します。
1から5まで なら5回です。0から5未満 なら、0,1,2,3,4の5回です。
初心者がよく間違えるのは、以上、以下、未満、より大きいの読み違いです。ここは焦らず、具体的な数字を書き出しましょう。
選択肢は最後に見る¶
選択肢を見ると、どうしてもそれっぽい答えに引っ張られます。
そのため、最初は自分で処理を追い、答えの候補を出してから選択肢を見るのがおすすめです。完全に答えが出せなくても、変数の範囲や条件を確認しておけば、明らかに違う選択肢を消せます。
これは実務でも同じです。エラーの原因を探すとき、先に思い込みで決めつけると遠回りになります。
まず事実を見る。次に仮説を立てる。この順番が、プログラムを読む力を育てます。
初心者におすすめの勉強ステップ¶
科目B対策では、いきなり難しい問題集を解くよりも、基礎から段階的に進める方が効率的です。
私が初心者におすすめする流れは、次のような順番です。
| ステップ | 学習内容 | 目的 |
|---|---|---|
| 1 | 擬似言語の記号を覚える | 問題文を読める状態にする |
| 2 | 変数と代入を練習する | 値の変化を追えるようにする |
| 3 | ifとforを読む | 条件分岐と繰返しに慣れる |
| 4 | 配列を学ぶ | 科目Bで頻出の処理に対応する |
| 5 | 簡単な問題をトレースする | 解き方を体に覚えさせる |
| 6 | サンプル問題や過去問風問題を解く | 本番形式に慣れる |
大切なのは、理解したつもりで終わらせないことです。
擬似言語は、読んでわかった気になるのと、自分で変数を追えるのとでは大きな差があります。必ず手を動かして、表を書きながら練習しましょう。
学習の進め方をもっと詳しく知りたい方は、以下の記事も参考にしてください。 【関連記事】擬似言語の勉強方法とは?IT初心者でも無理なく身につく学習ステップを解説
科目B対策でやってはいけない勉強法¶
効率よく合格を目指すなら、避けたい勉強法もあります。
最初にありがちなのが、解説を読んで満足してしまうことです。解説を読むとわかった気になりますが、同じような問題を自力で解けるとは限りません。
もう一つは、難しいアルゴリズムから始めてしまうことです。
再帰、木構造、グラフなどは重要ですが、初心者が最初に取り組むと挫折しやすいです。まずは、変数、条件分岐、繰返し、配列を固めましょう。
また、プログラミング言語の文法学習に寄りすぎるのも注意が必要です。
もちろんPythonやJavaを学ぶことは役に立ちます。ただ、基本情報技術者試験の科目Bでは、特定の言語ではなく擬似言語が使われます。試験で使う記述形式に慣れることを優先しましょう。
エンジニア歴10年の私が感じる科目B対策のコツ¶
ここでは、少し実務目線の話をします。
エンジニアとして10年ほどコードを読んだり書いたりしてきて感じるのは、プログラムを読む力は一気に身につくものではないということです。最初は誰でも遅いです。
ただ、遅くても正しく追える人は伸びます。
実務でも、複雑なバグを調べるときは、変数の値、条件、繰返しの回数を一つずつ確認します。結局、科目Bで求められる力は、実務の基礎にもつながっています。
初心者の方に伝えたいのは、焦って速く読もうとしなくていいということです。
最初は1問に時間がかかって当然です。むしろ、最初から速く解こうとして読み飛ばす方が危険です。
おすすめは、最初のうちは正解数よりも、なぜその答えになるのかを説明できるかを重視することです。自分の言葉で処理を説明できるようになると、似た問題にも対応しやすくなります。
科目Bの直前対策で確認したいこと¶
試験が近づいてきたら、新しい内容を大量に詰め込むより、よく出る基本を確認しましょう。
直前期に確認したいのは、代入、条件分岐、繰返し、配列、関数、論理演算です。特に、and、or、notの条件は読み違えやすいので注意してください。
また、問題を解くときは時間を測ることも大切です。
普段は解けるのに、本番で時間が足りないということはよくあります。1問に時間をかけすぎたら、一度飛ばす判断も必要です。
科目Bは全問必須形式なので、苦手な問題で止まり続けると後ろの解ける問題を落としてしまいます。これは本当にもったいないです。
まとめ:科目Bは擬似言語の読み方を覚えれば怖くない¶
基本情報技術者試験の科目Bは、IT初心者にとって最初は難しく感じやすい分野です。
しかし、出題の中心は擬似言語とアルゴリズムです。つまり、対策すべきポイントはかなりはっきりしています。
まずは、変数、代入、条件分岐、繰返し、配列を押さえましょう。次に、簡単な問題を使ってトレースの練習をします。
科目Bで大切なのは、プログラムを暗記することではなく、処理の流れを自分で追えるようになることです。
最初は時間がかかっても大丈夫です。1行ずつ読み、変数を書き出し、なぜその答えになるのかを確認していけば、少しずつ問題が読めるようになります。
基本情報技術者試験の科目Bは、正しい順番で勉強すれば、初心者でも十分に対策できます。焦らず、まずは小さなプログラムを読むところから始めていきましょう。