
C++入門|繰り返しとfor文
for文は、修行を決めた回数だけくり返すための基本技。回数を数えながら同じ処理を進めれば、C言語の流れがぐっと見えやすくなります。
C言語では、同じ処理を何度も実行したい場面がよくあります。
たとえば、1から5まで順番に表示したいときや、決まった回数だけ同じ修行をくり返したいときです。
こうした場面で活躍するのが、繰り返し処理 です。
ドラゴンボール風にたとえるなら、繰り返し処理は修行メニューを一定回数続ける特訓のようなものです。
1回だけパンチを出して終わるのではなく、5回連続でパンチする、10回ジャンプする、気を3ずつ減らしながら修行を進める、というように、同じ流れを条件に合わせて何度も実行する のが繰り返し処理です。
C言語には、繰り返し処理を行う方法として for文 や while文 があります。
この中でも、最初にぜひ覚えておきたいのが for文 です。for文は、何回くり返すのか、どこから始めるのか、1回ごとにどう変化させるのかを、ひと目で分かりやすく書ける、とても便利な書き方です。
ここでは、for文の基本的な仕組み、for文の書式、インクリメントとデクリメント、代入演算子、そしていろいろなfor文の書き方まで、やさしく丁寧に見ていきます。
繰り返し処理とは何か
繰り返し処理とは、ある処理を一定回数、あるいは条件が満たされている間、何度も実行することです。
たとえば、同じメッセージを5回表示したいとき、1回ずつ同じprintfを書くこともできます。
でも、それでは回数が増えるたびに書く量が多くなってしまいます。
そこで、for文のような繰り返し処理を使えば、短く、分かりやすく、間違いにくく書けます。
ドラゴンボール風にたとえるなら、修行のたびに「もう1回」「もう1回」と手で書き足すのではなく、「5回くり返す」という修行ルールを最初に決めておくイメージです。
| 用語 | 意味 | ドラゴンボール風のイメージ |
|---|---|---|
| 繰り返し処理 | 同じ処理を何度も実行する | 同じ修行メニューを連続で行う |
| for文 | 回数や条件を決めてくり返す | 修行回数を数えながら進める特訓 |
| while文 | 条件が成り立つ間くり返す | 条件が続く限り修行を続ける |
今回は、繰り返し処理の中でも、特に使う機会の多い for文 を中心に見ていきます。
for文を使った基本的なプログラム
まずは、for文を使った基本のプログラムを見てみましょう。
ここでは、1回目から5回目までの修行回数を順番に表示するプログラムを使います。
プロジェクト/ファイル名: Chap1_04/main.c
#include <stdio.h>
int main(int argc, char** argv) {
int round;
// 1回目から5回目までの修行回数を表示する
for (round = 1; round <= 5; round++) {
printf("%d回 ", round);
}
printf("\n");
return 0;
}このプログラムを実行すると、次のように表示されます。
1回 2回 3回 4回 5回この結果を見ると、for文の中に書かれた処理が5回実行され、変数roundの値が1から5まで順番に増えていることが分かります。
ドラゴンボール風にいうと、修行カウンターが1回目から始まり、1回修行するごとに1ずつ増えて、5回目まで表示されたら修行を終える流れです。
図:for文で修行回数を1から5までくり返す流れ

この図が示していること
この図では、for文がどのような順番で動くのかを表しています。
まず、roundに1を入れてスタートします。次に、round <= 5 が成り立っているかを確認します。条件が成り立っていれば、for文の中の処理を実行し、表示を行います。そのあと round++ で値を1増やし、もう一度条件確認に戻ります。これを round が5以下の間くり返します。
for文は、開始の値、続ける条件、1回ごとの変化 がセットになっているのがポイントです。
for文の書式を見てみよう
for文の基本的な書き方は、次のようになります。
for (初期化処理; 条件式; 増分処理) {
繰り返したい処理
}この形を、先ほどのプログラムに当てはめると次のようになります。
for (round = 1; round <= 5; round++) {
printf("%d回 ", round);
}for文の丸カッコの中には、3つの要素があります。
| 部分 | 内容 | 意味 |
|---|---|---|
| 初期化処理 | round = 1 | 最初にroundを1にする |
| 条件式 | round <= 5 | roundが5以下の間くり返す |
| 増分処理 | round++ | 1回ごとにroundを1増やす |
ドラゴンボール風にたとえると、次のような修行ルールになります。
- 最初は1回目から始める
- 5回目までは修行を続ける
- 1回終わるたびに回数を1つ増やす
この3つがまとまっているので、for文は非常に見やすいです。
for文はどの順番で動くのか
for文は、次の順番で処理されます。
- 初期化処理を行う
- 条件式を確認する
- 条件が成り立っていれば { } の中を実行する
- 増分処理を行う
- もう一度条件式を確認する
- 条件が成り立たなくなったら終了する
先ほどのプログラムなら、次のように動きます。
| 回数 | roundの値 | 条件 round <= 5 | 表示 | その後 |
|---|---|---|---|---|
| 開始前 | 1 | 確認前 | なし | スタート |
| 1回目 | 1 | 成り立つ | 1回 | roundが2になる |
| 2回目 | 2 | 成り立つ | 2回 | roundが3になる |
| 3回目 | 3 | 成り立つ | 3回 | roundが4になる |
| 4回目 | 4 | 成り立つ | 4回 | roundが5になる |
| 5回目 | 5 | 成り立つ | 5回 | roundが6になる |
| 終了 | 6 | 成り立たない | なし | ループ終了 |
つまり、roundが6になった時点で条件を満たさなくなるので、for文は終了します。
{ } の中がくり返される
for文では、{ } の中に書いた処理が繰り返されます。
今回のプログラムでは、次の1行がfor文の中身です。
printf("%d回 ", round);この1行が、roundの値を変えながら何度も実行されます。
ドラゴンボール風にいうと、{ } の中は修行メニューの本体です。
修行回数を数える仕組みはfor文の外側にあり、実際にくり返したい技や動作は { } の中に入れます。
もし { } の中に複数の処理を書けば、それら全部が1セットとして繰り返されます。
roundは回数を数えるための変数
今回のサンプルでは、roundという変数を使っています。
int round;このroundは、今が何回目の繰り返しかを表すための変数です。
for文では、このように回数を数えるための変数をよく使います。
元の教材では i という短い変数名が使われることが多いですが、今回は round という名前にしているので、修行回数を数えている ことが分かりやすくなっています。
| 変数名 | 役割 |
|---|---|
| round | 何回目の修行かを数える |
| i | 一般的によく使われるループ用の変数名 |
for文では、こうした「数えるための変数」がとても大切です。
この変数の値が変わることで、何回繰り返したかを判断できます。
インクリメントは値を1増やす処理
for文の3つ目の部分にあった round++ は、インクリメント と呼ばれます。
round++インクリメントとは、変数の値を1増やす処理です。
つまり、round++ は、次の意味になります。
round = round + 1;また、次のように書いても同じ意味です。
round += 1;ドラゴンボール風にたとえるなら、修行が1回終わるたびに、修行カウンターを1つ進める動作です。
| 書き方 | 意味 |
|---|---|
| round++ | roundを1増やす |
| ++round | roundを1増やす |
| round = round + 1 | roundにround + 1の値を代入する |
| round += 1 | roundに1を足して代入する |
for文の増分処理では、このインクリメントがとてもよく使われます。
デクリメントは値を1減らす処理
インクリメントと反対に、値を1減らす処理を デクリメント といいます。
round--これは、次の意味です。
round = round - 1;また、次のようにも書けます。
round -= 1;ドラゴンボール風にたとえると、修行回数を後ろ向きに数えたり、残り回数を1つ減らしていくイメージです。
| 演算子 | 呼び名 | 意味 | 同じ意味の書き方 |
|---|---|---|---|
| i++ | インクリメント(後置) | 1増やす | i = i + 1、i += 1 |
| ++i | インクリメント(前置) | 1増やす | i = i + 1、i += 1 |
| i-- | デクリメント(後置) | 1減らす | i = i - 1、i -= 1 |
| --i | デクリメント(前置) | 1減らす | i = i - 1、i -= 1 |
最初の学習では、for文の中では i++ や i-- は、値を1増やす、または1減らすための書き方 と覚えておけば十分です。
図:インクリメント・デクリメントと代入演算子の関係

この図が示していること
この図では、インクリメントとデクリメントが、実際にはどのような意味を持っているかを表しています。
round++ は round = round + 1 と同じ意味で、値を1増やします。
round-- は round = round - 1 と同じ意味で、値を1減らします。
また、round += 1 や round -= 1 のような代入演算子でも、同じ考え方を簡潔に書けます。
for文では、このような「少しずつ値を変える処理」がとても大切です。
代入演算子は短く分かりやすく書くための記法
C言語では、変数自身を使って計算し、その結果を同じ変数に入れることがよくあります。
たとえば、次のような書き方です。
a = a + 1;これは、aの今の値に1を足して、その結果をaに代入するという意味です。
でも、同じ変数名が2回出てきて少し長く見えます。
そこで使えるのが 代入演算子 です。
a += 1;このように書くと、同じ意味をもっと簡潔に表せます。
主な代入演算子は次のとおりです。
| 演算子 | 使用例 | 意味 |
|---|---|---|
| += | a += 1 | a = a + 1 |
| -= | a -= 1 | a = a - 1 |
| *= | a *= 2 | a = a * 2 |
| /= | a /= 2 | a = a / 2 |
| %= | a %= 2 | a = a % 2 |
ドラゴンボール風にたとえるなら、代入演算子は修行記録を簡略表記するための便利なメモです。
戦闘力に1を足した結果をまた同じメモ欄に書き戻すような処理を、すっきり書けるようにしてくれます。
for文で使う round++ も、結局は「自分の値を1増やして自分に戻す」という考え方です。
for文のいろいろな書き方
for文は、1から5まで増やすだけではありません。
開始する値、終了条件、増え方や減り方を変えることで、さまざまな繰り返しができます。
代表的な例を見てみましょう。
| 記述方法 | 実行結果 | 説明 |
|---|---|---|
| for (i = 0; i < 5; i++) | 0 1 2 3 4 | 0から始めて、5になる前まで1ずつ増える |
| for (i = -2; i <= 2; i++) | -2 -1 0 1 2 | -2から2まで1ずつ増える |
| for (i = 0; i < 10; i += 2) | 0 2 4 6 8 | 2ずつ増える |
| for (i = 5; i >= 1; i--) | 5 4 3 2 1 | 5から1まで1ずつ減る |
| for (i = 2; i >= -2; i--) | 2 1 0 -1 -2 | 2から-2まで1ずつ減る |
| for (i = 12; i > 0; i -= 3) | 12 9 6 3 | 3ずつ減って0より大きい間続く |
この表を見ると、for文はとても柔軟だと分かります。
ドラゴンボール風にたとえるなら、修行回数を前に進めるだけでなく、逆方向に数えたり、2段飛ばしで進めたり、3ずつ気を減らしながら進めたりできるわけです。
0から始めるfor文
たとえば、次のようなfor文です。
for (i = 0; i < 5; i++)これは、iを0から始めて、iが5より小さい間くり返します。
表示される値は、0 1 2 3 4 です。
ここで大切なのは、i < 5 という条件です。
5以下ではなく5より小さい間なので、5は含まれません。
| 条件 | 含まれる最後の値 |
|---|---|
| i <= 5 | 5を含む |
| i < 5 | 5を含まない |
この違いは、for文ではとてもよく出てくるので、慣れておくと安心です。
2ずつ増やすfor文
for文では、1ずつ増やすだけでなく、2ずつ増やすこともできます。
for (i = 0; i < 10; i += 2)この場合、iは 0 → 2 → 4 → 6 → 8 と変化します。
これは、修行回数を1回ずつではなく、2段階ずつ進めるイメージです。
たとえば、偶数だけを表示したいときなどに便利です。
減らしながら進むfor文
for文は、値を増やすだけでなく、減らしながら進めることもできます。
for (i = 5; i >= 1; i--)この場合、iは 5 → 4 → 3 → 2 → 1 と減っていきます。
ドラゴンボール風にたとえるなら、残り修行回数を数えながら進めるイメージです。
あと5回、あと4回、あと3回というふうに、終了へ向かって数を減らしていく場面で使えます。
for文では条件式がとても大切
for文で一番大切なのは、いつまで続けるかを決める条件式 です。
たとえば、round <= 5 なら5回まで続きますが、条件を間違えると回数がずれたり、終わらなくなったりすることがあります。
| 条件式 | 意味 |
|---|---|
| i <= 5 | iが5以下の間くり返す |
| i < 5 | iが5未満の間くり返す |
| i >= 1 | iが1以上の間くり返す |
| i > 0 | iが0より大きい間くり返す |
ドラゴンボール風にたとえるなら、条件式は修行終了のルールです。
このルールが正しく決まっていないと、早く終わりすぎたり、いつまでも終わらなかったりします。
for文は何回くり返すかが見やすい
for文の大きな良さは、何回くらいくり返すのかが見やすいことです。
for (round = 1; round <= 5; round++)この1行を見るだけで、
- 1から始める
- 5まで続ける
- 1ずつ増やす
という情報が分かります。
これがfor文の使いやすさです。
while文でも繰り返しはできますが、回数のコントロールがはっきり見える という意味では、for文はとても分かりやすい書き方です。
図:いろいろなfor文のパターン

この図が示していること
この図では、for文のいろいろなパターンを比べています。
1ずつ増えるfor文では、1 2 3 4 5 のように順番に進みます。
2ずつ増えるfor文では、0 2 4 6 8 のように飛ばしながら進みます。
1ずつ減るfor文では、5 4 3 2 1 のように後ろ向きに進みます。
for文は、開始値、条件式、増分処理 を変えることで、たくさんの動きを作れることが分かります。
実際に覚えておきたいポイント
for文を使うときは、次のポイントを意識すると分かりやすくなります。
| ポイント | 内容 |
|---|---|
| 初期化処理 | どこから始めるかを決める |
| 条件式 | いつまで続けるかを決める |
| 増分処理 | 1回ごとにどう変化するかを決める |
| { } の中 | くり返したい処理を書く |
| インクリメント | 値を1増やす |
| デクリメント | 値を1減らす |
| 代入演算子 | 自分の値を使った計算を短く書く |
for文は、C言語の中でも特によく使われる基本技のひとつです。
最初は少し記号が多く見えるかもしれませんが、見ていることは意外とシンプルです。
- 最初の値を決める
- 条件が成り立つか確認する
- 処理する
- 値を変える
- もう一度確認する
この流れが分かってくると、for文はかなり読みやすくなります。
ドラゴンボール風にいえば、for文は「何回修行するか」をきれいに管理できる特訓メニューです。
決められた回数だけ同じ技をくり返すことで、プログラムの流れを整え、無駄なく処理を進められるようになります。
この感覚がつかめると、次にwhile文を学ぶときにも、繰り返し処理全体の考え方がぐっと理解しやすくなります。
