HOME»基本情報技術者平成24年春期問題»午後問5
基本情報技術者過去問題 平成24年春期 午後問5
⇄問題文と設問を画面2分割で開く⇱問題PDF問5 ソフトウェア設計
受験者数の集計リスト作成に関する次の記述を読んで,設問1~3に答えよ。
C大学では,今年度と前年度の受験者データを用いて,出身校ごとの受験者数を集計した出身校別受験者数リスト(以下,出身校リストという)を作成する。
〔受験者データ及び出身校リストの説明〕
図4に,出身校リスト作成処理の流れと各ファイルのレコード様式を示す。
C大学では,今年度と前年度の受験者データを用いて,出身校ごとの受験者数を集計した出身校別受験者数リスト(以下,出身校リストという)を作成する。
〔受験者データ及び出身校リストの説明〕
- 今年度と前年度の受験者データは,それぞれ今年度受験者ファイルと前年度受験者ファイルの二つの順ファイルに保存されている。これらのレコード様式を図1に示す。
- 今年度受験者ファイル及び前年度受験者ファイルのレコードは,どちらも学校コードの昇順に並んでいる。
- 図2に示す例のように,出身校リストの印字項目は,順位,学校名,今年度受験者数,前年度受験者数である。印字の順序は,今年度受験者数の降順とし,今年度受験者数が同数の場合は,前年度受験者数の降順,それも同数の場合は,学校コードの昇順とする。
順位は,今年度受験者数の多い方から1,2,3,…と採番した番号である。今年度受験者数が同じ場合は同順位とし,次の順位は,同順位の学校数分だけ加算した順位とする。
学校名は,学校名ファイルから得る。学校名ファイルのレコード様式を図3に示す。 - 図2に示す例のように,出身校リストには,1位から指定した順位(以下,指定順位という)までを印字し,指定順位よりも下位の学校の受験者数は,それらを合計して"その他計"として印字する。
図4に,出身校リスト作成処理の流れと各ファイルのレコード様式を示す。
- 集計処理では,今年度受験者ファイルと前年度受験者ファイルから,それぞれ学校ごとに受験者数を集計したファイル1及びファイル2を作成する。
- 突合せ処理では,学校コードをキーとして,ファイル1とファイル2の突合せを行い,ファイル3を作成する。この突合せ処理の中では,整列は行わない。
- 整列処理では,ファイル3を整列し,ファイル4を作成する。
- 順位付け処理では,ファイル4の各レコードの順位付けを行い,ファイル5を作成する。
- リスト作成処理では,ファイル5から,出身校リストを作成する。学校ごとの明細行の印字は,ファイル5の1レコードの内容から1行ずつ,指定順位まで印字する。このとき,学校名は,学校コードをキーにして学校名ファイルから読み込む。指定順位よりも下位のレコードは,それらの受験者数を合計して"その他計"として印字する。
設問1
表1は,図4中の突合せ処理における条件に合致するレコードの有無と出力レコードの各項目の内容である。表1中の に入れる正しい答えを,解答群の中から選べ。
a,b に関する解答群
解答選択欄
- a:
- b:
解答
- a=エ
- b=カ
解説
ファイル1が今年度受験者ファイル、ファイル2が前年度受験者ファイルをそれぞれ集計したものです。
〔aについて〕
ファイル1にレコードがあり、ファイル2にレコードがないケースは「今年度は受験者が存在するが、前年度は受験者がいなかった学校」の場合に発生します。
したがって今年度受験者の項目にはファイル1の現在参照しているレコードの受験者数の値を、前年度受験者の項目には 0 を出力するのが適切です。
∴a:エ:ファイル1の当該項目,0
〔bについて〕
ファイル1にレコードがなく、ファイル2にレコードがあるケースは「今年度は受験者がいなかったが、前年度は受験者が存在した学校」の場合に発生します。
ファイル1にはレコードがないため、学校コードの項目にはファイル2の現在参照しているレコードから取得した学校コードの値を、今年度受験者の項目には 0 を出力するのが適切です。
∴b:カ:ファイル2の当該項目,0
〔aについて〕
ファイル1にレコードがあり、ファイル2にレコードがないケースは「今年度は受験者が存在するが、前年度は受験者がいなかった学校」の場合に発生します。
したがって今年度受験者の項目にはファイル1の現在参照しているレコードの受験者数の値を、前年度受験者の項目には 0 を出力するのが適切です。
∴a:エ:ファイル1の当該項目,0
〔bについて〕
ファイル1にレコードがなく、ファイル2にレコードがあるケースは「今年度は受験者がいなかったが、前年度は受験者が存在した学校」の場合に発生します。
ファイル1にはレコードがないため、学校コードの項目にはファイル2の現在参照しているレコードから取得した学校コードの値を、今年度受験者の項目には 0 を出力するのが適切です。
∴b:カ:ファイル2の当該項目,0
設問2
図4中の整列処理に最低限必要な整列キー項目及び整列順(昇順又は降順)の組の並びとして正しい答えを,解答群の中から選べ。ここで,キー項目及び整列順の組は,([整列キー項目];[整列順])で表す。また,コンマで区切られた組の並びは,左の方が整列の優先度が高いことを表す。
解答群
- (学校コード;昇順),(今年度受験者数;昇順),(前年度受験者数;昇順)
- (学校コード;昇順),(前年度受験者数;降順),(今年度受験者数;降順)
- (今年度受験者数;降順),(前年度受験者数;降順),(学校コード;降順)
- (今年度受験者数;降順),(前年度受験者数;降順),(学校コード;昇順)
- (今年度受験者数;降順),(前年度受験者数;降順)
- (今年度受験者数;昇順),(学校コード;昇順)
解答選択欄
解答
- エ
解説
(3)の整列処理の次の処理である(4)順位付け以後では整列が行われないため、整列処理で生成されるファイル4は、最終的な出力である出身校リストの順序に整列されている必要があります。
設問中の出身校リストの説明に「印字の順序は,今年度受験者数の降順とし,今年度受験者数が同数の場合は,前年度受験者数の降順,それも同数の場合は学校コードの昇順とする」とあるため、この記述に従い整列の優先順位を設定します。
したがって整列キーの並びと整列順の組合せは
(今年度受験者数;降順),(前年度受験者数;降順),(学校コード;昇順)
が適切です。
∴エ
設問中の出身校リストの説明に「印字の順序は,今年度受験者数の降順とし,今年度受験者数が同数の場合は,前年度受験者数の降順,それも同数の場合は学校コードの昇順とする」とあるため、この記述に従い整列の優先順位を設定します。
したがって整列キーの並びと整列順の組合せは
(今年度受験者数;降順),(前年度受験者数;降順),(学校コード;昇順)
が適切です。
∴エ
設問3
次の記述中の に入れる正しい答えを,解答群の中から選べ。
〔出身校リストへの印字項目追加の説明〕
図5に示す例のような,出身校リストに前年度順位を追加した出身校別受験者数リスト2(以下,出身校リスト2という)を作成することになり,処理の追加と変更を行うことになった。前年度に受験者がいなかった高校の前年度順位は空欄とする。
図6に出身校リスト2作成処理の流れと主なファイルのレコード様式を示す。〔出身校リスト2作成処理の説明〕
〔出身校リストへの印字項目追加の説明〕
図5に示す例のような,出身校リストに前年度順位を追加した出身校別受験者数リスト2(以下,出身校リスト2という)を作成することになり,処理の追加と変更を行うことになった。前年度に受験者がいなかった高校の前年度順位は空欄とする。
図6に出身校リスト2作成処理の流れと主なファイルのレコード様式を示す。〔出身校リスト2作成処理の説明〕
- 図6の処理は,図4の同名の処理に,入出力のレコード様式への前年度順位の追加に対する変更を加えたものを用いる。
- 前年度受験者ファイルからファイル8を作成するまでの処理に用いられる処理1~4のうち,処理2は,c処理である。また,処理4は,d処理である。
- 変更になる突合せ処理の出力であるファイル9及びそれを整列した出力であるファイル10のレコード項目は,eである。
c,d に関する解答群
- 学校コードの降順への整列
- 学校コードの昇順への整列
- 学校ごとの人数の集計
- 受験者数の降順への整列
- 受験者数の昇順への整列
- 順位付け
- リスト作成
e に関する解答群
- 学校コード,今年度受験者数,前年度受験者数
- 学校コード,今年度受験者数,前年度順位
- 学校コード,今年度受験者数,前年度順位,前年度受験者数
- 学校コード,今年度順位,今年度受験者数,前年度受験者数
- 学校コード,今年度順位,今年度受験者数,前年度順位,前年度受験者数
- 学校コード,今年度順位,前年度受験者数
- 学校コード,今年度順位,前年度順位
- 学校コード,今年度順位,前年度順位,前年度受験者数
解答選択欄
- c:
- d:
- e:
解答
- c=エ
- d=イ
- e=ウ
解説
〔c,dについて〕
図6をみると前年度受験者ファイルに処理1~4が行われ、ファイル8が生成されていることがわかります。
ファイル8はファイル1と突合せを行う関係上、以下の形式になっている必要があります。
次に順位付けの手順を考えます。図1の「出身校別リストの作成」でも今年度受験者数による順位付けが行われていますが、これは以下の手順で行われています。
これらのことから、図6中の処理1~4はそれぞれ「ウ」「エ」「カ」「イ」の処理が行われると考えることができます。したがって処理2は受験者数の降順への整列、処理4は学校コードの昇順への整列が正解です。
∴c=エ:受験者数の降順への整列
d=イ:学校コードの昇順への整列
〔eについて〕
最終的な出力となる「出身校リスト2」の項目は"順位"、"学校名"、"今年度受験者数"、"前年度順位"、"前年度受験者数"の5つです。
このうち"順位"はファイル11を生成する過程で、"学校名"はリスト作成の過程で付加されるため、ファイル10の時点では、上記2つ以外の"今年度受験者数、"前年度順位"、"前年度受験者"および学校名を参照するために必要な"学校コード"が含まれていればよいことになります。
選択肢のうち、この4つの項目が全て含まれている「ウ」が正解となります。
∴e=ウ:学校コード,今年度受験者数,前年度順位,前年度受験者数
図6をみると前年度受験者ファイルに処理1~4が行われ、ファイル8が生成されていることがわかります。
ファイル8はファイル1と突合せを行う関係上、以下の形式になっている必要があります。
- 学校ごとに受験者数が集計されている
- 学校コードをキーとして突合せ行うため、ファイル1と同じく学校コードの昇順に整列されている
- 受験者数の順位が付けられている
次に順位付けの手順を考えます。図1の「出身校別リストの作成」でも今年度受験者数による順位付けが行われていますが、これは以下の手順で行われています。
- 学校ごとに受験者数の集計(集計処理)
- 受験者数の降順に整列(集計処理)
- 先頭レコードから順に順位付け(順位付け処理)
- 「ウ」学校ごとに人数の集計
- 「エ」受験者数の降順への整列
- 「カ」順位付け
これらのことから、図6中の処理1~4はそれぞれ「ウ」「エ」「カ」「イ」の処理が行われると考えることができます。したがって処理2は受験者数の降順への整列、処理4は学校コードの昇順への整列が正解です。
∴c=エ:受験者数の降順への整列
d=イ:学校コードの昇順への整列
〔eについて〕
最終的な出力となる「出身校リスト2」の項目は"順位"、"学校名"、"今年度受験者数"、"前年度順位"、"前年度受験者数"の5つです。
このうち"順位"はファイル11を生成する過程で、"学校名"はリスト作成の過程で付加されるため、ファイル10の時点では、上記2つ以外の"今年度受験者数、"前年度順位"、"前年度受験者"および学校名を参照するために必要な"学校コード"が含まれていればよいことになります。
選択肢のうち、この4つの項目が全て含まれている「ウ」が正解となります。
∴e=ウ:学校コード,今年度受験者数,前年度順位,前年度受験者数