【解説】基本情報技術者試験 サンプル問題 問13

2023年4月から基本情報技術者の試験制度が変更されました。

試験制度は変更されたものの科目B(旧:午後問題)の重要さは変わりません。

出題方式は「多肢選択式」で以前と同じですが、データ構造及びアルゴリズムが8割、情報セキュリティが2割の割合で出題される点が大きく変わっています。

合格基準点は600点以上/1000点満点中、つまり6割以上取れれば合格になります。

サンプル問題では前半16問が「データ構造及びアルゴリズム」の問題。残り4問が「情報セキュリティ」の問題。となっています。

サンプル問題は公式にIPAから出されている貴重な情報です!

早速、問題を見ていきましょう!

 

 

問13 (データ構造及びアルゴリズム) 

設問

出典:基本情報技術者試験 科目B試験サンプル問題







 

 

解答 

答え:「ウ」

 

 

解説

探索に関する問題です。

無限ループになる選択肢を見つけていきます。

それぞれのときのプログラムの動きを見てみましょう。

ア:low = 1、high = 1 となる。
  middle ← (1 + 1) ÷ 2 の商 (= 1)
  data[1] が目的のデータ(target)と等しいので、middleを返して終了
 
イ:low = 1、high = 2 となる。
  middle ← (1 + 2) ÷ 2 の商 (= 1)
  data[1] が目的のデータ(target)と等しいので、middleを返して終了

 

ウ:low = 1、high = 2 となる。
  middle ← (1 + 2) ÷ 2 の商 (= 1)

  配列は昇順になっており、data[1] は目的のデータ(target)よりも小さいので、

  low に middle の値を代入します(low = 1)。
  そのため、 low = 1、high = 2 となり、同じ処理を繰り返します。

  つまり、無限ループの処理となります。

 

エ:要素に-1(負の数)が含まれていても、処理には影響がありません。

 

よって、正解の選択肢は「ウ」になります。

 

 

 

 

最後に

いかがだったでしょうか。

それぞれの条件でプログラムの動きを見てみましょう。すぐ該当ではないと思えるもの以外は試してみましょう。

プログラムが複雑に見えるかもしれませんが、理解できないときは試しに値を入れて動きを見てみましょう。プログラムの動きがわかれば、そこまで怖がる問題ではありません。

徐々に難しさも見えてきますが、冷静に解答していきましょう!