ソフトⅡコース担当 ブログのおにーさまこと高橋です。
久しぶりに基本情報処理技術者試験の解説です。今回は、平成25年度秋期基本情報技術者試験午後問11です。問題は、IPAのサイトをご覧ください。
プログラム2を実行すると、図1の木構造が完成します。
設問1
「プログラムの説明」より、「引数を取らないコンストラクタはルートノードを生成する」とあります。また、「ルートノードの名前は空文字列とする」ともあります。当然ですが、ルートノードは親ノードを持ちません。引数のあるコンストラクタをみると、第1引数がString型で「this.name」に代入しているのでノードの名前、第2引数がDirectoryNode型で「this.parent」に代入しているので親ノードになります。従って、第1引数に空文字列「””」、第2引数に「null」を与えます。空欄aはイが入ります。
「プログラムの説明(1)」より、IllegalArgumentExceptionを投げるのは、引数が空文字列または絶対パスのときです。絶対パスは、先頭が「/」かどうかで判定できます。空欄bにはエが入ります。
空欄cは、プログラムのコメントからルートノードであるかどうかの判定が入ることがわかります。ルートノードであるかどうかは名前「name」が空文字列であるか、親ノードがない(parentがnull)でわかります。解答群をみると、親ノードがないということで判定していることがわかります。エが入ります。
findメソッドは、「プログラムの説明(3)」より、子ノードより下の部分で、引数と同じ名前のノード全てをリストに入れて戻します。
例えば、プログラム2の「root.find(“local”)」は、ルートノードより下のノードで名前が「local」であるものを戻します。findChildの戻値がnullでないということは、名前が一致したということなので、戻値のノードをリストに加えます。空欄dにはnode(ウ)が入ります。更に、子ノードの子ノードに名前が一致するノードがないか調べます。調べる名前は同じなので、空欄eにはname(イ)が入ります。
設問2
図より、作成されたノードはルートノードも含め8個です。解答はウです。
設問3
空欄fには「/」を付けない条件が入ります。問題より、ルートノードでなく、かつ子ノードを持たないときです。最後のreturnの直前に3行を挿入するということなので、空欄cのif文によりルートノードである場合はメソッドを終了しています。つまり、この3行を実行するのはルートノードでないときです。従って、考えるべき条件は子ノードを持たないということです。子ノードはリスト「children」に格納されているので、このリストが空であれば子ノードを持ちません。空欄fには「children.isEmpty()」(エ)が入ります。
2013年(平成25年度)秋期の解説
- 平成25年度 秋 基本情報技術者試験 【問13】
- 平成25年度 秋 基本情報技術者試験 【問11】
- 平成25年度 秋 基本情報技術者試験 【問12】(その2)
- 平成25年度 秋 基本情報技術者試験 【問9】(その2)
- 平成25年度 秋 基本情報技術者試験 【問12】(その1)
- 平成25年度 秋 基本情報技術者試験 【問9】(その1)
- 平成25年度 秋 基本情報技術者試験 【問8】(その2)
- 平成25年度 秋 基本情報技術者試験 【問8】(その1)
- 平成25年度 秋 基本情報技術者試験 【問7】
- 平成25年度 秋 基本情報技術者試験 【問6】
- 平成25年度 秋 基本情報技術者試験 【問5】
- 平成25年度 秋 基本情報技術者試験 【問4】
- 平成25年度 秋 基本情報技術者試験 【問3】(その2)
- 平成25年度 秋 基本情報技術者試験 【問2】
- 平成25年度 秋 基本情報技術者試験 【問3】(その1)
- 平成25年度 秋 基本情報技術者試験 【問1】
- Date:
- この記事を
友だちに教える - LINE
- - HatenaBookmark
- GooglePlus