こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第51講「共通テスト用プログラム表記④ 反復(前判定・後判定・順次繰返し)」のWeb版です。共通テスト「情報Ⅰ」での重要度はS(毎年出る。落とすと致命的)、情報Ⅱでの接続先は(4)情報システムとプログラミングです。
プログラム表記シリーズの第4回です。土台になる第48講(変数と代入)を先に読んでおいてください。また反復は第54講(トレース)の表なしには追えません。この2本が本講の相棒です。配列とユーザ定義関数は第52講・第53講に譲ります。
1. この講の問い
ループを書くと、なぜ「1回多い/1回少ない」と「止まらない」の2つばかり起きるのでしょうか。
2. 結論
- 反復は①初期値 ②終了条件 ③更新の3点セットだけで決まります。バグはこの3つのどれかにしかありません。無限ループは必ず③の書き忘れです。
- 共通テスト用プログラム表記の繰返しは前判定と順次繰返しの2形式だけで、後判定の構文が例示にありません(旧DNCLにはありました)。
- 前判定は0回実行されうる、後判定は必ず1回は実行される。この差は「該当データが1件も無いとき」に必ず表面化します。
3. なぜそうなるのか
3-1. まず一次資料の実物を見る
大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」(2022年11月9日公表)の第5節「共通テスト用プログラム表記の例示」。その「9制御文(繰返し)」に載っているのは、次の2つだけです(原文どおり)。
x を 0 から 9 まで 1 ずつ増やしながら繰り返す:
⎿ goukei = goukei + Data[x]
※「減らしながら」もある
n < 10 の間繰り返す:
| goukei = goukei + n
⎿ n = n + 1
※|と⎿で制御範囲を表し,⎿は制御文の終わりを示す
ここから読み取れることを、先に3つ確定させておきます。
- 「n回繰り返す」という回数だけの構文は存在しません。 回数を指定したければ「0 から n−1 まで」のように範囲で書きます。
breakに相当する構文もありません。 同じ資料の唯一の完全な例示プログラム(二分探索、全20行)は、途中で抜けるためにowariという変数を立て、ループ条件をhidari <= migi and owari==0 の間繰り返す:と書いています。抜けるのではなく、抜ける条件を終了条件に足すのです。- 後判定(処理を実行してから条件を見る形)の構文がありません。
3-2. 3点セット――初期値・終了条件・更新
反復を構成する要素は3つしかありません。
| 要素 | 何を決めるか | 壊れると |
|---|---|---|
| ①初期値 | どこから始めるか | 1回多い/1回少ない。累積の答えがずれる |
| ②終了条件 | いつ止まるか | 1回多い/1回少ない。取りこぼす |
| ③更新 | どう進むか | 止まらない(無限ループ) |
ここで、2つの構文の決定的な違いが出ます。順次繰返しは、3つが1行の中に全部入っています。
順次繰返しは書き忘れようがありません。順次繰返しで無限ループを作るのは、原理的にほぼ不可能です。一方、前判定は①がループの外、②がループの頭、③がループの中。離れているから書き忘れます。 無限ループが前判定でしか起きないのは、③だけがループの中にいて、しかも本体の処理に埋もれているからです。
3-3. 旧DNCLだけが明文化していた「実行の手順」
順次繰返しは、終了値を含むのか含まないのか。例示PDFはこれを書いていません。ところが、旧課程「情報関係基礎」用のDNCL(共通テスト手順記述標準言語)の説明(大学入試センター、2022年1月)には、順次繰返し文の実行手順が3ステップで明記されています。原文はこうです。
2. 〈変数〉の値が〈終了値〉よりも大きければ、繰り返しを終了します。
3. 〈処理〉を実行し、〈変数〉の値に〈差分〉を加え、手順2に戻ります。大学入試センター「共通テスト手順記述標準言語 (DNCL) の説明」2022年1月 5.3節
「大きければ終了」なので、終了値と等しいうちは実行する=終了値を含むということになります。だから x を 0 から 9 まで は 0,1,…,9 の10回です。9で終わりではなく、9も含めて回ります。
この手順は、そのまま3点セットの説明にもなっています。1が①初期値、2が②終了条件、3が③更新です。国の資料でこの3段が明示されているのは、いまのところ旧DNCLの説明PDFだけです。
3-4. 後判定はどこへ消えたのか
旧DNCLには5.2 条件繰返し文があり、そこには「前判定」と「後判定」の2種類が定義されていました。原文を引きます。
条件繰返し文には、「前判定」と「後判定」の 2 種類があります。
5.2.1 前判定 〈条件〉が成り立つ間、〈処理〉を繰り返し実行します。〈処理〉を実行する前に〈条件〉が成り立つかどうか判定されるため、〈処理〉が 1 回も実行されないことがあります。
5.2.2 後判定 〈条件〉が成り立つまで、〈処理〉を繰り返し実行します。〈処理〉を実行した後に〈条件〉が成り立つかどうか判定されるため、〈処理〉は少なくとも 1 回は実行されます。同上 5.2節
書式も違います。前判定は「〈条件〉の間、…を繰り返す」、後判定は「繰り返し、…を、〈条件〉になるまで実行する」。
この後判定が、共通テスト用プログラム表記の例示から消えています。 第48講で確認した「kosu を 1 増やす という旧DNCLのインクリメント構文が消滅した」のと同じ整理が、繰返しにも起きているわけです。
さらに調べると、「前判定」「後判定」という語そのものが、高校の一次資料に一度も出てきません。 当方で本文をテキスト化して機械計数した結果(2026年8月3日)は次のとおりです。
| 資料 | 「前判定」 | 「後判定」 |
|---|---|---|
| 高等学校学習指導要領(平成30年告示)解説 情報編(全文) | 0 | 0 |
| 情報Ⅰ 教員研修用教材 第1〜4章(章ごとに別PDF・全4冊) | 0 | 0 |
| 情報Ⅱ 教員研修用教材 序章・第1〜5章(第3章は前半/後半の2分冊・全6冊) | 0 | 0 |
この2語が出てくるのは、旧課程用のDNCL説明PDFだけでした。
しかも、情報Ⅰ教員研修用教材 第3章 学習13「基本的プログラム」の制御構造の定義は、前判定しか説明していません。原文はこうです。
・順次 1つ1つの処理を順番に行う
・分岐 ある条件に応じて異なる処理を実行する
・反復 ある条件が満たされている間はその処理を繰り返し実行する文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章 学習13
同じ節の流れ図の説明も「条件が真の間、処理を繰り返し実行し、偽になるとループ終端の下にある処理を実行する」です。「〜になるまで」型は一言も出てきません。
文部科学省の「授業・研修用コンテンツ」でも同じでした。「コンピュータとプログラミング」の[2]「100連ガチャをプログラムして作ろう!」のスライド2〜3ページには「❸反復構造 条件が成り立つ間、処理を繰り返す。」とあり、流れ図はループ端で描かれています。そして5ページ目の発展課題に「・当たりがでるまでガチャを引く → while文を使うとできる」と書かれています。日本語では「〜まで」(後判定的)なのに、示される答えは while(前判定)なのです。
なお、流れ図の側には前判定と後判定を描き分ける規格があります。 JIS X 0121:1986「情報処理用流れ図・プログラム網図・システム資源図記号」は、ループ端を「二つの部分からなり、ループの始まりと終わりを表す。記号の二つの部分は、同じ名前をもつ」と定義したうえで、「ループ始端に終了条件がある場合は、テスト命令の位置がループの最初にあることを示し、条件が成立したとき、同じループ名をもつループ終端へ飛ぶことを意味する」としています。つまり終了条件を上のループ端に書けば前判定、下のループ端に書けば後判定――流れ図では位置で表し分けるわけです。
結論。共通テストで後判定を「書く」場面はありません。しかし「必ず1回は実行してから判定する」という考え方そのものは消えていません。 書きたければ、二分探索の例示と同じくフラグ変数を立てて書くことになります。
3-5. なぜ「1つずれる」のか
次の3つは、回数はすべて同じ n 回です。
- 「n 回繰り返す」(※共通テスト用プログラム表記にはこの構文がありません)
i を 1 から n まで 1 ずつ増やしながら繰り返す:i を 0 から n−1 まで 1 ずつ増やしながら繰り返す:
しかしi の意味がまったく違います。
| 書き方 | i がとる値 | i の意味 |
|---|---|---|
| 1 から n まで | 1, 2, …, n | 回数(何周目か) |
| 0 から n−1 まで | 0, 1, …, n−1 | 位置(配列の添字) |
回数を数えるループと、位置を指すループを区別する。 これだけで、いわゆる off-by-one(1つずれ)の大半は消えます。
共通テスト用プログラム表記では「特に説明がない場合、配列の要素を指定する添字は0から始まる」と決まっています。したがって、要素数 kazu の配列を最後まで見るループの終了値は kazu−1 です。実際、例示の二分探索の最後の表示部分も iを0からkazu-1まで1ずつ増やしながら繰り返す: と書かれています。
「位置 kazu は存在しない」――ここが1つずれの震源地です。kazu まで回すと存在しない要素を読み、kazu−2 まででは最後の1個を落とします。
3-6. 累積変数の初期値には理由がある
反復の相棒が累積変数(ループのたびに値を溜めていく変数)です。その初期値は、雰囲気で0を置いてはいけません。
| 目的 | 初期値 | 理由 |
|---|---|---|
| 合計 | 0 | 0 は足しても変わらない |
| 積 | 1 | 1 は掛けても変わらない。0にすると何を掛けても0 |
| 最大値 | 最初の要素 | 0にすると、全部が負のデータで壊れる |
| 件数 | 0 | 数え始める前は0件 |
最大値の初期値0が壊れることは、第54講(トレース)が負のデータで実演済みです。ここでは一般則として持ち帰ってください。「その演算で、何を入れておけば結果に影響しないか」が初期値です。 最大値にはそういう値がないので、最初の要素を入れるしかありません。
3-7. 二重ループの回数は「積」になる
外側が m 回、内側が n 回なら、内側の本体はm × n 回動きます。足し算ではありません。ここを取り違えると、計算量の見積りが根本から狂います。
外側の変数によって内側の回数が変わる場合(整列でよく出る形)は、素直に足します。i を 0 から n−1 まで/その中で j を i+1 から n−1 まで なら、内側の回数は n−1, n−2, …, 1, 0 なので合計は (n−1)+(n−2)+…+1 = n(n−1)/2 になります。第56講(整列)で扱った比較回数がこれです。
4. 手で確かめる
4-1. 同じ処理を3通りで書く
配列 Data = [10,20,30,40,50] の合計を求めます。
(a)順次繰返し
Data = [10,20,30,40,50]
goukei = 0
i を 0 から 4 まで 1 ずつ増やしながら繰り返す:
⎿ goukei = goukei + Data[i]
表示する(goukei)
(b)前判定
Data = [10,20,30,40,50]
goukei = 0 , i = 0
i < 5 の間繰り返す:
| goukei = goukei + Data[i]
⎿ i = i + 1
表示する(goukei)
(c)後判定(※旧DNCLの構文。共通テスト用プログラム表記にはありません)
繰り返し,
goukei ← goukei + Data[i]
i ← i + 1
を,i ≧ 5 になるまで実行する
4-2. トレース表を3枚並べる
(a)順次繰返し
| 行 | i | Data[i] | goukei |
|---|---|---|---|
| 初期 | ― | ― | 0 |
| 1周目 | 0 | 10 | 10 |
| 2周目 | 1 | 20 | 30 |
| 3周目 | 2 | 30 | 60 |
| 4周目 | 3 | 40 | 100 |
| 5周目 | 4 | 50 | 150 |
(b)前判定
| 判定 | 判定時の i | 条件 i<5 | 本体後 goukei | 本体後 i |
|---|---|---|---|---|
| 1回目 | 0 | 真 | 10 | 1 |
| 2回目 | 1 | 真 | 30 | 2 |
| 3回目 | 2 | 真 | 60 | 3 |
| 4回目 | 3 | 真 | 100 | 4 |
| 5回目 | 4 | 真 | 150 | 5 |
| 6回目 | 5 | 偽 | 本体に入らない | 5 |
(c)後判定
| 周 | 本体後 goukei | 本体後 i | 判定 i≧5 |
|---|---|---|---|
| 1周目 | 10 | 1 | 偽→続行 |
| 2周目 | 30 | 2 | 偽→続行 |
| 3周目 | 60 | 3 | 偽→続行 |
| 4周目 | 100 | 4 | 偽→続行 |
| 5周目 | 150 | 5 | 真→終了 |
答えはどれも 150 で一致します。しかし判定の回数が違います。前判定は本体5回に対し判定6回、後判定は本体5回に対し判定5回。前判定は「最後にもう一度、条件が偽であることを確かめてから出る」からです。トレース表の最終行に、本体に入らない行が1行増える――これが前判定の見分け方です。トレース表そのものの作り方は第54講を参照してください。
4-3. 境界を必ず含める――0回のケースと1回のケース
データが0件(Data = [])のとき。
- 前判定:条件
0 < 0が最初から偽なので本体は0回。goukei は 0 のまま。正しい結果です。 - 後判定:先に本体へ入るので
Data[0]を読みにいきます。存在しない要素なのでエラーになります。
Python で実際に実行して確認した出力です。
前判定:本体実行 0 回 / goukei = 0 → 正しく 0
後判定:本体に入った瞬間に Kara[0] を読もうとして IndexError: list index out of range
データが1件(Data = [7])のときは、前判定も後判定も本体1回・合計7で一致します。
つまり、前判定と後判定の差は「0件のとき」にしか出ません。 逆に言えば、0件を試さないテストは、この2つを区別できません。 「該当データが1件も無いとき」を必ず試す理由がこれです。
4-4. 二重ループの回数を実測する
外側 i = 1 : 1-1 1-2 1-3 1-4 ここまでの累計 4
外側 i = 2 : 2-1 2-2 2-3 2-4 ここまでの累計 8
外側 i = 3 : 3-1 3-2 3-3 3-4 ここまでの累計 12
合計 12 回 = 3 × 4 = 12
内側の回数が外側に依存する形も測りました(n=5)。
i=0 のとき内側 4 回
i=1 のとき内側 3 回
i=2 のとき内側 2 回
i=3 のとき内側 1 回
i=4 のとき内側 0 回
合計 10 = 4+3+2+1 = 10 = n(n-1)/2 = 10
i=4 のとき内側が0回であることに注目してください。前判定だから0回でよいのです。ここが後判定だったら、存在しない範囲を1回触ってしまいます。
4-5. 更新を書き忘れる
前判定で i = i + 1 を消すと、条件 i < 5 が永久に真のままになります。実際に上限1000回で打ち切って確認しました。
更新なし -> 打ち切り回数 1000 (LIMIT = 1000 )/ i は 0 のまま
無限ループを疑ったら、まず③更新を探してください。 終了条件を疑うのは、その次で構いません。
4-6. Python との対応
| 共通テスト用プログラム表記 | Python |
|---|---|
| i を a から b まで 1 ずつ増やしながら繰り返す: | for i in range(a, b+1): |
| i を b から a まで 1 ずつ減らしながら繰り返す: | for i in range(b, a-1, -1): |
| 〈条件〉 の間繰り返す: | while 〈条件〉: |
| (後判定に相当する構文なし) | while True: … if 〈条件〉: break |
range(a, b+1) の +1 は、順次繰返しが終了値を含むのに range が含まないためです。ここを忘れると、Python に写した瞬間に1回減ります。
4-7. 累積変数の初期値を実験する
D = [3,5,2,8] と N = [-5,-12,-3,-40] で確認した実行結果です。
合計 init=0 : 18 / init=1 : 19
積 init=1 : 240 / init=0 : 0
最大 init=0 : 0 / init=N[0] : -3 / 真の最大 : -3
合計は1だけずれ、積は0に潰れ、最大は「0」というデータに存在しない値を答えます。最大値のバグがいちばん危ないのは、エラーにならず、それらしい数字を返してしまうからです。
5. 共通テストではこう出る(重要度 S)
反復は毎年出ます。単独でも出ますが、配列・条件分岐と組み合わさった形が本体です。設問の型は3つに整理できます。
- 型1:回数を数える。 「このループは何回実行されるか」を直接問う、あるいは実行後の変数の値から逆算させる。
0 から n−1と1 から nの読み分けと、二重ループの積が問われます。 - 型2:終了条件の穴埋め。 ループの頭に空欄があり、選択肢から条件を選ぶ。選択肢を1つずつ入れて、境界のときだけトレースするのが最速です。全部を最後まで追う必要はありません。最初と最後の1〜2周だけ見れば、たいてい2つに絞れます。
- 型3:途中の値を答える。 「k 周目終了時点の変数の値は」。ここは第54講のトレース表がそのまま武器になります。
引っかけとして頻出するのは次の4つです。
- 終了値が「要素数」か「要素数−1」か。 添字は0始まりなので、最後は
kazu−1。 - 更新が最後にあるか途中にあるか。 更新の位置が変わると、ループ内で参照する値が1つずれます。
- 累積変数の初期化が、ループの外にあるか中にあるか。 中にあると毎周リセットされ、最後の1回分しか残りません。
<と<=の1文字違い。 回数が1回変わります。第55講(探索)で、この1文字を変えると取りこぼしと無限ループの両方が起きることを実測しています。
これは印象論ではありません。大学入試センターの「令和8年度 問題評価・分析委員会報告書(本試験)」に載った『情報Ⅰ』問題作成部会の見解(自己評価)は、第3問について次のように書いています。
出題者自身が「繰り返し」を2度名指ししているわけです(題材そのものは別講で扱います)。第3問を落とさないための最短経路は、反復の3点セットを毎回口に出して確認する習慣です。
練習用に自作の問題を1つ置いておきます。
Tensu = [58,72,45,90,63]
kazu = 要素数(Tensu)
goukei = 0 , kensu = 0
i を 0 から kazu-1 まで 1 ずつ増やしながら繰り返す:
| もし Tensu[i] >= 60 ならば:
| | goukei = goukei + Tensu[i]
⎿ ⎿ kensu = kensu + 1
表示する(kensu, goukei)
問1:表示される値は何か。
問2:Tensu のすべてが60未満だったとき、このプログラムは何を表示するか。
問3:平均を出すために最後へ heikin = goukei / kensu を足した。問2の場合に何が起きるか。
答え。問1は3 と 225です(72+90+63=225、件数3)。問2は0 と 0――順次繰返しなので、条件に合う要素が1つも無くても正しく0を返します。問3は0で割ることになって破綻します。0件のケースを考えないと、平均のような「あとから足した1行」が落ちるのです。境界のケースは、ループ本体ではなくループの外側を壊します。
6. 情報Ⅱではこうなる
6-1. 語数調査――「反復」は数える前に用法を分ける
「反復」は、素朴に数えると必ず読み違える語です。当方で全文をテキスト化し、ヒットした箇所を1件ずつ目で確認した結果(2026年8月3日)が次の表です。
| 資料 | 「反復」総数 | うち制御構造 | 残りの正体 |
|---|---|---|---|
| 解説 情報編(全文) | 1 | 0 | 情報デザインの「図形の反復と変化」 |
| 情報Ⅰ教材 第1章 | 0 | 0 | ― |
| 情報Ⅰ教材 第2章 | 3 | 0 | レイアウト原則の Repetition(近接・整列・反復・対比) |
| 情報Ⅰ教材 第3章 | 37 | 37 | すべて制御構造 |
| 情報Ⅰ教材 第4章 | 1 | 0 | 体力測定の「反復横とび」 |
| 情報Ⅱ教材 第3章前半 | 1 | 0 | 重回帰の変数名「反復横跳び」 |
| 情報Ⅱ教材 第4章 | 1 | 1 | 制御構造 |
| 情報Ⅱ教材 序章・第1・2章/第3章後半・第5章 | 0 | 0 | ― |
つまり制御構造としての「反復」は、解説には0件、情報Ⅰは第3章の37件に完全に集中し、情報Ⅱは全6分冊でわずか1件です。
ついでに「ループ」も数えました。PDFのテキスト抽出では「グループ」が改行で「グ/ループ」と分断されるため、素朴に数えると解説28件・情報Ⅰ第1章31件などと大量に水増しされます。分断分を除いた真の「ループ」は、情報Ⅰ教員研修用教材 第3章の2件だけ(流れ図の「ループ終端」とコード中のコメント「# ループ中断」)で、解説・情報Ⅰの他章・情報Ⅱの全分冊は0件でした。
6-2. 情報Ⅱで「反復」が出る唯一の場所は、「反復で考えるのをやめる」という文章である
情報Ⅱ教員研修用教材 第4章(情報システムとプログラミング)学習22の原文を引きます。
情報Ⅱ教材が「反復」という語を使う唯一の箇所が、「反復を単位に考えるのはここまでにして、オブジェクトを単位に考える」という宣言なのです。情報Ⅰで反復は設計の単位ですが、情報Ⅱでは設計の単位がモジュールとオブジェクトに上がり、反復はその内側に沈みます。
代わりに反復に与えられる役割が、読みやすさです。同じ第4章 学習23「プログラムの改善・改良」の原文です。
情報Ⅰの反復は「正しく動くか」、情報Ⅱの反復は「他人が読めるか」。段落と見出しに喩えられている点が象徴的です。
6-3. 「繰り返し」が、人が書く構文から、アルゴリズムが内部で回すものへ
情報Ⅱ教員研修用教材 第3章後半で「繰り返」が出る6か所を、1件ずつ確認しました。6件すべてが機械学習の内部反復です。
- 階層クラスタリング:「最終的に一つのクラスタになるまで繰り返す」
- k-means法:ランダムな初期値のせいで「適切なクラスタリングとならない場合もある。何回か繰り返して分析をしたり、k-means++法を用いたりする」
- 深層学習:「隠れ層を次の入力として別の隠れ層に渡していくことを繰り返すと、複数の層の隠れ層をもつ深層学習となり」
- ニューラルネットワークの学習:「学習を繰り返し、損失関数の結果が最も小さくなる重みやバイアスを探して」
- Epoch:「Epochは最適化の繰り返しの世代数、すなわち勾配降下法によりバックプロパゲーションしながら w や b 等のパラメータの修整…」
ここが情報Ⅰとの決定的な差です。 情報Ⅰでは、反復回数はプログラムから読み取って数える対象でした。情報Ⅱでは、反復回数は Epoch という名前のついた、人が事前に決める設定値になります。「何回回すか」が答えではなく入力になるのです。しかも回しすぎれば過剰適合し、足りなければ学習不足になります。正解のある数から、トレードオフのあるつまみへ変わるということです。
6-4. 反復回数が「計算量」として跳ね返る
情報Ⅱ教員研修用教材 第3章後半 学習16(アソシエーション分析)の原文です。
情報Ⅰの二重ループで「3×4=12回」と数えた掛け算が、そのまま現実の時間として現れます。組合せの数は品目数が増えると爆発するので、「全部の組合せを回す」というループが実行不可能になり、回さずに済ませる工夫に名前がつくわけです。第57講(計算量)で扱ったとおり、これが高校の一次資料で「計算量」が概念として説明される数少ない場所です。
同じ第3章前半には、もう1つ反復の顔が出てきます。Webスクレイピングの注意書きです。原文は「繰り返し文などにより多数回アクセスを試みたり、画像などのファイルサイズの大きいファイルを多数取得したりすることは、対象となるWebサーバに必要以上の負荷をかけることから、プログラムの実行の可否を検討する必要がある」。情報Ⅱで「繰り返し文」という語が出てくるのは、書き方の説明ではなく、繰り返すと他人に迷惑がかかるという警告としてです。
6-5. 対比でまとめる
| 情報Ⅰ | 情報Ⅱ | |
|---|---|---|
| 反復の位置づけ | 制御構造の1つ。設計の単位 | 設計の単位はモジュール・オブジェクトへ。反復は内側に沈む(学習22) |
| 「反復」の語 | 教材 第3章に37件 | 全6分冊で1件(しかも「反復で考えるのをやめる」文脈) |
| 回数 | プログラムから読み取って数える(設問の答え) | Epoch として人が決める(学習17)。回しすぎれば過剰適合 |
| 回数が多いと | 答えが合っていれば問題ない | 計算時間が現実的に収まらなくなる(学習16 アプリオリアルゴリズム) |
| 評価軸 | 正しく回るか(1回多い/少ない/止まらない) | 読めるか(学習23 の構造化)・他人のサーバに迷惑をかけないか(学習12) |
| 反復を書く相手 | 自分のプログラム | ライブラリの中身。自分は「回数」と「基準」を指定する側 |
情報Ⅰの反復は「回せるようになる」で終わります。情報Ⅱの反復は「回さずに済ませる方法を選ぶ」ところから始まります。 3点セットで自分のループを検査できるようになることは、その入口に立つための最低条件です。
まとめ
- 反復は①初期値 ②終了条件 ③更新の3点セット。ループを書き終えたら毎回3つとも指させるか確認する。無限ループは必ず③。
- 共通テスト用プログラム表記の繰返しは前判定と順次繰返しの2形式のみ。後判定も
breakも無いので、途中で抜けたければフラグを終了条件に足す(センターの二分探索の例示がそうしている)。 - 順次繰返しは終了値を含む(旧DNCLの実行手順が根拠)。Python に写すときは
range(a, b+1)。 - 前判定は0回実行されうる、後判定は必ず1回は実行される。差が出るのは0件のときだけなので、境界テストには必ず0件を入れる。
- 回数を数えるループ(1 から n)と位置を指すループ(0 から n−1)を区別する。 添字は0始まりなので最後は
kazu−1。 - 累積変数の初期値は、合計0・積1・最大は最初の要素。その演算で結果を変えない値が初期値。
- 「前判定」「後判定」の語は、解説・情報Ⅰ教材・情報Ⅱ教材のすべてで0件。旧DNCLの説明PDFにしかない。
- 情報Ⅱでは、反復回数が Epoch という設定値になり、計算量として現実の時間に跳ね返る。
出典(すべて2026年8月3日に取得)
- 大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」2022年11月9日公表(第5節「共通テスト用プログラム表記の例示」)
- 大学入試センター「共通テスト手順記述標準言語 (DNCL) の説明」2022年1月(5.2 条件繰返し文・5.3 順次繰返し文)
- 大学入試センター「令和8年度 問題評価・分析委員会報告書(本試験)」『情報Ⅰ』問題作成部会の見解
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第1〜4章(令和2年)
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」序章・第1〜5章(第3章は前半・後半の2分冊。令和2年)
- 文部科学省「授業・研修用コンテンツ」情報Ⅰ [2]「100連ガチャをプログラムして作ろう!」スライド(2022年12月22日掲載)
- JIS X 0121:1986「情報処理用流れ図・プログラム網図・システム資源図記号」(ループ端の定義。規格本文は日本規格協会が正)
語数の集計は、上記PDFを当方でテキスト化して機械計数し、ヒット箇所を1件ずつ目視で確認したものです(2026年8月3日時点)。制度に関する記述もすべて2026年8月時点のものです。全120講の目次とカテゴリ「情報Ⅰ 最強120講義」から他の講も読めます。
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第51講のWeb版です。
「ループを追っているうちに、どこを見ていたか分からなくなる」という方へ
共通テスト『情報Ⅰ』の第3問は、読める人と読めない人で得点が真っ二つに割れます。反復は「3点セットで検査する」という型を一度身につければ安定しますが、独学だと自分の抜けに気づけないのが難しいところです。数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
