冬期講習 2026-2027、募集中。総復習は売りません。90分×完全1対1で、穴だけを塞ぎます 詳しく →
電話 0422-27-7828チャットで質問無料相談を予約

武蔵野個別指導塾の特徴

高校情報I 繰り返し処理—初期値と終了条件から実行回数と変数の変化を追う|武蔵野個別指導塾

学習のイメージ写真 武蔵野個別指導塾
X LINE Facebook

最後の条件判定と本体の回数を分け、累積表や0回の境界からたどる繰り返し処理です。

よくあるのは、繰り返しの最後に条件を調べた回も、本体を実行した回数に数えてしまう場面です。条件が成り立たないとわかった時点で、前判定の繰り返しは本体に入らず終了します。ノートに残した値が正しくても、何を数えたかが曖昧なら答えはずれます。範囲表と授業ノートにある書き方と照らしながら、判定と更新の位置を追いましょう。

問われるのは値と回数の対応

定期テストでは、まず処理後に表示される値を求める型があります。初期値から始め、条件が成り立つ間に変数を更新します。最後に本体へ入ったときの値と、終了後の値が異なることもあるため、表には更新前と更新後の両方を残します。

次に、本体の実行回数と条件の判定回数をそれぞれ答える型があります。前判定では、本体へ入るために真となった判定に加えて、終了を決める偽の判定があります。途中で別の方法で終了しない処理なら、判定回数は本体の回数より1回多くなります。この関係を暗記する前に、問題の処理に途中終了がないかを確かめます。

もう1つは、前判定と後判定を同じ初期値で比べる型です。前判定は最初に条件を調べます。後判定は本体を1回実行してから、もう一度続けるかを調べます。最初の条件が成り立たない入力では、両者の違いが特に見えやすくなります。ここで扱うのは繰り返しの追跡であり、特定の言語の文法や複雑な配列操作を覚える問題ではありません。

判定と更新を別の出来事として読む

以下の疑似コードでは「A ← 式」を、右側の式を現在の値で計算してから、その結果をAに入れる操作とします。左側と右側に同じ変数があっても、右側に使うのは更新前の値です。「以上」は同じ値を含み、「未満」は同じ値を含みません。判定の結果は成り立つか成り立たないかの2通りです。割り算や添字は使いません。

カウンタは回数や位置を管理する変数です。例えば毎回1を加えるカウンタは、初期値と更新の位置が決まって初めて何回目を表すかがわかります。累積する変数は、前までの合計に今回の値を加えて更新します。合計を0にしてから加える場合、0は「まだ何も加えていない」状態を表します。

図1のように、前判定では条件が成り立つときに本体へ進み、本体を終えると判定へ戻ります。条件が成り立たなければ本体を通らずに終了へ進みます。条件が最初から成り立たないときは、本体が0回でも判定は1回です。矢印の先をたどり、判定の箱と本体の箱を別々に数えます。

図1 前判定で条件と本体を通る順序

一方、後判定では本体の後に継続条件を調べます。条件が成り立つ間、再び本体へ戻るという約束なら、条件が最初の値で偽であっても、最初の本体は既に実行済みです。後判定にも「条件が成り立ったら終了する」書き方はあります。問題で続行条件か終了条件かを読み、見慣れた言葉だけで矢印の向きを決めないことが重要です。

追跡表には、少なくとも判定時の値、判定結果、本体の更新後の値を書きます。終了時の偽の行にも値を書きますが、更新後の欄は空欄にします。空欄は値が0という意味ではなく、その行で本体を実行しなかった印です。表の最後の行から、条件の境界と終了後の値を読み取れます。

基本例題:カードの番号を足す

カードの番号を順に加える処理を考えます。次の前判定の処理について、本体の実行回数、条件の判定回数、終了後の合計をそれぞれ整数で答えてください。途中終了はありません。

番号 ← 1
合計 ← 0
番号が3以下の間、次を繰り返す
  合計 ← 合計 + 番号
  番号 ← 番号 + 1
合計を表示する

1行ずつ追います。初期状態は番号1、合計0です。番号1は3以下なので本体に入り、合計は0 + 1で1になります。次に番号を2にします。番号の更新は合計の更新より後なので、この回に加えたのは2ではなく1です。

次の判定では番号2が3以下なので、本体に入ります。合計は1 + 2で3、番号は3になります。3回目の判定では番号3も3以下です。等しい場合を含むので本体に入り、合計は3 + 3で6、番号は4になります。

4回目の判定では4は3以下ではありません。ここで終了し、合計は6のまま表示されます。番号4を合計に加える処理はありません。判定は4回、本体は3回で、表示は6です。図2のように最後の行は判定だけで終わるため、本体の欄を空けています。

図2 番号と合計を判定ごとに追う表
判定時の番号 条件 本体後の合計 本体後の番号
1 成立 1 2
2 成立 3 3
3 成立 6 4
4 不成立 実行なし 実行なし

答えを元の場面に戻すと、加えたカードは1、2、3の3枚で、合計は6です。最後の番号4は次に処理する候補として準備されましたが、条件に合わないのでカードとして加えていません。表の各成立行が1枚に対応することも、回数の確認になります。

少し難しい例題:更新順序と判定位置

棚に並べる札の数を数えます。次の2つの処理は初期値が同じで、本体の内容も同じです。Aは本体の前に条件を判定し、Bは本体を実行した後に条件を判定して、成り立つ間は本体を再び実行します。それぞれの本体の回数と終了後の点数を整数で答えてください。

札 ← 5
点数 ← 2
本体:
  札 ← 札 + 1
  点数 ← 点数 + 札
継続条件: 札が5未満

Aでは初回の判定時に札は5です。5は5未満ではないので、本体は0回、点数は初期値の2のままです。判定は1回です。初回に偽となったことが、0回を示す根拠です。

Bでは先に本体を実行します。札は5から6になり、その後、更新済みの札6を点数2に加えるので点数は8です。続いて6が5未満かを判定すると成り立たず終了します。本体は1回、判定は1回です。加算を先に行うと7になりますが、この処理では札の更新が先です。元の手順へ戻り、加えた札が更新後の6かを確かめてください。

同じ条件でも、AとBの判定位置が異なるため、初回を処理するかどうかが変わります。Bの条件は「続ける条件」です。もし問題が「札が5以上になったら終了」と書くなら、終了条件として判定の意味を読み直す必要があります。条件の文章と処理の順番を一緒に表に記すと、言い換えによる取り違えを防げます。

誤答を判定の行から直す

基本例題で「本体は4回、合計は10」と答えたとします。番号4で最後に条件を調べたことを、本体に入ったことと混同し、4も足した誤りです。4は判定の対象ではありますが、3以下という条件を満たしません。図3のように、4の行を判定のところで止めて、加算に進む矢印を消すと修正できます。

図3 最後の判定を本体の回数から除く修正

正しくは本体3回、合計6です。判定4回という数は正しいので、誤答の数字をすべて消す必要はありません。「何を数えた4なのか」を書き添え、本体へ入る回数と分けます。判定の後に実行されるはずの更新が書けない行は、本体の回数に入れません。

もう一つの誤りは、境界の3を含めず本体を2回とすることです。条件は「3以下」なので3を含みます。もし「3未満」なら、3は含まず本体は2回です。記号を機械的に写す前に、境界そのものを条件に代入して成立するかを調べると、違いを説明できます。

練習:先に自分で表を作る

次の4問はそれぞれ独立した自作の処理です。表示値と回数は整数で答えます。前判定では条件が成り立つ間、本体を実行します。後判定では本体の後で継続条件を調べます。どの処理にも途中終了はありません。

問1

箱の数を2から始めます。合計を0とし、箱が5未満の間、合計に箱を加えてから箱を1増やします。前判定です。本体の回数、判定の回数、終了後の合計を求めてください。

問2

針の位置を7から始めます。記録を3とし、位置が7未満の間、記録に位置を加えてから位置を1増やします。前判定です。本体の回数、判定の回数、終了後の記録を求めてください。

問3

歩数を4から、印を1から始めます。後判定で、まず歩数を2増やし、次に印に更新後の歩数を加えます。その後、歩数が8以下なら続けます。本体の回数、判定の回数、終了後の印を求めてください。

問4

外側の数を1から2まで1ずつ増やし、各外側の数について、内側の数を1から3まで1ずつ増やします。両端を含みます。組を作る本体は、外側と内側の組ごとに1回実行します。できる組を実行順に並べ、本体の総回数を求めてください。各範囲を調べる前判定を使い、内側は外側の各回で1から始め直します。外側と内側それぞれの判定回数も求めてください。

練習の答えと確かめ方

問1の答え

本体3回、判定4回、合計9です。判定時の箱は2、3、4、5の順です。最初の3つは5未満なので、合計は順に2、5、9となります。5は条件に合わず本体に入りません。元の箱の番号に戻すと、加えたのは2、3、4で、その和が9です。最後の5は判定された値であって、加えられた値ではありません。

問2の答え

本体0回、判定1回、記録3です。最初の位置7は7未満ではありません。したがって加算も位置の更新も起きず、記録は初期値のままです。初期値が条件の境界にあるため、等しい値を含まない「未満」の意味が結果を決めています。何も記録を加えていない状況に戻しても、終了後の記録3と一致します。

問3の答え

本体3回、判定3回、印25です。1回目は歩数6、印7となり、6は8以下なので続けます。2回目は歩数8、印15となり、8も8以下なので続けます。3回目は歩数10、印25となり、10は8以下ではないので終了します。加えた値を並べると6、8、10で、初期値1を含めた合計は25です。条件を超えた10も、後判定では判定前に加えられています。

問4の答え

組は順に (1, 1)、(1, 2)、(1, 3)、(2, 1)、(2, 2)、(2, 3) で、本体6回です。外側の前判定は1と2で成立し、3で不成立なので3回です。内側は外側1のときに1、2、3で成立し、4で不成立となり4回判定します。外側2のときも1から始め直して同じく4回なので、内側の判定は合計8回です。

組を小さな表に戻して数えると、外側の値ごとに3組ずつあり、合計6組です。内側の不成立の判定は外側ごとに1回ずつあります。内側の最後の判定を一度しか数えないと、判定回数を7回と誤るため、どの繰り返しに属する判定かを分けて記録します。

表が途中で止まらないとき

条件がいつまでも成り立つように見える場合は、まず本体の更新が条件に使う変数を変えているか調べます。例えば「数が4未満の間」に数を1ずつ減らし、初期値が2なら、2、1、0と進んでも4未満のままです。この条件と更新だけでは終了せず、終了後の表示値を決めることはできません。計算を途中で打ち切った回数を答えにしないでください。

反対に数を1ずつ増やす処理なら、2、3で本体を実行し、4で条件が成り立たなくなります。本体2回と最後の判定を含む判定3回を、表の行から確認できます。条件が偽に変わる方向へ値が動くかを見ることは、表を長く書く前の点検にもなります。ただし更新が複数ある処理では、順番や条件に使う値をそれぞれ追って判断します。

手元に残す4行

表のどこで止まったかを見分ける

回数が1つ多い答案なら、最後の不成立を本体に含めていないかを確認します。値がずれる答案なら、判定時の値と更新後の値を同じ欄に書いていないか、また複数の更新を記載順に実行したかを見ます。0回の問題で初期値が消えている場合は、何も更新しなかったことを表の空欄から説明できるかを確かめます。

個別指導では、本人に表の1行を指しながら「この判定の後に本体を通るか」「次の行に持ち越す値は何か」を言葉にしてもらいます。境界の値と最初から不成立の値を変えて追うと、手順の理解と偶然合った答えを見分けられます。判定と実行を分けた記録が、繰り返し処理の答えを支えます。

読んで終わりにするか、ここから変えるか。

武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。

まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。

本気になった日が、入塾の日。

お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。

電話は年中無休。365日、24時間、お電話可能。

チャットで質問チャット
無料相談を予約する 電話 0422-27-7828電話 LINE チャット
で質問