前回の午前編に続いて、今回は基本情報技術者試験の午後問題の中で、IT企業の新人さんたちが苦手とする分野を(私の経験から)紹介しましょう。とは言っても「午後問題が全部苦手」と言う新人さんが多いのです。その理由は、午後問題が長文問題だからです。
午前問題が2時間30分で80問出題されるのに対し、午後問題は、同じ制限時間で7問だけ(午前分野の応用×3問、アルゴリズム×1問、プログラム設計×1問、プログラミング言語×2問)出題されます。問題と設問を合わせて、1問のボリュームが5~6ページあるものもあります。ここに問題を掲載すると、おそらく皆さんも読む気になれないと思いますので、私が新人さんたちに指導しているポイントだけを紹介させていただきます。
【ポイント1】長文問題の要点を見抜くコツ
しばらく試験というものから遠ざかっていると、長文問題を読むこと自体が苦痛になるものです。ましてや、通勤電車の中や、会社の昼休みに勉強している人は、長文問題を演習する時間を割くのも難しいでしょう。どうしたらいいでしょう?お勧めの勉強方法は、同じ問題を何度も練習することです。中途半端に問題を数多くこなすより、1つの問題に深く取り組んだ方が効果的です。
はじめて長文を読んだときは、内容が一向に頭に入らないでしょう。それでも構いませんので、とにかく最後まで読んで、答え合わせをしてください。その上で、同じ問題を読み直してみましょう。はじめて読んだときより、当然ですが、スラスラ頭に入るはずです。そして、問題の「わざとらしさ」が見えてくるはずです。そうなったら、しめたものです。長文の中にある要点を見抜くコツがつかめたのです。
【ポイント2】他人が書いた文書から事実だけを読み解く
午後問題は、どの分野も国語の長文読解のようなものです。他人が書いた文書の内容を正しく読み解けるかどうかがテーマだと言えます。ここで大事なのは、他人が考えたプログラム設計、アルゴリズム、プログラムなどを見て、「自分ならこうする」と想像しないことです。冷静になって事実だけを読み解いてください。
事実だけを読み解くとは何かを知っていただくために、私は、高校受験の参考書の中にあった国語の問題を紹介しています。「平安時代(だったと思います)に、寺の裏に隠れて僧侶が鶏肉を食べていた...」といった内容の長文があり、設問は「この文書から読み取れる歴史的事実を2つ述べよ」となっていました。さて、答えは何でしょう?
何も想像してはいけません。たったこれだけの文書の中から、歴史的事実を2つ読み解くのです。答えは「平安時代には、僧侶が鶏肉を食べることが禁止されていた」「禁止されているにも関わらず、鶏肉を食べている僧侶がいた」です。いかがですか。これが、何も想像せずに、文書の中にある事実だけを読み解くということです。
【ポイント3】あれこれ考える前に選択肢を見る
基本情報技術者試験の問題は、すべて選択式になっています。選択肢は、大きなヒントとなります。問題の長文をざっと読んだら、あれこれ考えずに、すぐに選択肢を見ましょう。それがヒントとなって、問題の理解が深まります。自分勝手な想像をすることも防げます。選択肢をよく見てから、もう一度問題を読み、その上で答えを選びましょう。
【ポイント4】「設計せよ」という問題ではない
![]() |
午後問題の分野が全部苦手と言う新人さんであっても、特にどれが苦手なのかを聞くと、「プログラム設計」を挙げる人がよくいます。その理由は、「プログラム設計などやったことがないから」だそうです。弱気になっているのです。
プログラム設計の問題は、「あなたの考えでオリジナルの設計をせよ」というものではありません。「他人の設計を示す文書を読み解けるか」がテーマです。プログラム設計の経験がなくても、文書を正しく読み解ければ答えを見出せます。
他人の設計と言っても、それほど難しいものではありません。常識的に考えれば、解ける問題ばかりです。たとえば、以下のような「ファイル」と「処理」をつないだ流れ図が示され、「ファイルAが持つべきデータは何か」「処理Aが出力すべきデータは何か」といった設問がよく出題されます。常識的に考えてみましょう。ファイルAが持つべきデータは、処理Aが(場合によっては、その先にある処理Bが)必要とするデータです。処理Aが出力すべきデータは、処理Bが必要とするデータです。この当たり前のことが、問題のテーマになっています。具体的にどのようなデータなのかが、文書のあちこちで説明されているので、ちょっとややこしく感じるだけです。
【ポイント5】アルゴリズムとプログラムは、大きく3つの部分に分ける
プログラム設計の次に苦手と言う人が多いのが、「アルゴリズム」と「プログラミング言語」の問題です。アルゴリズムは、かつてはフローチャートで出題されましたが、現在は擬似言語という独自の表記で出題されます。プログラミング言語は、C言語、COBOL、Java、CASL II(アセンブラ)の中から選択します。
どちらも、学生時代にプログラミング経験がない新人さんは、とくに苦戦する分野です。ただし、言語構文を知っているかどうかとか、オリジナルのプログラムを作れるかどうか、といったことがテーマではありません。他人が考えたアルゴリズムを読み解けるか、他人が書いたプログラムを読み解けるかがテーマです。結局のところ、どちらも長文読解なのです。勉強方法は、同じ問題を何度か繰り返して練習するのでOKです。
プログラミング経験のない新人さんに、アルゴリズムとプログラムの読み方のコツをお教えしましょう。それは、ほとんどの問題の内容が、「初期処理」「繰り返し処理」「終了処理」という3つの部分から構成されているということです。これらの区切りにエンピツで線を引く練習をしておきましょう。
アルゴリズムとプログラムは、データを処理する手順を示したものです。初期処理では、繰り返し処理で使われるデータに初期値が設定されます。終了処理では、最終的に得られた目的のデータが表示されたりファイルに格納されたりします。目的のデータを得るために、繰り返し処理が行われます。なぜ繰り返すか?それは、繰り返さずにサラッと終わるのでは、あまりにも簡単すぎるからです。
アルゴリズムとプログラムでは、登場するデータの役割を見抜くことが重要です。そのためには、まず初期処理と終了処理をじっくり見てください。その上で、初期処理で準備されたデータが、終了処理の状態に至るために必要とされる繰り返し処理を見るのです。もちろん、選択肢という大ヒントを見てから考えてください。
基本情報技術者試験の午後問題に頭を悩ませている新人さんに、ぜひ知っておいてほしいことがあります。それは、「午後問題には全滅防止機能がある」ということです。もしも、最初の設問を見てまるきりわからなくても、「この問題はパスだ」と諦めないでください。多くの場合に、その先にある設問は、前の設問と無関係になっているからです。設問1がかなり難しいのに、設問2がやたらと簡単だったということもあります。私は、これを「全滅防止気機能」と呼んでいます。
基本情報技術者試験を受験される皆さん、がんばれ!がんばれ!がんばれ!