科目 B 試験 アルゴリズムとプログラミング 対策はプログラミングを経験すること|科目 A 試験・科目 B 試験サンプル問題セットからわかる傾向と対策 (2)
2022 年 12 月 26 日に情報処理推進機構から新制度の基本情報技術者試験のサンプル問題セット(科目 A 試験と科目 B 試験それぞれ 1 回分のサンプル問題)が公開されました。 受験を予定されている人は、大いに興味があるでしょう。
そこで、
- 科目 A 試験
- 科目 B 試験 アルゴリズムとプログラミング
- 科目 B 試験 情報セキュリティ
の 3 回に分けて、サンプル問題セットの内容から、新制度の試験の出題傾向と対策を解説します。 今回は、「科目 B 試験 アルゴリズムとプログラミング」を取り上げます。
もくじ
科目 B 試験 アルゴリズムとプログラミング サンプル問題セットの分析
出題傾向 1科目 B 試験 アルゴリズムとプログラミング 全 16 問の構成
まず、出題傾向です。 以下は、サンプル問題セットの科目 B 試験アルゴリズムとプログラミング全 16 問の構成を示したものです。
- 問
- 問題の番号です。
- テーマ
- 筆者が独自に付けたものです。
- カテゴリ
- 情報処理推進機構が公開している資料に示されたカテゴリです。
- 難易度
- 筆者の講師経験から、受験者の正解率が 25 % 程度を「難」、 50 % 程度を「中」、 90 % 程度を「易」で示しています。
問 | テーマ | カテゴリ | 難易度 |
1 | 変数に代入を行うプログラム | プログラムの基本要素 | 易 |
2 | fizzBuzz の答えを返す関数 | プログラムの基本要素 | 中 |
3 | 配列を処理する関数 | プログラムの基本要素 | 中 |
4 | 最大公約数を求める関数 | プログラムの基本要素 | 中 |
5 | x2 + y2 の平方根を返す関数 | プログラムの基本要素 | 易 |
6 | ビットの並びを逆にした値を返す関数 | プログラムの基本要素 | 難 |
7 | 階乗を求める関数 | データ構造及びアルゴリズム | 易 |
8 | 優先度付きキューを操作する手続 | データ構造及びアルゴリズム | 中 |
9 | 二分木の全ての節番号を出力する | データ構造及びアルゴリズム | 難 |
10 | 単方向リストから要素を削除する手続 | データ構造及びアルゴリズム | 中 |
11 | 配列を昇順にソートする関数 | データ構造及びアルゴリズム | 中 |
12 | 配列の並びの類似度を返す関数 | プログラミングの諸分野への適用 | 中 |
13 | 不具合があり無限ループになる関数 | プログラミングの諸分野への適用 | 中 |
14 | 配列を特徴づける五つの値を返す関数 | プログラミングの諸分野への適用 | 中 |
15 | 三目並べの手を決定する評価値を得る手順 | プログラミングの諸分野への適用 | 難 |
16 | Unicode の符号位置を UTF-8 の符号に変換する関数 | プログラミングの諸分野への適用 | 難 |
出題傾向 2難易度(かなりの難関である)
難易度を集計すると、
難 = 4 問
中 = 9 問
易 = 3 問
なので、
(4 × 0.25 + 9 × 0.50 + 3 × 0.9) ÷ 16
= 51 %
です。 60 % の正解が合格の基準なので、かなりの難関であるといえます。 旧制度のアルゴリズムの問題と比べて、見た目は短くて簡単そうですが、決して甘く考えてはいけません。
出題傾向 3問題によって難易度に大きな差がある
問題によって難易度に大きな差があります。 以下に、問題の例を示します。 難易度に「易」を付けた問 1 、および「難」を付けた問 6 です。
どちらもカテゴリは「プログラムの基本要素」ですが、問 1 が「変数」や「代入」という基礎的な知識だけで解けるのに対し、問 6 は「マスク演算」や「シフト演算」といった高度な知識が要求されます。 ここでは、問題を解く必要はありません。 問題の雰囲気だけをつかんでください。
(問 1 の正解は選択肢カ、問 6 の正解は選択肢アです)
出題傾向 4問題を解くために必要とされる知識
科目 B 試験のアルゴリズムとプログラミングの問題は、旧制度の午後試験ほど長い問題ではないので、長文読解力は要求されません。 ただし、ちゃんとプログラミングの知識があることが要求されます。 この知識は、プログラミングを経験しないと得られない知識です。
サンプル問題セットの 16 問を解くには、以下の知識が必要となります。
問 | テーマ | 必要とされる知識 |
---|---|---|
1 | 変数に代入を行うプログラム | 変数、代入 |
2 | fizzBuzz の答えを返す関数 | 関数の定義、引数、戻り値、if 文 |
3 | 配列を処理する関数 | 配列の定義、要素、 for 文、算術演算子 |
4 | 最大公約数を求める関数 | if 文、ユークリッドの互除法 |
5 | x2 + y2 の平方根を返す関数 | 既存の関数の利用 |
6 | ビットの並びを逆にした値を返す関数 | 2 進数、マスク演算、シフト演算 |
7 | 階乗を求める関数 | 再帰呼び出し |
8 | 優先度付きキューを操作する手続 | キュー、既存のクラスの利用、コンストラクタ、メソッド、手続の定義 |
9 | 二分木の全ての節番号を出力する手続 | 二分木、根、節、 2 次元配列、再帰呼び出し |
10 | 単方向リストから要素を削除する手続 | 単方向リスト、既存のクラスの利用、参照(ポインタ) |
11 | 配列を昇順にソートする関数 | ビンソート(バケツソート)、未定義の値 |
12 | 2 つの文字列の類似度を返す関数 | 文字列の処理 |
13 | 不具合があり無限ループになる関数 | while 文、二分探索、無限ループ |
14 | 配列を特徴づける五つの値を返す関数 | プログラムの機能を読み取る |
15 | 三目並べの手を決定する評価値を得る手順 | 問題に示された手順を読み取る |
16 | Unicode の符号位置を UTF-8 の符号に変換する関数 | 2 進数、 16 進数、手順とプログラムを対応付ける |
info
「必要とされる知識」には、主な知識だけを示してあり、変数や代入のように、多くのプログラムに共通する知識は示していません。
問 15 では、擬似言語のプログラムは示されておらず、プログラムの手順だけが示されています。
科目 B 試験 アルゴリズムとプログラミング 対策(勉強方法)
ここからは、アルゴリズムとプログラミングの出題傾向を踏まえて、試験対策の解説をさせていただきます。
試験対策 1試験要綱に示された科目 B 試験の出題範囲を知っておこう
2023 年 4 月の試験から、試験要綱 Ver.5.0 が適用されます。
この試験要綱の中に、基本情報技術者試験の科目 B 試験の出題範囲(上記 PDF 39 ページより)が示されているので、自分に欠けている知識がないかを確認しておきましょう。
以下は、科目 B 試験のアルゴリズムとプログラミングの出題範囲です。もしも、この中に知らない概念や用語があれば、書籍や Web で調べて知識を補充してください。 試験問題のほとんどは、擬似言語で記述されたプログラムで出題されるので、具体的なプログラムの例を作って学習してください。
- プログラミング全般に関すること
実装するプログラムの要求仕様(入出力,処理,データ構造,アルゴリズムほか)の把握,使用するプログラム言語の仕様に基づくプログラムの実装,既存のプログラムの解読及び変更,処理の流れや変数の変化の想定,プログラムのテスト,処理の誤りの特定(デバッグ)及び修正方法の検討 など注記 プログラム言語について,基本情報技術者試験では擬似言語を扱う。
- プログラムの処理の基本要素に関すること
型,変数,配列,代入,算術演算,比較演算,論理演算,選択処理,繰返し処理,手続・関数の呼出し など - データ構造及びアルゴリズムに関すること
再帰,スタック,キュー,木構造,グラフ,連結リスト,整列,文字列処理 など - プログラミングの諸分野への適用に関すること
数理・データサイエンス・ AI などの分野を題材としたプログラム など
info_outline試験範囲のアルゴリズムとデータ構造を解説する連載
科目 B アルゴリズムとプログラミング入門
試験対策 2プログラミングを経験する
旧制度ほど長い問題ではないので、長文読解力は要求されません。ただし、何らかのプログラミング言語の経験があり、基本的なプログラミング技法、アルゴリズム、データ構造を知っていないと解けない内容の問題になっています。
さらに、旧制度の擬似言語にはなかったクラスの利用に関する問題があることにも注意が必要です。 クラスを定義する問題は出ていませんが(擬似言語の記述形式にも、クラスの定義に関するものはありません)、クラスを利用する知識(メンバ変数、メソッド、コンストラクタ、など)は必要です。
クラスやオブジェクトを利用できるプログラミング言語( C++, Java, C#, Python, Visual Basic など)で、プログラミングを経験しておく必要があります。
info_outlineインストールなしでプログラミングを体験する記事
試験対策 2テキパキと問題を解く習慣を付けておく
新制度の科目 B 試験では、 20 問を 100 分で解くので、解答時間の目安は 1 問あたり 5 分です(難易度に差があるのであくまでも目安です)。 旧制度と比べると長い問題ではなくなりましたが、 1 問が 5 分ですから、かなり忙しくなるはずです。 学習の段階から、テキパキと問題を解く習慣を付けておくことをお勧めします。
アルゴリズムとプログラミングの分野が苦手な受験者は、比較的時間がかからないと思われる情報セキュリティの分野を先に解くとよいでしょう。
今回は、サンプル問題セットの「科目 B 試験 アルゴリズムとプログラミング」の内容から、新制度の試験の出題傾向と対策を解説しました。 次回は、「科目 B 試験 情報セキュリティ」を取り上げます。
それでは、またお会いしましょう!
label 関連タグ免除試験を受けた 74.9% の方が、 科目A免除資格を得ています。
基本情報技術者試験 科目A免除試験(修了試験)の講評 ~ 2024年7月28日実施
update令和6年度 基本情報技術者試験 公開問題の講評
update基本情報技術者試験 科目A免除試験(修了試験)の講評 ~ 2024年6月9日実施
update基本情報技術者試験のシラバス改定|Ver9.0の概要
update基本情報技術者試験 科目A免除試験 (旧 午前免除試験) の講評 ~ 2024年1月28日実施
update基本情報技術者試験 科目A免除試験 (旧 午前免除試験) の講評 ~ 2023年12月10日実施
update基本情報技術者試験 科目A免除試験 (旧 午前免除試験) の講評 ~ 2023年7月23日実施
update新制度・基本情報技術者試験の過去問(公開問題)からわかる難易度と対策
update新制度・基本情報技術者試験 6月の合格率も 52.7% と高水準が続く
update基本情報技術者試験 新制度で出題された過去問題を IPA が公開
update『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”
大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。
主な著作物
- 「プログラムはなぜ動くのか」(日経BP)
- 「コンピュータはなぜ動くのか」(日経BP)
- 「出るとこだけ! 基本情報技術者」 (翔泳社)
- 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
- 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数