株式会社わくわくスタディワールド

基本情報技術者試験午後プログラム言語の学習ポイント

先日,コメント欄で「基本情報技術者試験のC言語の学習方法」について聞かれた方がいらっしゃいました。
答えようと思いつつ,時間が経ってしまっていたのですが,ここでC言語を中心とした,学習ポイントについてお話ししたいと思います。

基本情報技術者試験の午後では,C,COBOL,Java,アセンブラ,表計算の5つのプログラム言語の問題が出題され,受験者はこのうちの1つを選んで回答します。
どの言語を選ぶのか,というのも,この試験を受ける上で重視されることが多いです。

ただ,大前提として押さえておいて欲しいのは,この試験で問われているのは,「プログラム言語を知っているかどうか」ではありません。
もちろん,知っておかなければ問題を読むこともできませんので,ある程度プログラム言語について学習する必要もあるのですが,それがメインではないのです。

午後の試験問題(PDF)の2ページにある[問題一覧]を見ていただけるとわかりますが,5つのプログラム言語の出題分野は,「プログラミング」ではなく,「ソフトウェア開発」となっています。
つまり,この試験で試されているのは,プログラミングの知識ではなく,「ソフトウェアが開発できる」能力なのです。

他の試験,例えばJavaだとOracle社が開催している「Oracle Certificated Java Programmer」がありますが,この試験では基本的に,プログラミングについて問われます。
その場合には,Javaの細かい文法を知っているかとか,「この場合はどう書くか」的な短い一問一答で,「プログラム言語Java」について知っているかどうかを問われるのが中心です。

でも,情報処理技術者試験では,「ソフトウェア開発」が問われるので,細かい文法などはあまり聞かれません。
そうではなく,「仕様をプログラム言語に落とし込んで,動くシステムが作れる」ことに重点が置かれます。
問題の形式としても,最初に数ページ,〔プログラムの説明〕があって,それを実際の〔プログラム〕として完成させていく,という形で出題されるのが一般的です。

そのため,単なるプログラミング以外の,システム開発全般に関する知識が求められます。
単に,「プログラム言語を知っている」だけでは解けない問題が多いのです。

例えば,先日の平成26年秋午後問9(PDF,47ページ)では,Cプログラムの問題が出題されています。

この問題を解くためには,C言語の文法的には,strcpyやstrcmp,fopenなどの関数,&&や&,||や|などの演算子など,一般的なC言語の本なら必ず書いてあるような内容で十分です。
ただ,この問題ではビット演算が行われるため,午前の基礎理論で出てくる,論理演算を理解しておくことが必要になります。
単純なC言語の知識だけでは解けないのです。

今までの傾向的に,プログラム言語の知識以外で必要になることが多い内容を言語別にまとめると,次のようになります。

C
 ・アルゴリズム全般
 ・論理演算などの基礎理論
COBOL
 ・事務処理のアルゴリズム(コントロールブレイクなど)
Java
 ・オブジェクト指向(ポリモーフィズム,インタフェースなど)
アセンブラ
 ・論理演算などの基礎理論
 ・メモリなどのコンピュータシステム
表計算
 ・論理演算などの基礎理論
 ・経営・ストラテジ分野

基本的にこれらの内容は,午前で学習する内容そのものなので,ちゃんと理解しながら午前分野がマスターできていれば対応できます。
#ただ暗記しているだけだと厳しいですが。。。
プログラムの勉強より前に,午前対策をある程度行っておくことも大切です。

あと,アルゴリズム問題も含めて,プログラム開発では,「仕様を読み取ってそれをプログラムに落とし込む」作業がメインですので,これを行うために,問題文をしっかり読み取って,意図を汲み取る読解力も大事になります。
本を読んだり,問題演習を繰り返したりなど,国語力を高める対策はとても有効です。

いずれにしても,プログラミングは向き不向き,個人差が大きいところなので,「これをやれば誰でも合格」というやり方は存在しません。
自分の適性や現時点でのスキルなどを冷静に判断しながら,自分なりの学習方法を編み出していきましょう。