平成25年春期試験午後問題 問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問11 ソフトウェア開発(Java)

次のJavaプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
(Javaプログラムで使用するAPIの説明は,こちらを参照してください。

〔プログラムの説明〕
 あみだくじの作成と結果の表示を行うプログラムである。
 あみだくじとは,複数の平行に並ぶ縦線と,2本の縦線だけに水平に接続する複数の横線から成るくじである。横線は縦線の上端及び下端には接続せず,縦線の同一箇所に複数の横線が接続されることもない。くじをたどる手順は次のとおりである。
  • 1本の縦線を選択し,上端から下方向にたどり始める。
  • 途中に,接続する横線があるときは必ず曲がり,もう一方の縦線までたどる。
  • 縦線に到達したら,また下方向にたどる。
  • 下端に到達するまで(2)と(3)を繰り返す。
  • 下端に到達したときの縦線の位置が,くじを引いた結果である。
 あみだくじの例を図1に示す。図中の太線は,左端の縦線を選択したときにたどった経路である。
pm11_1.png
 クラス GhostLeg は,あみだくじを作成し,作成したあみだくじをたどるプログラムである。
  • 縦線を左からの順番で保持する。左端を0番目とする。
  • 縦線の長さを 1.0 とし,上端の縦軸座標を 1.0,下端の縦軸座標を 0.0 とする。
  • 横線の両端の縦軸座標は等しく,0.0 よりも大きく 1.0 未満である。
  • 縦線の本数を引数とするコンストラクタをもつ。
  • 次のメソッドをもつ。
    1. void addHorizontalLine(int x1,int x2,double y)
       横線を追加するメソッドである。左から x1 番目の縦線と x2 番目の縦線を縦軸座標 y で 接続する横線を追加する。ただし,x1 と x2 が等しいか,2本の縦線のいずれか又は両方に,既に縦軸座標 y で接続する横線があるときには追加しない。
       あみだくじは,クラス GhostLeg のインスタンスを生成した後,このメソッドを任意の回数だけ呼び出し,横線を追加することによって完成する。
    2. int trace(int x)
       くじを引いた結果を返すメソッドである。左から x 番目の縦線を選択し,あみだくじをたどった結果を返す。
 クラス GhostLegTester はテスト用のプログラムである。このプログラムは,図1に示したあみだくじを作り,左から順にくじを引き,結果を表示する。実行結果を,図2に示す。
pm11_2.png
pm11_3.png

設問1

次の記述中の に入れる正しい答えを,解答群の中から選べ。

 クラス GhostLeg の内部クラス VerticalLine は1本の縦線を表すクラスであり,インスタンスは,そのインスタンスが示す縦線に接続している横線を保持している。この内部クラスでは,横線を, として表現している。
解答群
  • クラス HorizontalLine のインスタンスの列
  • その横線が接続する縦軸座標とクラス HorizontalLine のインスタンスのマップ
  • その横線が接続する縦軸座標とその横線に接続するもう1本の縦線のマップ
  • その横線に接続する2本の縦線のマップ
解答選択欄
  •  
  •  

解説

この設問の解説はまだありません。

設問2

プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
  • ghostLeg
  • GhostLeg
  • void ghostLeg
  • void GhostLeg
b に関する解答群
  • 0
  • 1
  • new VerticalLine()
  • null
c に関する解答群
  • -1.0
  • 0.0
  • x
  • y
d に関する解答群
  • horizontalLines.get(x)
  • horizontalLines.get(y)
  • v.getOpposite(y)
  • verticalLines.get(x)
解答選択欄
  • a:
  • b:
  • c:
  • d:
  • a=
  • b=
  • c=
  • d=

解説

この設問の解説はまだありません。

設問3

次の記述中の に入れる正しい答えを,解答群の中から選べ。

 メソッド addHorizontalLine の呼出しにおいて,引数 x1 又は x2 に相当する縦線がないときには IndexOutOfBoundsException が投げられる。一方,引数 y には追加する横線の縦軸座標を指定するので,その値は 0.0 よりも大きく 1.0 未満でなければならないが,それ以外の値を指定しても例外は投げない。
 これを,引数 x1 及び x2 の値によらず,引数 y の値が横線の縦軸座標として取り得る範囲から外れているときに IllegalArgumentException を投げるようにするには,プログラム1中のコメント"//設問3(e)"の1行を次のif文に置き換えればよい。
pm11_4.png
e に関する解答群
  • α
  • β
  • γ
  • δ
f に関する解答群
  • y <= 0.0 && y >= 1.0
  • y <= 0.0 || y >= 1.0
  • y > 0.0 && y < 1.0
  • y > 0.0 || y < 1.0
解答選択欄
  • e:
  • f:
  • e=
  • f=

解説

この設問の解説はまだありません。

Pagetop