06 繰り返し(for文)

1. for文とは

for文は繰り返す回数があらかじめ決まっているときに使う繰り返し構文です。 カウンタ変数の初期値・終了値・更新を1行にまとめて書けるため、while文より簡潔に記述できます。

用語について:for文のカウンタ変数を変化させる部分を、この資料では「更新」と呼びます。
IPA公式や他の教材では「増分」と呼ぶ場合もありますが、同じものを指しています。

2. for文の基本構造と実行順序

for文の1行には①初期化・②条件・⑤更新の3つが詰まっています。実行される順番は次の図のとおりです。

for ( ① 初期化 i ← 1 ② 条件 i が 5 以下? ⑤ 更新 i ← i + 1 ) ⑤→② へ戻る Yes↓ ③ ループ本体(したい処理) 例:i を出力 endfor 実行順序 → 以降は を繰り返す
① 初期化は最初の1回だけ実行されます。
以降は ② 条件チェック → ③ ループ本体 → ④ endfor → ⑤ 更新 を繰り返します。
② の条件が No(偽)になった時点でループを抜けます。

コード例と番号の対応

整数型: i

for ( i を 1 から 5 まで 1 ずつ増やす )  ← ①i=1  ②i≦5?  ⑤i←i+1
    i を出力                              ← ③ ループ本体
endfor                                    ← ④ ループ端(⑤へ戻る)
// 出力:1  2  3  4  5
ステップ 実行内容 i の値 結果・備考 ① 初期化 i ← 1 1 最初の1回のみ ② 条件 i が 3 以下? 1 Yes → 続行 ③ 処理 i を出力 1 「1」を出力 ④⑤ endfor→更新 i ← i + 1 1 → 2 ②へ戻る ② 条件 i が 3 以下? 2 Yes →「2」出力… (i=3 でも同様に処理) ② 条件 i が 3 以下? 4 No → ループ終了

コード例

整数型: i

for ( i を 1 から 5 まで 1 ずつ増やす )  ← ①初期化(i=1) ②条件(i≦5) ⑤更新(i+1)
    i を出力                              ← ③ループ本体
endfor                                    ← ④ループ端(⑤更新へ)
// 出力:1  2  3  4  5

3. for文のフローチャート

開始 ① 初期化 i ← 1 ② 条件チェック i ≦ 終了値? Yes ③ ループ本体 (処理を実行) ④ endfor (ループ端) ⑤ 更新 i ← i + 1 No 終了

4. while文との対比

同じ処理をwhile文とfor文で書き比べてみましょう。

while文 整数型: i ← 1 while ( i が 5 以下 ) i を出力 i ← i + 1 endwhile ① 初期化 ② 条件 ③ 処理 ④ 更新 を別々に書く for文(簡潔) 整数型: i for ( i を 1 から 5 まで 1 ずつ増やす ) i を出力 endfor ① ② ④ を1行にまとめて書ける(④は更新)

5. 応用例

カウントダウン(更新を負にする)

整数型: i

for ( i を 5 から 1 まで -1 ずつ増やす )
    i を出力
endfor
// 出力:5  4  3  2  1

2ずつ増やす

整数型: i

for ( i を 2 から 10 まで 2 ずつ増やす )
    i を出力
endfor
// 出力:2  4  6  8  10

if文との組み合わせ(偶数のカウント)

整数型: i
整数型: count ← 0

for ( i を 1 から 6 まで 1 ずつ増やす )
    if ( i MOD 2 が 0 と等しい )
        count ← count + 1
    endif
endfor

count を出力   // 出力:3(2, 4, 6 の3つ)
for文を使うべき場面:繰り返す回数が最初から決まっているとき(配列の全要素を処理する、N回繰り返すなど)
while文を使うべき場面:繰り返す回数が条件次第で変わるとき(ユーザー入力、探索処理など)

6. 理解度チェック問題

問題06-1

次のコードを実行した結果として正しいものを選びなさい。

整数型: i
整数型: sum ← 0

for ( i を 1 から 4 まで 1 ずつ増やす )
    sum ← sum + i
endfor

sum を出力
解説を表示 正解:ウ
1 + 2 + 3 + 4 = 10

問題06-2

次のコードを実行した結果として正しいものを選びなさい。

整数型: i

for ( i を 1 から 4 まで 2 ずつ増やす )
    i を出力
endfor
解説を表示 正解:ア
更新値が2なので i = 1 → 3 → 5(終了値4を超えるので終了)。出力は 1 と 3。

問題06-3

次のコードを実行した結果として正しいものを選びなさい。

整数型: i

for ( i を 5 から 1 まで -1 ずつ増やす )
    i を出力
endfor
解説を表示 正解:エ
更新値 -1 でカウントダウン。i = 5 → 4 → 3 → 2 → 1 → 0(終了値1を下回るので終了)。

問題06-4

次のコードを実行した結果として正しいものを選びなさい。

整数型: i
整数型: count ← 0

for ( i を 1 から 6 まで 1 ずつ増やす )
    if ( i MOD 3 が 0 と等しい )
        count ← count + 1
    endif
endfor

count を出力
解説を表示 正解:イ
1〜6のうち3の倍数は 3 と 6 の2つ → count = 2

問題06-5

次のコードを実行した結果として正しいものを選びなさい。

整数型: i
整数型: total ← 0

for ( i を 2 から 10 まで 2 ずつ増やす )
    total ← total + i
endfor

total を出力
解説を表示 正解:ウ
i = 2, 4, 6, 8, 10 → 2 + 4 + 6 + 8 + 10 = 30

問題06-6 空欄補充

次のコードは、1から10までの整数を出力するプログラムである。空欄 [ A ] に入る値として正しいものを選びなさい。

整数型: i

for ( i を 1 から [ A ] まで 1 ずつ増やす )
    i を出力
endfor
解説を表示 正解:エ
1から10まで出力したいので終了値は 10。
for文は「開始値 ≦ i ≦ 終了値」の間繰り返します。終了値を9にすると9までしか出力されません。

問題06-7 空欄補充

次のコードは、1から5までの整数の合計(15)を求めるプログラムである。空欄 [ B ] に入るものとして正しいものを選びなさい。

整数型: i
整数型: total ← 0

for ( i を 1 から 5 まで 1 ずつ増やす )
    [ B ]
endfor

total を出力   // 期待する出力:15
解説を表示 正解:イ
合計を求めるには「これまでの合計 + 今回の値」を繰り返し total に上書きします。
ア:毎回 i で上書きするだけなのでループ終了後は5になる。
ウ:減算になるので合計にならない。
エ:total ではなく i を更新してしまっている。

問題06-8 空欄補充

次のコードは、配列の全要素を出力するプログラムである。配列の要素数は5である。空欄 [ C ][ D ] の組み合わせとして正しいものを選びなさい。

整数型の配列: data ← {10, 20, 30, 40, 50}
整数型: i

for ( i を [ C ] から [ D ] まで 1 ずつ増やす )
    data[i] を出力
endfor
// 期待する出力:10  20  30  40  50
解説を表示 正解:ア
疑似言語では配列の要素番号は 1から始まる(問題文に明記がある場合はそれに従う)。
要素数5の配列なので data[1]〜data[5] にアクセスするには C=1、D=5。
イの C=0、D=4 はC言語やPythonなど0始まりの言語の書き方です。