サイタパソコン教室・IT資格情報処理技術者試験対策講座基本情報技術者試験 神奈川 基本情報技術者試験対策セミナー レッスンノート ガイダンス・アルゴリズム問題の解説

ガイダンス・アルゴリズム問題の解説

基本情報技術者試験対策講座のレッスンノート

レッスンノートって?レッスンノートって?

4/7の体験レッスンの内容は、以下の通りです。

 ・ ガイダンス
 ・ データ構造・アルゴリズム問題の解説

詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。

□ ガイダンス

体験レッスンの冒頭で、ガイダンスを実施しました。

ここでは主に、

 ・ 前半の選択問題でどの分野を選択するかの確認
 ・ 最後のプログラミング言語の選択問題でどれを選択するかの確認

をしました。

要望としてデータ構造・アルゴリズム問題を何とかしたい点が明確だったので、この後過去問の解説に移りました。


□ データ構造・アルゴリズム問題の解説

ここでは、前回(2017年度秋期)の午後問8の問題を題材にレッスンをすすめました。

この問題のテーマは、「文字列の誤り検出のアルゴリズム」です。

・ 解き方について

アルゴリズムの問題に限りませんが、午後の試験問題は以下の手順で解くと良いと考えています。

 (1) 各設問から確認して、何を答えなければならないかを読み取る
 (2) (1)で読み取った内容をもとに、手掛かりとなる情報を問題本文および図・表から探す

午後試験の150分という時間は、思った以上に短いです。上記の手順は、読む量を最小限にするための工夫だと思ってください。

この問題の解説も、上記手順に沿って進めました。なお、今回は設問1のみです。


・ 設問1

a: エ b: ウ c: エ

この設問では、疑似言語の空欄の穴埋めが要求されています。

疑似言語では、関数calcCheckCharacter と関数validateCheckCharacter の手続き順が記されていますね。

そこで、まずはこの2つの関数の役割が何かを読み取ります。[プログラムの仕様]欄から、以下の情報が読み取れます。

 ・ 関数calcCheckCharacter
  - 検査文字を生成するための関数

 ・ 関数validateCheckCharacter
  - 検査文字付文字列を検証するための関数

これらを読み取れたら、次にそれぞれの役割をどの手順で果たすかを説明している文章を探します。

そうすると、[プログラムの説明]欄にそれらの手順が番号付きで説明されていることがわかります。


あとは、上記の手順説明と疑似言語の表現がどう対応するかを読み取って、空欄を埋めていきます(ここが一番難しいです)。

以下、空欄順に記します。

・ a1

条件分岐の条件式の一部が入ります。is_evenというのは、evenが偶数という意味ですから「偶数かどうかの判定するためのもの」だとわかります。

従って、trueが入れば偶数のとき、falseが入れば奇数のときという意味になりますね。そして、この条件を満たさなかった場合に複雑な式で計算していることがわかります。

これを説明した部分は、[プログラムの説明]欄の(1)の1~2になります。複雑な式で計算する場合は、1の内容から「奇数番目の文字」の場合のようです。

したがって、条件を満たさない場合が奇数番目の処理ということになりますね。したがって、ここでチェックしているのは偶数かどうかです。

以上から、a1にはtrueが入ります。

・ b

最終的な結果の求め方は、[プログラムの説明]欄の(1)の4 です。ポイントは、「総和を N で割った余りを引く。さらにその結果をN で割り、余りを求める」の部分です。

この部分を式で表現したものを、選択肢から選べばOKです。

Nで割った余り、を求める式の表現は「% N」(/ ではない)となることに注意すれば、b にはウの式が入るとわかります。

・ a2

a2では、is_oddの内容をチェックしています。oddは奇数という意味ですから、「奇数かどうかを判定するためのもの」となります。

そして、a2の条件が偽のときに複雑な式になります。

a1と同じように、今度は[プログラムの説明]欄の(2)の1~2から必要な情報を読み取ると、複雑な式で計算するのは偶数番目の文字の場合と書かれています。

偽のときに偶数となるためには、a2は奇数かどうかのチェックとなるのでtrueが入ることになります。

a1、a2ともtrueだったので、aはエになります。

・c

cの条件を満たした場合は、検証結果を偽(false)、即ち誤りがあると判定するとしています。

[プログラムの説明]欄の(2)の4から、総和がNで割り切れなかった場合には誤りありと判定するとわかります。

Nで割り切れないことを確認する式は、「Nで割った余りが0 にならないこと」になります。したがって、エの式が正解となります。

目的・種類別に基本情報技術者試験対策・合格講座を探す

新着レッスンノート

10/5 のレッスン内容は、以下の通りです。  ・ 擬似言語の読み方 詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。 □ 擬似言語の読み方 擬似言語は、午後の試験において  ・ 問8(データ構造とアルゴリズム)  ・ 問13(表計算) ...

6/26 のレッスンでは、  ・ 2019年度秋期試験に向けた学習方針 についてアドバイスしました。 詳細は、別途お渡ししたノートを参照してください。

4/17 のレッスンの内容は、以下の午後過去問の解説です。  ・ 2016年度春期 午後問5   - 設問3~4  ・ 2017年度秋期 午後問5   - 全問 今回の解説の詳細は、レッスン中に紙でお渡ししたノートを参照してください。

4/15 のレッスンの内容は、以下の午前過去問の解説です。  ・ 2015年度秋期   - 問32  ・ 2016年度春期   - 問2  ・ 2016年度秋期   - 問2、問4、問30  ・ 2017年度春期   - 問22  ・ 2017年度秋期   - 問75 ...

4/13 のレッスンの内容は、以下の通りです。  ・ 2017年度春期のアルゴリズムの問題 詳細は、レッスン中に紙でお渡ししたノートも併せて参照してください。 □ 2017年度春期のアルゴリズム問題 今回は、過去問の中から  ・ 2017年度春期 午後問8 ...

レッスンノート ページ先頭へ

基本情報技術者試験情報

サイタの基本情報技術者試験講師がブログを通して、基本情報技術者試験情報を発信。更新情報のチェックはこちらから!