戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2010年 秋期 69


問題文

二つの変数に対して、次の手続を(1)から順に実行する。処理が終了したとき、の値は幾らになるか。
〔手続〕  (1) に2を代入し、に3を代入する。  (2) の値から1を引いたものをに代入する。  (3) の値との値を加えたものをに代入する。  (4) なら手続(2)に戻り、なら処理を終了する。

選択肢

4
5(正解)
7
8

🔒 解説は解答すると表示されます

反復による累積加算【ITパスポート解説】

正解の理由

手続では毎回「まず y を1減らし、その減らした値を x に足す」操作を繰り返します。初めに なので、減算して加算する値の順は となり、これらを x に順に足します。したがって最終的な は 2 + (2 + 1) = 5 となり、選択肢が正しいです。
(操作の順序「y を減らす→その y を x に加える」が重要です。順序を取り違えると答えが変わります。)

解法ステップ

  1. 初期状態:(問題の(1)より)。
  2. 1回目の繰り返し:
    • (2)
    • (3)
    • (4) (2≠1)なので繰り返す
  3. 2回目の繰り返し:
    • (2)
    • (3)
    • (4) なので処理終了
  4. 結果:(選択肢
一般化すると、初期値を とした場合、各繰り返しで足される値は です。よって(ただし次の注意を参照)最終的な となります。
重要な条件:上の式は初期 のときに成り立ちます。もし (例:)だと、手続の順序上 y はさらに小さくなり続けて にならないため、処理は終了せず無限ループになります。

選択肢別の誤答解説

  • ア: 4
    誤りの典型は「繰り返しが1回だけ行われる」と誤解することです。1回だけなら になりますが、実際は y が 2 のときもう一度繰り返します。
  • イ: 5
    正しい。上記の手順どおりに2回の繰り返しで になります。
  • ウ: 7
    これは「元の y 値(3)を足してしまう」など、操作の順序を誤った場合に出やすい値です。手続ではまず y を減らすため、3 を直接足すことはありません。
  • エ: 8
    典型的なミスは「(3) の加算を y を減らす前の値で行う」と誤解するパターンです。その場合 2 + 3 + 2 + 1 = 8 のように計算してしまいますが、手続の定義と順序に反します。

よくある誤解

  1. 「加算は元の y を使う」と思い込む
    → 問題文の操作順((2) で y を減らす→(3) で加える)を必ず確認してください。順序が答えを決めます。
  2. 一般式の適用範囲を見落とす
    → 一般式 は初期 の場合だけです。 では y が 1 に到達せず無限ループになります。
  3. 端点(y=1 の扱い)を見落とす
    → 初期 y=1 のときも (2) と (3) は一度実行され、その後無限に続く点を理解しておきましょう。

補足コラム

  • 等差数列の和の公式を覚えると便利です。1 から までの和は なので今回の和 です。
  • 手続の設計で「前置(先に減らす)か後置(後で減らす)か」は非常に重要です。プログラミングではループ条件や順序の違いで結果が変わる典型例です。
  • 実際に動きを確かめたい場合の簡単なシミュレーション(Python例):
def simulate(a, m, steps=100):
    x=a; y=m
    for i in range(steps):
        y = y - 1
        x = x + y
        if y == 1:
            return x
    return None  # steps 回以上回って終了しない(無限ループの疑い)

print(simulate(2, 3))  # 出力: 5

FAQ

Q1: 「初期 y=1 のときはどうなる?」
A1: 手続では (2) と (3) が一度実行され、y は 0 になります。以降 y はどんどん小さくなり 1 には戻らないので、処理は終了せず無限ループになります。
Q2: 「一般式は他の問題でも使えますか?」
A2: 同じ構造(y を 1 ずつ減らし、その値を累積する)なら使えます。ただし初期値がどうか(m の大小)を必ず確認してください。
Q3: 「なぜ m≥2 を条件にするのか?」
A3: m≥2 のときだけ「減らしていった最小の値が 1 になる」ためループが終わります。m≤1 だと最終的に 1 にならず終了条件が満たされません。

関連キーワード: 反復処理、ループ、累積加算、等差数列の和、無限ループ
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について