問題
次の擬似言語プログラムは線形探索で配列から目的の値を探す。target=7のとき、found変数の最終値はどれか。 整数型の配列: data ← {3, 5, 7, 9, 11} 整数型: target ← 7 論理型: found ← false 整数型: i ← 1 while (i ≦ 5 and found = false) if (data[i] = target) found ← true endif i ← i + 1 endwhile
選択肢
- 1ア true
- 2イ false
- 3ウ 0
- 4エ 1
正解
1. ア true
詳しい解説を見る解説を閉じる
解説
線形探索のトレース問題である。i=1: data[1]=3は7と不一致、i=2: data[2]=5も不一致、i=3: data[3]=7がtargetと一致して found ← true が実行される。while条件は「i≦5 and found = false」であるため、foundがtrueになると次の判定で条件全体が偽となりループを抜ける。最終値はfound=trueでアが正解である。イのfalseは配列内にtargetが存在しなかった場合の値である。ウの0とエの1はそもそも論理型の値ではなく、論理型(boolean)が取り得るのはtrueとfalseの2値のみという点でも誤りである。ループ継続条件に found = false を含めることで、発見後の無駄な比較を打ち切っている。この「フラグ変数による早期終了」は探索処理の定番テクニックであり、複合条件の評価とあわせて頻出である。
一問一答
科目A 180問+科目B 60問