エンベデッドシステムスペシャリスト 2015年 午前2 問23
問題文
データが昇順に並ぶようにリストへデータを挿入するサブルーチンを作成した。このサブルーチンのテストに用いるデータの組合せのうち、網羅性の観点から適切なものはどれか。ここで、データは左側から順にサブルーチンへ入力する。
選択肢
ア:1、3、2、4
イ:3、1、4、2(正解)
ウ:3、4、2、1
エ:4、3、2、1
🔒 解説は解答すると表示されます
昇順リストへの挿入テスト【午前2解説】
正解の理由
昇順に並んだリストへデータを挿入する処理では、挿入位置によって処理が変わります。テストでは、少なくとも次の位置への挿入を確認する必要があります。
- リストが空のとき
- 先頭への挿入
- 途中への挿入
- 末尾への挿入
イの入力順では、それぞれのケースを確認できます。
このように、挿入位置ごとの処理を網羅できるため、イが適切です。
解法ステップ
- 1つ目のデータを入力し、空リストへの挿入を確認します。
- 2つ目以降について、入力時点でのリストの状態を順に追います。
- 先頭・途中・末尾の各位置に挿入されるかを確認します。
- すべての挿入位置を通る組合せを選びます。
選択肢別の誤答解説
- ア:1を空リストに挿入し、3と4は末尾、2は途中に挿入します。先頭への挿入がありません。
- イ:空リスト、先頭、末尾、途中への挿入がすべて含まれています。
- ウ:3を空リストに挿入した後、4は末尾、2と1は先頭に挿入します。途中への挿入がありません。
- エ:4を空リストに挿入した後、3、2、1はいずれも先頭に挿入します。末尾や途中への挿入がありません。
よくある誤解
-
入力データの並び順だけを見て判断する
昇順か降順かではなく、各データを入力した時点でのリストに対して、どこへ挿入されるかを確認します。 -
途中への挿入と先頭への挿入を同じと考える
先頭への挿入では、既存の全データより小さい値を処理します。途中への挿入とは別のケースです。 -
すべての入力順を試す必要があると考える
網羅性の観点では、すべての並べ方を試すのではなく、異なる処理経路を確認できるデータを選びます。
補足コラム
テストの網羅性を考えるときは、入力値の種類だけでなく、入力によってプログラムが通る処理の違いに注目します。この問題では、リストへの挿入位置が処理の違いを生むため、挿入位置を一つずつ確認することがポイントです。
FAQ
Q. 1つ目のデータは、先頭への挿入として数えますか?
A. ここでは、既存データの前に挿入するケースとは分けて、空リストへの挿入として考えます。
A. ここでは、既存データの前に挿入するケースとは分けて、空リストへの挿入として考えます。
Q. 途中への挿入は、どのような場合ですか?
A. 挿入する値より小さい値と大きい値が、どちらもリスト内にある場合です。たとえば、1、3、4のリストに2を挿入するケースです。
A. 挿入する値より小さい値と大きい値が、どちらもリスト内にある場合です。たとえば、1、3、4のリストに2を挿入するケースです。
関連キーワード: テスト網羅性、リスト、挿入処理、昇順ソート

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

