AOBA's Information Processing Education
1998/11/21
注意1:このページは、回線を切断した後でゆっくりご覧になってください(テキストを印刷する場合は、その取り扱いに注意してください)。
注意2:背景が白地の画面を長時間見つめていると頭が痛くなってしまいますので、ここは背景をグレーにしています。
「平成6年秋期 第2種 午前」 問31 二分木を入力するためのテキスト表現として、
(左部分木の節番号又はテキスト表現,節番号,右部分木の節番号又はテキスト表現)
と記述する方法を採用した。部分木が空のときは x を書く。図のように節に番号をつけたとき、テキスト表現として正しいものはどれか。
![]()
ア ((1,2,3),(4,5,6)) イ ((1,2),3,(4,5,6))
ウ ((1,2,3),x,(4,5,6)) エ ((1,2,x),3,(4,5,6))
オ ((1,2,x),3,(6,5,4))問32 4けたの数字(a1a2a3a4)をハッシュ法を用いて配列に格納したい。
ハッシュ関数を mod(a1+a2+a3+a4,5)とし、求めたハッシュ関数値に対応する位置の配列要素に格納する場合、9576は次の配列のどこに入るか。ここで、mod(x,5)の値は、xを5で割った余りとする。
![]()
問33 1,000個の相異なる要素が、キーの昇順に整列された表がある。外部から入力したキーによってこの表を2分探索して、該当するキーの要素を取り出す。このときのキーの比較回数は最大何回か。ただし、該当するキーは必ず表中にあるものとする。
ア 5 イ 8 ウ 10 エ 20 オ 50
問34 図のような単方向リストがある。”東京”がリストの先頭であり、そのポインタには次のデータのアドレスが入っている。また、”名古屋”はリストの最後であり、そのポインタには0が入っている。
アドレス150に置かれた”熱海”を、”新横浜”と”静岡”の間に挿入する場合の適切な処理はどれか。
![]()
ア 熱海のポインタを50とし、東京のポインタを150とする。
イ 熱海のポインタを50とし、名古屋のポインタを150とする。
ウ 熱海のポインタを70とし、静岡のポインタを150とする。
エ 熱海のポインタを70とし、新横浜のポインタを150とする。
オ 静岡のポインタを70とし、新横浜のポインタを150とする。問35 次の記述は、システム開発工程の作業内容を示したものである。開発手順に従って並べたものはどれか。
a 現状の問題を調査・分析し、対象システムへの要求を定義する。
b システム構築上必要となる機能をプログラムに分割し、処理の流れを明確にする。
c 詳細処理手順を設計,コーディングし、その修正を行う。
d テストを行う。
e 内部設計書に基づいて各プログラム内の構造設計を行う。
f システムへの要求条件をもとに、システムとして必要な機能を定義する。ア a−f−b−c−e−d イ a−f−b−e−c−d
ウ a−f−c−b−e−d エ a−f−e−b−c−d
オ a−f−e−c−b−d問36 プロトタイピングの特徴として適切なものを二つ選べ。
ア 実際に運用するシステムと同じものをプロトタイプでも実現しないと、プロトタイピングの目的は達成できない。
イ 短期間で暫定的に動作するソフトウェアを作り、ユーザに試用してもらい、評価と修正を繰り返しながら、仕様を確定していく。
ウ 船などを作る場合、模型を作ることによって製品イメージを明確にするが、模型は必ずしも水に浮く必要はない。プロトタイプも同様に、計算機上で動作できなくてもよい。
エ プロトタイピングでは、ユーザを開発過程に巻き込むことが難しいので、ユーザの参画意識の向上を図りたい場合、プロトタイピングの手法は適用すべきではない。
オ プロトタイプはあくまで試作品であるので、仕様が確定した段階で改めて本格的なシステムを開発することがある。問37 システム開発工程のうちの外部設計における作業内容として、適切でないものはどれか。
ア 会話処理を実現するための画面遷移や画面レイアウトを設計する。
イ コードを付与する対象を選定し、コード付与対象ごとにコード表を作成する。
ウ プログラムの構造を決定し、その詳細機能を洗い出す。
エ 報告書の出力媒体の選択や報告書レイアウトの設計を行う。
オ ユーザのシステム化要求を明確化するため、業務フローを整理,確認する。問38 与えられたデータから一定の規則に従って数値を算出し、この数値で検査文字を定め、データの最終けたに付与することによって、入力データの検査を行う方法がある。
次の規則を用いた場合に、4けたの数値データ”2131”に付加する検査文字として、正しいものはどれか。ここで、データの各けたに割り当てる係数は、先頭から4,3,2,1とする。[規則]
- 各けたの数値と割り当てた係数との積の和を求める。
- 1.で求めた値を11で割って余りを求める。
- 2.で求めた余りの数字を検査文字とする。余りが10のときは、Xを検査文字とする。
ア 1 イ 3 ウ 5 エ 7 オ 9
問39 データチェックの解説又は例として、正しいものはどれか。
ア 照合チェック
一定の規則に従ってデータから検査文字を算出し、データにその検査文字を付加することによって、入力データをチェックする。イ チェックディジットチェック
販売数と在庫数と仕入数の関係など、対となる項目の値に矛盾がないかどうかをチェックする。ウ ニューメリックチェック
数値として扱う必要のあるデータに、文字などの数値として扱えないものが含まれていないかどうかをチェックする。エ フォーマットチェック
マスタファイル作成時の入力データ中に、同一キーのレコードが複数個あるかどうかをチェックする。オ リミットチェック
支店から本店への売上データの伝送処理において、すべてのデータが伝送されているかどうかをチェックする。
問40 プログラム設計工程でモジュール分割を行う場合の留意事項の例として、適切でないものはどれか。
ア 1モジュールから呼び出す従属モジュールの数に制限をつける。
イ 1モジュールが適切な大きさのステップ数になるようにする。
ウ モジュールからモジュールを呼び出す階層構造があまり深くならないようにする。
エ モジュール間のインタフェースが単純になるようにする。
オ モジュール内の論理を分かりやすくするために、適度にコメントをつける。
解説 問31について
二分木を入力するためのテキスト表現は、
(左部分木の節番号又はテキスト表現,節番号,右部分木の節番号又はテキスト表現)
です。
最初に、木の根(節番号3)の部分に注目してテキスト表現にすると、
(節番号2以下のテキスト表現,3,節番号5以下のテキスト表現)
となります。
さらに、節番号2以下のテキスト表現と、節番号5以下のテキスト表現はそれぞれ
(1,2,x)と(4,5,6)ですので、これを元の(木の根の)テキスト表現に展開して、
((1,2,x),3,(4,5,6))と求まります。問32について
問題に記されている手順どおりに計算するだけです。最初に各けたをすべて加算します。9+5+7+6=27.....@
@で得た値を5で割り、その余りを求めます。27÷5=5 余り 2よって格納する位置は2
問33について
2分探索の比較回数を知っていなければなりません。2分探索の平均比較回数=[log2要素数]
2分探索の最大比較回数=2分探索の平均比較回数+1
ここで、[x]はxの小数点以下を切り捨てた値(整数)。ちょっとlogの計算が面倒ですね。試験では関数電卓は使えませんから...。
ここで、logについて復習(高校で習っているはず)します。これさえ知っていれば、大抵の問題は何とか回答できますよ。logabを求めるには、aを何乗すればbになるかを考えればいいのです。
つまり、logab=cのとき、ac=bの関係にあることを利用します。
[簡単な例題]
log21024 はいくつ?−−>答え10 (210=1024)さて問題の解説に戻り、2分探索の平均比較回数を求めます。
1000個の要素の平均比較回数はlog21000ですが、この値は9より大きく10より小さい値のはずです。なぜなら、2を9乗すると512しかなりませんが、10乗すると1024になるからです。
ということで、1000個の要素の平均比較回数は9回で、最大比較回数は10回。問34について
リストを次の形式で表現することにします。
(アドレス,データ部分,ポインタ)→(アドレス,データ部分,ポインタ)→・・・・・・
(注)ある要素のポインタが、次の要素のアドレスと一致する。この形式を用いて、元のリストを表現すると、
(10,東京,50)→(50,新横浜,70)→(70,静岡,90)→(90,浜松,30)→(30,名古屋,0)
となります。
ここで、熱海(150,熱海,?)を新横浜(50,新横浜,70)と静岡(70,静岡,90)の間に挿入すると、
(10,東京,50)→(50,新横浜,150)→(150,熱海,70)→(70,静岡,90)→(90,浜松,30)→(30,名古屋,0)
(注)太字は変更された部分となり、熱海のポインタを70、新横浜のポインタを150にすることが分かります。
問35について
a 要求定義についての記述
b 内部設計についての記述
c モジュール設計とコーディングについての記述
d テストについての記述
e プログラム設計についての記述
f 外部設計についての記述システム開発は一般に、ウォーターフォールモデルに基づいて行われます。ウォーターフォールモデルでは、基本計画(要求定義)→外部設計→内部設計→プログラム設計→モジュール設計→コーディング→テスト→運用→保守 の順で作業が進められるので、答えは、a−f−b−e−c−dです。
問36について
プロトタイピングとは、システムの要求定義段階でユーザの要求を目に見える形で確認するため、試作品(プロトタイプ)を作成して開発する手法です。
プロトタイピングを行うことにより、ユーザと開発者間の要求仕様の違いの食い違いを抑えることや、ユーザのプロジェクトの参画意識の向上に効果がある、といわれています。
勘違いされる人も多いのですが、プロトタイピングはシステム開発工程の初期の段階(要求定義)で用いるものであり、その後の設計と開発工程は、従来どおりウォーターフォールモデルで行うのが一般的です。ましてや、ドキュメント(設計書)を書かなくてもよい手法では、決してありません。ア プロトタイプは、あくまでもユーザと開発者で、システムのイメージを固めるためのもの(例えば、画面だけが動くもの)ですので、実際に運用するシステムと同じものである必要はありません。
イ 正しい
ウ コンピュータシステムのプロトタイプは、コンピュータ上で動作しなければ意味がありません。
エ プロトタイピングは、ユーザのプロジェクトの参画意識の向上に効果があります。
オ 正しい問37について
外部設計は、システムとしての必要な機能を定義する工程です。ここでは主に、ユーザからみたシステムの機能を定義します。したがって解答群のウにあるような、プログラムの内部構造に立ち入った設計は行いません。問38について
問題に記されている[規則]どおりに計算するだけです。[規則1.]2*4+1*3+3*2+1*1=18
[規則2.]18/11=1 余り7
[規則3.]余りが10でないので、7が検査文字問39について
ア チェックディジットチェックの記述(問38のチェック)
イ バランスチェックの記述
ウ ニューメリックチェックの記述
エ 重複チェックの記述
オ ???(ユニークな名称は存在しないと思います)照合チェック:トランザクションとマスタデータを突き合わせて、不都合がないかチェックする方法
フォーマットチェック:レコード中の各項目が、設計されたとおりの文字や桁数になっているかをチェックする方法(ニューメリックチェックはフォーマットチェックの一部)
リミットチェック:データに上限値または下限値を設定して、入力されたデータが上限値または下限値を超えないかをチェックする方法(両方チェックするのは範囲チェック)問40について
解答群のア〜エまではすべて、モジュール分割作業における正しい記述です。オの記述はコーディング作業における(正しい)留意事項ですが、モジュール分割作業についての留意事項ではありません。
解答
問31 エ 問32 ウ 問33 ウ 問34 エ 問35 イ
問36 イ,オ 問37 ウ 問38 エ 問39 ウ 問40 オ