戦国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 情報処理技術者試験対策アプリ

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