スゴ技

平成25年度 秋 基本情報技術者試験 【問11】

Blog:IT・情報処理BLOG |

ソフトⅡコース担当 ブログのおにーさまこと高橋です。

久しぶりに基本情報処理技術者試験の解説です。今回は、平成25年度秋期基本情報技術者試験午後問11です。問題は、IPAのサイトをご覧ください。

プログラム2を実行すると、図1の木構造が完成します。

201403101(クリックで拡大全体表示します)

設問1
「プログラムの説明」より、「引数を取らないコンストラクタはルートノードを生成する」とあります。また、「ルートノードの名前は空文字列とする」ともあります。当然ですが、ルートノードは親ノードを持ちません。引数のあるコンストラクタをみると、第1引数がString型で「this.name」に代入しているのでノードの名前、第2引数がDirectoryNode型で「this.parent」に代入しているので親ノードになります。従って、第1引数に空文字列「””」、第2引数に「null」を与えます。空欄aはイが入ります。

「プログラムの説明(1)」より、IllegalArgumentExceptionを投げるのは、引数が空文字列または絶対パスのときです。絶対パスは、先頭が「/」かどうかで判定できます。空欄bにはエが入ります。

空欄cは、プログラムのコメントからルートノードであるかどうかの判定が入ることがわかります。ルートノードであるかどうかは名前「name」が空文字列であるか、親ノードがない(parentがnull)でわかります。解答群をみると、親ノードがないということで判定していることがわかります。エが入ります。

findメソッドは、「プログラムの説明(3)」より、子ノードより下の部分で、引数と同じ名前のノード全てをリストに入れて戻します。

201403102(クリックで拡大全体表示します)

例えば、プログラム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年度)秋期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動