応用情報技術者 2010年 秋期 午前2 問07
問題文
正の整数 M に対して、次の二つの流れ図に示すアルゴリズムを実行したとき、結果 xの値が等しくなるようにしたい。a に入れる条件として、適切なものはどれか。

選択肢
ア:n<M
イ:n>M-1
ウ:n>M(正解)
エ:n>M+1
正の整数 M に対する二つのアルゴリズムの結果比較【午前2 解説】
要点まとめ
- 結論:右側のループ条件は「n > M」であるため、正解はウです。
- 根拠:左側は n を M から 1 まで減少させ、右側は n を 1 から M まで増加させる処理で同じ結果を得るためには、ループの終了条件が「n > M」でなければなりません。
- 差がつくポイント:ループの終了条件の不等号の向きと境界値の設定を正確に理解し、両者のループ回数が一致するかを確認することが重要です。
正解の理由
左側の流れ図は、変数 n を M から 1 まで 1 ずつ減らしながら x に n を掛けています。一方、右側の流れ図は n を 1 から始めて 1 ずつ増やし、条件 a でループを終了します。
このとき、右側のループが n > M となれば、n が M を超えた時点で終了し、n は 1 から M までの値を取ります。これにより、左側と同じ積 が得られます。
したがって、条件 a は「n > M」が適切であり、選択肢ウが正解です。
このとき、右側のループが n > M となれば、n が M を超えた時点で終了し、n は 1 から M までの値を取ります。これにより、左側と同じ積 が得られます。
したがって、条件 a は「n > M」が適切であり、選択肢ウが正解です。
よくある誤解
ループの終了条件を「n > M-1」や「n > M+1」と誤解し、ループ回数がずれてしまうことがあります。
また、不等号の向きを逆にしてしまい、無限ループや計算結果の不一致を招くことも多いです。
また、不等号の向きを逆にしてしまい、無限ループや計算結果の不一致を招くことも多いです。
解法ステップ
- 左側のループの動作を確認し、n が M から 1 まで減少していることを理解する。
- 右側のループの初期値と増分を確認し、n が 1 から増加していることを把握する。
- 両者のループ回数が一致するための終了条件を考える。
- 右側のループが n の値が M を超えたら終了する条件「n > M」が適切と判断する。
- 選択肢の中から「n > M」を選ぶ。
選択肢別の誤答解説
- ア: n < M
→ n が M より小さい間ループを続けると、n = M のときループが回らず、積の計算が不足します。 - イ: n > M-1
→ n > M-1 は n ≥ M と同義で、n = M の時点で終了してしまい、ループ回数が不足します。 - ウ: n > M
→ n が M を超えたら終了し、n = 1 から M まで正しくループするため正解です。 - エ: n > M+1
→ n が M+1 を超えるまでループすると、n = M+1 のときもループし、余分な計算が入ります。
補足コラム
この問題は「ループの境界条件設定」の典型例です。プログラミングやアルゴリズム設計では、ループの開始値・終了条件・増分を正確に設定しないと、計算結果が異なったり無限ループになったりします。
特に「不等号の向き」と「境界値の選定」は注意が必要で、数学的帰納法や数列の範囲指定の感覚が役立ちます。
特に「不等号の向き」と「境界値の選定」は注意が必要で、数学的帰納法や数列の範囲指定の感覚が役立ちます。
FAQ
Q: なぜ「n > M」だとループが正しく終了するのですか?
A: n が M を超えた時点でループを終了するため、n は 1 から M までの値を取り、左側のループと同じ回数だけ繰り返します。
A: n が M を超えた時点でループを終了するため、n は 1 から M までの値を取り、左側のループと同じ回数だけ繰り返します。
Q: 「n > M-1」と「n > M」はどう違いますか?
A: 「n > M-1」は n ≥ M と同じ意味で、n = M の時点でループ終了となり、ループ回数が不足します。
A: 「n > M-1」は n ≥ M と同じ意味で、n = M の時点でループ終了となり、ループ回数が不足します。
関連キーワード: ループ条件、境界値設定、アルゴリズム、反復処理、不等号、演算制御

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

