▲ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏┓ ┃┃  のんびりやろう!情報処理試験! 〜1問1問コツコツと〜  ┃┃ ┃┃ 2003.2.7 vol.1042 23,418 部発行 http://www.shunzei.com/ ┃┃ ┗┛ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ ━PR━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ◆◆◆◆◆◆◆◆◆◆◆「合格ゼミ」 好評受付中! ◆◆◆◆◆◆◆◆◆◆◆ 早くも追加コースが出ている人気のオープンセミナー「合格ゼミ」 人気講師による直前対策が合格力を高めます。 詳細とお申込は http://www.itec.co.jp/seminar/ から ◆◆◆◆ 《IT技術者教育のパイオニア》 アイテックの通信講座 ◆◆◆◆ ---------------------------------------------------------------------- 〓特集〓 今年はパソコン&WEBのプロになってみない?! 今年の抱負はもう決めましたか?今、人気の【パソコンインストラクター】や 【WEBデザイナー】の勉強を始めてみませんか。通信講座なら学校に通う時 間がなくても大丈夫。在宅ワークやSOHOで高収入も!★今なら入学金無料!★ ●案内書を無料送呈中!⇒ http://211.10.20.135/a/a.cgi?k03852Am01027 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━PR━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ◆お知らせ◆ 春期試験の申込みは今日までです! ----------------------------------------------------------------------  こんにちは、しゅんぜいです。  春試験の受験申込みは、今日が締め切りです。  まだ申し込んでいない人は、今すぐ申し込みましょう。  クレジットカードがあれば、インターネット上からも申し込めますよ。  詳細:http://www.jitec.jp/  しゅんぜい多忙に付き、今日の問題はお休みします。スイマセン。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★これ、おしえてっ!(質問編)★ 回答期限:2月6日(木)の夜まで ----------------------------------------------------------------------  「この問題がわからないっ!!」という、  読者からの質問をみなさんに回答してもらおう!というコーナーです。  今回の質問はこちらです。(出典:H10. 1種 問9) ----------------------------------------------------------------------  次のような構造をもった線形リストに関する記述のうち、  正しいものはどれか。   ┌────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐   │Head ●┼→│E1 ●┼→│E2 ●┼→│E3 ●┼→│E4  │   ├────┤ └───┘ └───┘ └───┘ └───┘   │    │                    ↑   │Tail ●┼────────────────────┘   └────┘  ア 要素の削除に要する処理量は、先頭と最後尾とでほぼ同じである。  イ 要素の追加と取出し(読出しの後で削除)を    最後尾で行うスタックとして用いるのに適している。  ウ 要素の追加に要する処理量は、先頭と最後尾とでほぼ同じである。  エ 要素の追加は先頭で、取出し(読出しの後で削除)は    最後尾で行う FIFO(First-In First-Out) のキューとして用いるのに    適している。 ----------------------------------------------------------------------  それでは、みなさんの回答を紹介します。  ○あ〜たんさん > 線形リストは以下のようなものだと思います。 > > [先頭に対する処理] > 追加: >  ・「Head」が新しい要素を指すように変更 >  ・新しい要素のポインタが「E1」を指すように変更 > 削除: >  「Head」が「E2」を指すように変更 > > [最後尾に対する処理] > 追加: >  ・「Tail」が新しい要素を指すように変更 >  ・「E4」のポインタが新しい要素を指すように変更 > 削除: >  ・「E3」のポインタをNULL値に変更 >  ・「Tail」が「E3」を指すように変更 >   → 線形リストでは1つ前の要素を得るためには >     先頭からたどるしかないため、処理量が特に多い。 > > これらから考えると、 > > ア:要素の削除に要する処理量は、最後尾の方が多くなる > > イ:要素の追加と取り出しを先頭で行うスタックとして用いるのに >   適している > エ:要素の追加は最後尾で、取出しは先頭で行うFIFOのキューとして >   用いるのに適している。 > > となると思いますので、「ウ」が正解だと思います。  どうもありがとうございました。「ウ」が正解で良いでしょう。  先頭と最後尾の処理について、一番わかりやすかったので  最初に紹介しておきます。他の選択肢に関してもそれで良いでしょう。  この問題のポイントは、削除や追加を行ったときに  「どのように要素のポインタが変更されるか?」という点です。  まずは、そこをしっかり理解しましょう。  ○塩見さん > >  ア 要素の削除に要する処理量は、先頭と最後尾とでほぼ同じである。 > > 先頭の要素E1を削除するには > 1.Headのポインタ(図の黒丸)をE2につなぐ > > 最後尾の要素E4を削除するには > 1.TailのポインタをE3につなぐ > 2.E4のポインタを例えばNULLにつなぐ > > となり,処理量はほぼ同じとは言えない。 > > >  イ 要素の追加と取出し(読出しの後で削除)を > >    最後尾で行うスタックとして用いるのに適している。 > > > >  エ 要素の追加は先頭で、取出し(読出しの後で削除)は > >    最後尾で行う FIFO(First-In First-Out) のキューとして用いるのに > >    適している。 > > スタックやキューはわざわざリストを使わなくてもよくて, > 配列で作れますね。 > > >  ウ 要素の追加に要する処理量は、先頭と最後尾とでほぼ同じである。 > > 先頭に要素E0を追加するには > 1.HeadのポインタをE0につなぐ > 2.E0のポインタをE1につなぐ > > 最後尾に要素E0を追加するには > 1.TailのポインタをE0につなぐ > 2.E4のポインタをE0につなぐ > > よってウが正解。  どうもありがとうございました。  線形リストの場合、基本的には先頭からたどっていくことになるので  結局は、最後尾の要素を削除する場合が一番処理量がかかります。  (E3のアドレスを拾いに行くため)  ○カスミソウさん > 答え ウ です。 > > リスト構造 アイテック刊 コンピュータシステムの基礎より > データ部とポインタと呼ばれるアドレス(番地)を表すデータ > (ポインタ部と呼ぶ)からなる要素(構造体)で構成される。 > ポインタ部に次の要素のアドレスを入れ、データの順番を表す。 > > > ア 要素の削除に要する処理量は、先頭と最後尾とでほぼ同じである。 > ……最後尾の方が処理量が多い。 > ●削除  アイテック刊 コンピュータシステムの基礎より > (1)DP(削除要素を示すポインタ)、 > DBP(削除要素の一つ前の要素を示すポインタ)を位置付ける。 > (2)DPの示す要素のポインタ部の値をDBPの示す要素のポインタ部に >  セットする。これで、リスト構造上、削除要素はたどれなくなり、 >  リスト構造からの削除は済んだことになるが、さらに完全に記憶領域 >  の解放を行うこともできる。 > > > (先頭の場合…E1を削除する) > HeadからE1をたどり、E1のポインタ部に入ってる値をHeadに入れる。 > (最後尾の場合…E4を削除する) > E3のポインタ部の値は何も示さない状態値を入れ、 > Tailのポインタ部をE3に変更する。 > ここで、TailからE4はたどれるが、E4からE3へは行けないので、 > E3の値を知るためには、Headから順にたどらないといけないので、 > 最後尾の削除の処理量は多くなる。 > > イ 要素の追加と取出し(読出しの後で削除)を >   最後尾で行うスタックとして用いるのに適している。 > ……アより最後尾での取出しは処理量が多いので違うと思います。 > > ウ 要素の追加に要する処理量は、先頭と最後尾とでほぼ同じである。 > ……正解 > ●追加  > ・先頭へ挿入 > (1)新要素はポインタNEWによって示され、新要素のポインタ部には > 何も示さない状態値が入ってる。 > (2)-1 Headの値を新要素のポインタ部にセットする。 > (2)-2 Headの値をNEWに変更する。 > > (E1の前に追加する) > Headに入ってる値を追加する要素のポインタ部にセットする。 > Headの値を追加する要素のアドレスに変更する。 > > (E4のあとに追加する) > 追加する要素のアドレスの値をTailに入れる。 > E4のポインタ部に追加する要素のアドレス値を入れる。 > > > エ 要素の追加は先頭で、取出し(読出しの後で削除)は >   最後尾で行う FIFO(First-In First-Out) のキューとして用いるのに >   適している。 > ……追加はどちらでもいい、取出しは先頭になるのでまちがいだと思う。  どうもありがとうございました。  「エ」に関しては、追加は最後尾の方が適しています。  リスト構造というものがよくわからないと言う人は、下のサイトに行って  この問題を考えると良いかも?  ○ソフトウェア平成13年問10  http://www.kikiroom.com/it/sw/13s/frame-sw13.html  【参考】KIKIの情報処理試験の部屋 http://www.kikiroom.com/  ○オケマツさん > ×ア 要素の削除に要する処理量は、先頭と最後尾とでほぼ同じである。 > > 先頭要素の削除・・・Headの次番地を E2 にする[処理1回] > 最後尾要素の削除・・・Tailの次番地を E3 ,E3の次番地を消去[処理2回] > > ×イ 要素の追加と取出し(読出しの後で削除)を >    最後尾で行うスタックとして用いるのに適している。 > > 最後尾要素の削除に手間が掛かる[処理2回]ので適さない. > > 例えば,以下のような形式なら,処理は1回で済む.(◎を変更のみ) > >          ┌───┐ ┌───┐ ┌───┐ ┌───┐ >          │  E1│←┼● E2│←┼● E3│←┼●E4 │ >   ┌────┐ └───┘ └───┘ └───┘ └───┘ >   │    │                    ↑ >   │Tail ◎┼────────────────────┘ >   └────┘ > > > ○ウ 要素の追加に要する処理量は、先頭と最後尾とでほぼ同じである。 > > 先頭要素の追加・・・Headの番地に新要素 E0 を入れ, >           E0 の次番地に E1 を指定する[処理2回] > > 最後尾要素の追加・・・E4 の次番地に新要素 E5 を入れ, >            Tailの番地を E5に書き換える[処理2回] > > ×エ 要素の追加は先頭で、取出し(読出しの後で削除)は >    最後尾で行う FIFO(First-In First-Out) のキューとして用いるのに >    適している。 > > 要素の削除時に手間が掛かる[処理2回]ので適さない. > > 例えば以下のように「新たな最後尾要素の次番地の削除」を省略すると > 処理は1回で済む(◎を変更するのみ) > >   ┌────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ >   │Head ●┼→│E1 ●┼→│E2 ●┼→│E3 ●┼→│E4 ●│ >   ├────┤ └───┘ └───┘ └───┘ └───┘ >   │    │              ↑     ↑ >   │Tail ◎┼──────────────┘・・・・・┘ >   └────┘  他の例も取り上げていただき、どうもありがとうございました。  ここまで読めば、なんとなくわかってくるのではないでしょうか?>みなさん  ○夢幻花さん > 試験の申込みをした数日後から、いきなり仕事が忙しくなってしまいました。 > 今はほとんど勉強する時間がありません(通勤電車の中くらいしか)。 > でも、受けるからには合格したいので、 > 時間を有効活用しながら頑張っていこうと思います。 > > では、回答にいきます。 > > >ア 要素の削除の要する処理量は、先頭と最後尾とでほぼ同じである。 >    ○先頭の要素(E1)を削除する場合 >     1.HeadからE1を参照しE2へのポインタを得る。 >     2.E2へのポインタをHeadに格納する。 >    ○末尾の要素(E4)を削除する場合 >     1.TailからE4を参照し、E4のアドレスを得る。 >     2.Headから順にE1、E2・・・と辿っていき、 >       次の要素へのポインタがE4のアドレスとなっているものを >       見つける。 >       (この問題の場合、E3まで辿ることになります) >     3.2で見つけた要素のアドレスをTailに格納する。 >    見てわかるように、末尾を削除するほうが面倒です。 > > >イ 要素の追加と取出し(読出しの後で削除)を > >  最後尾で行うスタックとして用いるのに適している。 >    スタックとして用いるから、最後尾で追加と削除を行います。 >    ○末尾へ要素を追加する場合 (仮に要素E5を追加する) >     1.TailからE4を参照する。 >     2.E4のポインタ部にE5のアドレスを格納する。 >     3.TailにE5のアドレスを格納する。 >    ○末尾の要素を削除する場合 >     アを参照 >    末尾の要素を削除する場合、削除する要素のアドレスを >    ポインタとして持っている要素を探すまでに手間がかかります。 >    (例えば、この線形リストの要素数が1万もあったらE1から順に >     E10000まで辿らなければなりません) >    よって、スタックには不向きです。 > > >ウ 要素の追加に要する処理量は、先頭と最後尾とでほぼ同じである。 >    ○先頭に要素を追加する場合 (仮に要素E0を追加する) >     1.Headから先頭の要素E1を参照しE1のアドレスを得る。 >     2.Headのポインタ部にE0のアドレスを格納する。 >     3.E0のポインタ部にE1のアドレスを格納する。 >    ○末尾に要素を追加する場合 >     イを参照 >    要素の追加は先頭度も末尾でも容易です。 > > >エ 要素の追加は先頭で、取出し(読出しの後で削除)は > >  最後尾で行う FIFO(First-In First-Out) のキューとして用いるのに > >  適している。 >    ○先頭に要素を追加する場合 >     ウを参照 >    ○末尾の要素を削除する場合 >     アを参照 >    末尾の要素を削除するのは面倒ですから、キューとしては不向きです。 > > 以上より解答はウです。 > > 処理量に関する記述が問題文にないので、感覚的に「面倒」とか「容易」とか > 判断するしかないですね。^^; > > (参考図書「ソフトウェア開発技術者の新しい教科書」 日本経済新聞社)  どうもありがとうございました。  この手の問題もソフトウェアの参考書に載っているんですね。  勉強しようと思うと忙しくなる・・・世の中、そんなものですよねぇ。  実は、僕もとんでもなく忙しい状況だったりします。  今、ちょうど朝の5時です。しかも、ここは自宅ではなかったり(^^;; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★これ、おしえてっ!(質問編)★ 回答期限:2月13日(木)の夜まで ----------------------------------------------------------------------  「この問題がわからないっ!!」という、  読者からの質問をみなさんに回答してもらおう!というコーナーです。  今回の質問はこちらです。(出典:H13.秋 基本情報 問13) ----------------------------------------------------------------------  スタックとキューの二つのデータ構造がある。次の手続きを  順に実行した場合、変数 x に代入されるデータはどれか。ここで、   データ a をスタックに挿入することを、push(a)   スタックからデータを取り出すことを、pop()   データ a をキューに挿入することを、enq(a)   キューからデータを取り出すことを、deq()  とそれぞれ表す。   push(a)   push(b)   enq(pop())   enq(c)   push(d)   push(deq())   x ← pop()  ア a    イ b    ウ c    エ d --[回答のめやす(横幅:全角34文字)]-------------------------------- > 1234567890123456789012345678901234 ----------------------------------------------------------------------  せっかくなので、データ構造に関する問題を続けましょう。  今度はスタックとキューに関する問題にしてみました。  これに対する回答(解説)を2月13日(木)の夜までにお願いします。  このコーナーで取り上げてほしい問題のリクエストも募集中です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼選択肢で勉強しよっ!▼(答えはこのメールの一番下にあります) ---------------------------------------------------------------------- > プロトタイピングモデル(prototyping model) って? ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ > *********************** 投稿募集中のテーマ *********************** < ----------------------------------------------------------------------  ●「これ、おしえてっ!」で扱ってほしい問題のリクエストやその回答  ●「選択肢で勉強しよっ!」で扱ってほしい用語のリクエスト  ●「その他、試験などに関するお便り(テーマフリー)」  ハンドル名を添えて mail@shunzei.com まで送ってください!! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  のんびりやろう!情報処理試験! 〜1問1問コツコツと〜(週5日発行) ----------------------------------------------------------------------  編集・発行:しゅんぜい mail@shunzei.com      ─ 発行部数 ─    発送:melma!   http://www.melma.com/     5,684 部       :まぐまぐ  http://www.mag2.com/     13,366 部       :めろんぱん http://www.melonpan.net/   4,368 部                           ───────  登録・解除:http://www.shunzei.com/mm/        23,418 部(total)  ○本の購入:http://books.rakuten.co.jp/itexam/  ○バックナンバー  ダウンロード: http://www.shunzei.com/mm/backnumber.html  立ち読み  : http://www.melma.com/mag/89/m00000189/index_bn.html  転載について: http://www.shunzei.com/about/disclaimer.html  広告掲載に関しては mail@shunzei.com まで、直接お願いします。 ----------------------------------------------------------------------  ○メールマガジンの購読の登録・解除は個人の責任で行ってください。   しゅんぜいは一切代行しません! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼選択肢で勉強しよっ!の答え▼ ----------------------------------------------------------------------  (初級シスアド平成14秋春問33a)の選択肢より > 開発初期段階での試作を通して、ユーザインタフェースの確定や、 > 応答性などの性能確認を行い、後続段階での仕様変更による > 手戻りのリスクを防ぐ。  (初級シスアド平成13年春問33イ)の選択肢より > 短期間で暫定的に動作するソフトウェアを作り、利用者に試用・評価して > もらい、修正を繰り返しながら、仕様を確定していく。  (初級シスアド平成12年春問18エ)の選択肢より > 利用者と開発者の間の、システム要求についての解釈の違いが > 早い段階で確認できる。  (2種平成12年春問56ウ)の選択肢より > 動作可能な試作品を作成し、要求仕様の確認・評価を早期に行う。  (1種平成11年問61)の問題文より > 開発初期段階での試作を通して、ユーザインタフェースの確定や、 > 応答性などの性能確認を行い、後続段階での仕様変更による > 手戻りのリスクを防ぐ。  プロトタイピングモデル(prototyping model) とは、  システム開発工程の早い段階で、試作品(プロトタイプ)を作成し、  ユーザに評価してもらう(試用してもらう)ことによって 「ユーザの要求と合っているか?」「使い勝手はどうか?」など 開発者の間の認識のズレを早期に解消するための手法です。  プロトタイプを修正しつつ、仕様を確定していきます。  この手法はシステム開発の初期段階での誤りを発見し、  開発期間の短縮やコストの低減を狙ったものですが、ユーザの意見が  必ずしも適切であるとは言えないので、拡張や変更時に問題が  発生したり、ユーザとのやりとりで逆に開発期間が延長したりします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ==PR================================================================== ▼24時間いつでもどこでも本が買える!【インターネット上の本屋さん】▼  のんびりやろう!〜楽天ブックス http://books.rakuten.co.jp/itexam/ ======================================================================