
武蔵野個別指導塾の特徴
共通テスト情報I 繰り返しの回数—開始値と終了条件から処理回数を数える|武蔵野個別指導塾

開始値と更新幅をたどり、最終回と0回を区別して求めるのは繰り返しの回数です。
よくあるのは、繰り返しの最後に使った値を見て、それを処理回数だと考える場面です。例えば、番号が2から始まれば、番号2は1回目に対応します。番号を2ずつ進めると、値の差と回数の差も一致しません。値が何を表し、いつ条件を調べ、何を1回と数えるのかを区別して追いましょう。
どの時点を数える問題か
繰り返しの回数を問う問題には、いくつかの形があります。1つ目は、開始値と条件と更新幅が与えられ、処理が何回実行されるかを答える形です。値を並べて条件に合うものを数えます。条件に合わず終了を決めた値は、処理を行った値には入りません。
2つ目は、最終回の値や終了後の値を答える形です。最終回に処理された値と、最後の更新後に条件を満たさなくなった値は異なることがあります。問題がどちらを聞くかに線を引き、表でも別の欄にします。
3つ目は、条件を変えたときの回数の変化を調べる形です。例えば「未満」を「以下」に変えても、更新される値が境界に届かなければ回数は増えません。条件の言葉だけで1回増えると決めず、その境界の値が実際に現れるかを調べます。
どの形でも、回数を数える対象を最初に定めます。以下では繰り返しの中の「記録する」を実行した回数を数えます。条件を調べる回数や値を更新する回数を問われた場合は、同じ表を使いながら数える欄を変えてください。
条件、処理、更新を分けて読む
図1のように、開始値を用意した後、条件を調べます。条件が成り立つときは処理を1回行い、値を更新してから再び条件へ戻ります。条件が成り立たないときは処理をせずに終了します。この順序は以下の例で用いる自作の記法です。問題ごとに順序が示されていたら、その指示を優先します。

開始値は最初の判定に使う値です。終了条件という言葉は、継続する条件を示す場合と、止める条件を示す場合があるので、文を確認します。ここでは「条件を満たす間」は継続の条件です。「未満」は境界を含まず、「以下」は境界を含みます。右側の値と等しい場合にどうなるかを一度言葉で答えると、読み違えに気づきやすくなります。
更新幅は、1回の処理の後に値がどれだけ変わるかです。幅が2なら、開始値から2、さらに2と進みます。並べた値同士の間隔を数えると、値の個数より1少なくなります。最初の値が1回目を占めるからです。
図1の判定は、最初の処理よりも前にあります。初めから条件を満たさなければ処理は0回です。一方、1回以上処理したときも、最後の更新後にもう一度判定し、そこで条件が成り立たないことを確認して終了します。したがって、この形式では条件の判定回数は処理回数より1回多くなります。
本文の「←」は右側の計算結果を左側の変数に入れること、「<」は未満、「≦」は以下を表します。計算に使う値は整数です。記録した値は順に残り、繰り返しが終わった後に一覧と回数を出力します。以下の問題では配列の添字、整数除算、剰余は使いません。回数はすべて整数の「回」で答えます。
表の作り方と別の数え方
追跡表には、判定時の値、条件の成否、実行した処理、更新後の値を置きます。初めは開始値を判定欄へ入れ、条件が成り立つなら記録欄に値を書きます。更新後の値は次の行の判定欄へ移します。条件が成り立たない行では記録欄と更新欄を空にし、その行で表を終えます。矢印で隣の行につなげると、更新したのに判定せず記録する間違いを防げます。
値をすべて並べる代わりに差から回数を求めるときも、最初と最後の両方が処理された値であることが前提です。最後の処理値から開始値を引き、更新幅で割ると、その間の更新の回数が出ます。最初の処理を足して記録回数にします。終了後の値を最後の処理値として使うと、条件に合わない値まで数えてしまいます。更新幅が負の場合は減る方向に差を取り、まず実際の列で確認します。
処理回数と判定回数を区別する練習も役立ちます。処理を3回行ったなら、その3回に先立つ判定と、終了を決める最後の判定があります。この例の順序では判定は4回です。0回でも最初の判定は1回行います。記録する前に判定する形式だからこその関係であり、処理後に判定する形式へそのまま当てはめてはいけません。
基本例題:2ずつ進む番号を記録する
展示の札につける番号を、次の手順で記録します。最初に i を2とし、i が9未満の間、i を記録してから i に2を足します。記録した番号を順に並べ、記録の回数と終了後の i を答えてください。記録の前に毎回条件を調べるものとします。
i ← 2
i < 9 の間、次を繰り返す
i を記録する
i ← i + 2
記録した番号と回数、i を出力する
最初の判定は2 < 9なので成り立ち、2を記録します。その後にiは4になります。次も4 < 9なので4を記録し、iを6にします。6と8も同じように記録します。8を記録した後の更新でiは10になり、10 < 9は成り立ちません。そこで記録せずに終了します。
図2には判定時の値と、記録後に更新した値を並べています。行を右に読むと、どの値を記録し、次に何を判定するかがつながります。最後の10は判定には使いますが、記録した番号には入りません。

| 判定時の i | 条件 i < 9 | 記録 | 更新後の i |
|---|---|---|---|
| 2 | 成り立つ | 2 | 4 |
| 4 | 成り立つ | 4 | 6 |
| 6 | 成り立つ | 6 | 8 |
| 8 | 成り立つ | 8 | 10 |
| 10 | 成り立たない | なし | 更新なし |
答えは記録した番号が2、4、6、8、回数が4回、終了後のiが10です。元の条件へ戻すと、4つの番号はいずれも9未満です。次の10は9未満ではないため、これ以上記録されないことも確かめられます。記録された最後の番号8と回数4と終了後の値10は、それぞれ別の問いへの答えです。
数式を使う場合も、まず記録された値を確認します。2から8までの差は6、更新幅は2なので間隔は3つです。最初の2を含めて4個になります。ただし、最後に条件を満たす値が何かを見落としたまま計算すると、式が正しくても誤った答えになります。短い列なら表を先に作る方法が確実です。
境界に届く場合と届かない場合
次は開始値を1、更新幅を3にします。i が10以下の間、i を記録してから3を足します。記録した番号、回数、終了後のiを答えてください。記号と処理の順序は基本例題と同じです。
i ← 1
i ≦ 10 の間、次を繰り返す
i を記録する
i ← i + 3
記録した番号と回数、i を出力する
1は10以下なので記録し、更新後は4です。4も記録し、次は7です。7の次は10で、10以下には10自身が含まれるので10も記録します。更新後の13は10以下ではありません。答えは1、4、7、10の4個、4回、終了後のiは13です。4つの値を条件に戻すと、最後の10も条件に合います。
同じ開始値と更新幅で条件を「10未満」に変えると、10では処理を行いません。1、4、7の3回で、終了後のiは10です。差が出るのは、更新の列に境界の10が現れるからです。条件を「11以下」から「11未満」に変える比較なら、列は1、4、7、10、13と進み、11には届きません。どちらも1、4、7、10の4回で終了後は13です。
初回の条件も調べましょう。開始値が11で条件が10以下なら、11は条件を満たさず記録は0回、終了後のiは11です。開始値が10なら10を1回記録し、更新後の13で終了します。0回の場合には「記録された最後の番号」はありません。終了後のiはありますが、それを最後の記録と呼ばないようにします。
条件を満たした後で値を更新するため、最後の記録が境界より小さい場合でも、更新後の値が境界を飛び越えることがあります。更新後の値に処理をしたかどうかは、次の判定を通ったかで決めます。「境界を超えた値が出たから、そこまで記録した」とは判断できません。
誤答から表を修正する
基本例題で「8回」と答えたとします。8は最後に記録された番号ですが、1から1ずつ記録したわけではありません。原因は、番号という値をそのまま回数として扱ったことです。図3のように、記録した番号と回数を別々に並べれば、2、4、6、8の各番号に1回目から4回目までが対応します。

修正するときは、最初の2に「1回目」と書き、次の値が条件を満たすたびに回数を1増やします。8は4回目、10は条件を満たさず回数に含めません。数値が最後に大きくなったことと、実行した回数が増えたことは別の事柄です。
別の誤答として「5回」があります。判定時の値を2、4、6、8、10と5つ並べ、それをそのまま処理の回数にしてしまった場合です。最後の10の行は条件が成り立たないので、記録欄を空に戻します。判定回数は5回ですが、求める記録回数は4回です。
さらに「終了後のiは8」と答えた場合は、最後の記録と更新後の値が混ざっています。8を記録した後に2を足す行まで実行されるので、終了後は10です。繰り返しの内部でどの順番に命令が並ぶかをたどることで、誤答の原因を特定できます。
練習:まず問題を解く
各問の記法と順序は基本例題と同じです。値は整数で、条件判定は記録前、更新は記録後に行います。答えは記録した値の一覧、記録回数を整数の回数、終了後のiを整数で示してください。記録がなければ一覧を「なし」と書きます。
- i を3とし、i < 12 の間、iを記録してから2を足します。
- i を5とし、i ≦ 5 の間、iを記録してから4を足します。
- i を7とし、i < 7 の間、iを記録してから1を足します。
- i を14とし、i が4以上の間、iを記録してから3を引きます。「以上」は4を含みます。
答えと解き方
-
一覧は3、5、7、9、11、回数は5回、終了後のiは13です。3から2ずつ足すとこの順に進みます。11は12未満なので記録し、次の13は条件を満たさないため記録しません。5つの記録値を元の条件に戻すと、いずれも12未満です。13を記録に加えると条件に反するため、5回で止まります。
-
一覧は5、回数は1回、終了後のiは9です。5以下は境界の5を含みます。記録後に4を足すと9になり、次の判定で条件を満たしません。最初から等号を除いて0回とすると、5以下の意味に反します。記録値5を条件に戻すと、ちょうど境界に一致して成立します。
-
一覧はなし、回数は0回、終了後のiは7です。最初の7は7未満ではないため、記録も更新も行いません。終了後の値が7であっても、7を記録したことにはなりません。初回判定で止まるという手順に答えを戻すと、空の一覧と更新前の値が両方確かめられます。
-
一覧は14、11、8、5、回数は4回、終了後のiは2です。減らす場合も、判定して記録した後に更新します。5は4以上なので記録し、3を引いた2は4以上ではないため終了します。4という境界を含む条件ですが、3ずつ減る列には4が現れません。記録した4つはどれも4以上で、次の2は条件に合わないことを確認します。
覚えておくこと
- 開始値で最初の判定を行い、成り立たなければ0回です。
- 記録した値に1回目、2回目と番号を付けて数えます。
- 境界を含むかに加え、更新の列が境界に届くかを調べます。
- 最終回の値と、最後の更新を終えた値を分けます。
どこでつまずいたかを見つける
回数が合わないときは、まず最初の行に戻り、開始値を処理前に判定したかを確認します。1回ずれているなら、最初の値を数え落としたか、最後の不成立の行を数えたかを調べます。境界だけで違うなら、等しい値が列に現れるかと、条件に等号が含まれるかを別々に確認します。
個別指導で確かめるなら、答えだけを直す前に、判定時の値、条件の成否、記録、更新後の値を本人に1行ずつ説明してもらいます。0回の例では初回の判定で止まる理由を、1回の例では更新後に止まる理由を言葉にします。処理の順序を表に戻せば、最後の値と回数の違いを自分で確かめられます。
もう「日東駒専」を目標にしないでください。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




