ITパスポート 2010年 秋期 問69
問題文
二つの変数とに対して、次の手続を(1)から順に実行する。処理が終了したとき、の値は幾らになるか。
〔手続〕
(1) に2を代入し、に3を代入する。
(2) の値から1を引いたものをに代入する。
(3) の値との値を加えたものをに代入する。
(4) なら手続(2)に戻り、なら処理を終了する。
選択肢
ア:4
イ:5(正解)
ウ:7
エ:8
🔒 解説は解答すると表示されます
変数と繰り返し手続の計算【ITパスポート 解説】
正解の理由
理由を一言で言うと、手続は「を1ずつ減らし、その都度減らした後のをに足す」処理をが1になるまで繰り返すからです。初めに なので、繰り返しで足される値は と の2回分、合計 。よって最終的に になります。
(用語)
- 変数(へんすう):値を入れておける「箱」です。ここでは と が箱です。
- 代入(だいにゅう):箱に値を「入れる」操作。例: に 2 を代入 ⇒ 。
- ループ(繰り返し処理):同じ手順を何度も繰り返すこと。英語は loop(ループ)。
解法ステップ
手続の流れを順に追います。
初期:(手続(1))
1回目の繰り返し
(2) →
(3) →
(4) ()なので戻る
(2) →
(3) →
(4) ()なので戻る
2回目の繰り返し
(2) →
(3) →
(4) なので処理終了
(2) →
(3) →
(4) なので処理終了
最終: → したがって正解は イ(5)。
補足的に一般形を示すと、初期値を とすると、ループで に加えられる値は の合計になります。よって最終的な は
今回の を代入すると です。
簡単なシミュレーション(参考)
x = 2
y = 3
while y != 1:
y = y - 1
x = x + y
print(x) # 出力 5
選択肢別の誤答解説
-
ア: 4
誤りの典型は「1回しか繰り返さない」と誤解すること。もし1回だけ処理して終わると になりますが、 がまだ 2 のため条件で戻るべきです。したがって 4 は途中の値です。 -
イ: 5
正解。上記の通り、 が 3 から 1 になるまで2回の繰り返しが行われ、合計で に 3 が加わるため となります。 -
ウ: 7
これは「 の初期値(3)をそのまま足す」など、 の減少を反映せずに誤った合計をした場合に出ます。正しい処理は「まず を1引いてから」 に足す点です。 -
エ: 8
これは「繰り返しを多く回しすぎた」結果です。例えば を下がるまででなく0や負の値まで続けてしまう誤りや、初期の に の全て(3+2+1)を足してしまう誤解が考えられます。
よくある誤解
-
「加える順序」を間違える
手続(2)が先で(3)が後です。つまり「まずを1減らしてから、その減らした値をに足す」点を見落とすと誤答になります。 -
ループ条件の読み違い
(4)は「なら(2)に戻る」なので、 が 1 になった時点で終了します。でもう一回実行する、あるいはが0になるまで続ける、という誤解に注意してください。
補足コラム
-
この種の問題は「繰り返し回数」と「各回で加える値」を正しく理解する練習になります。業務での例を挙げると、社員の月次報告を1か月分ずつ処理して合計値を更新するような流れに似ています(毎回「処理→集計→終了条件チェック」を行う)。
-
一般式 の理解は便利です。初期値を変えて自動的に結果が出せます。
FAQ
Q1. もし初めの が 1 だったら結果はどうなりますか?
A1. 手続(1)で なら、(4) の時点で既に なので処理は終了します。従って は代入直後の値、ここでは のままです。
A1. 手続(1)で なら、(4) の時点で既に なので処理は終了します。従って は代入直後の値、ここでは のままです。
Q2. この手続は何回繰り返されますか?
A2. 初期の とすると、 を まで減らす必要があるので繰り返し回数は 回です(今回なら 回)。
A2. 初期の とすると、 を まで減らす必要があるので繰り返し回数は 回です(今回なら 回)。
Q3. が0や負の数だったら?
A3. 与えられた手続のままだと、 の条件で戻り続け、 はさらに負の方向に減っていきます。現実のプログラムでは無限ループ防止のため、入力の妥当性チェックが必要です。
A3. 与えられた手続のままだと、 の条件で戻り続け、 はさらに負の方向に減っていきます。現実のプログラムでは無限ループ防止のため、入力の妥当性チェックが必要です。
関連キーワード: 変数、代入、ループ、繰り返し、条件分岐、アルゴリズム、制御構造、数列の和、疑似コード

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

