C++のforループ基本構文を徹底解説!繰り返し処理の書き方を完全マスター
生徒
「先生、同じメッセージを100回表示したいのですが、100回も同じコードを書くのは大変ですよね?」
先生
「その通りです!そんな時こそ『forループ(フォー・ループ)』の出番ですよ。これを使えば、たった数行で何百回でも同じ処理を繰り返すことができます。」
生徒
「繰り返し作業を自動化できるんですね。でも、書き方が複雑そうで心配です……。」
先生
「実は、3つのルールを覚えるだけで大丈夫なんです。プログラミング未経験の方にも分かりやすく説明しますね!」
1. forループ(繰り返し処理)とは?
C++のforループとは、決まった回数だけ同じ処理を自動で繰り返すための命令です。例えば「1から10まで数字を数える」「名簿の全員にメールを送る」といった、単純だけど回数が多い作業をコンピューターに任せることができます。これを繰り返し処理(ループ処理)と呼びます。
パソコンを触ったことがない方には、「工場のベルトコンベア」をイメージしてもらうと良いでしょう。一つの製品が流れてくるたびに、同じハンコを押す作業を自動で行うのがループです。一度設定してしまえば、あとはコンピューターが文句も言わずに正確に作業を続けてくれます。これにより、プログラムの行数を劇的に減らし、ミスを防ぐことができるようになります。
2. for文の基本構文!3つの設定項目を理解しよう
for文を書くときは、丸括弧 () の中に、セミコロン ; で区切られた3つの指示を書きます。これが繰り返しの「ルール」になります。基本の形は for (初期化; 条件; 更新) となっています。
- 初期化:カウントを始める数字を決めます(例:0からスタート)。
- 条件:いつまで繰り返すかを決めます(例:10より小さい間だけ)。
- 更新:一回終わるごとに数字をどう変えるか決めます(例:1ずつ増やす)。
この3つが揃うことで、ループは正確に動作します。まるで「運動場のトラックを走る時、1周走るごとにカウンターをカチッと押して、10周走ったら終了する」という約束事を決めるようなものです。
for (int i = 0; i < 5; i = i + 1) {
std::cout << "こんにちは!" << std::endl;
}
このコードを実行すると、画面に「こんにちは!」が5回表示されます。
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
3. 変数「i」の役割とカウンタ変数の仕組み
for文でよく使われる int i = 0 という書き方の i は、「カウンタ変数」と呼ばれます。これは今何回目を処理しているかを覚えておくための「メモ帳」のようなものです。慣習的に i (indexの頭文字) が使われますが、名前は何でも構いません。
ループが1回終わるたびに、このメモ帳の数字が書き換えられていきます。例えば i++ (または i = i + 1)と書くと、数字が一つずつ増えていきます。この変数の値を処理の中で使うこともできるので、単に繰り返すだけでなく「1番目、2番目……」と中身を変えながら表示することも可能になります。プログラミングでは、この「数字を数える箱」をうまく使いこなすことが上達のコツです。
4. カウントを表示する実用的なループの書き方
実際に、カウンタ変数 i を使って、1から5までの数字を順番に表示するプログラムを書いてみましょう。初期化で i = 1 とし、条件を i <= 5 (5以下)にすることで、私たちの感覚に近い数字の数え方ができます。
#include <iostream>
int main() {
// 1から始まって、5になるまで繰り返します
for (int i = 1; i <= 5; i++) {
std::cout << i << "回目の繰り返しです" << std::endl;
}
return 0;
}
ここで使った i++ は、「今の数字に1を足す」という意味の便利な書き方です。これもC++の演算子の一つですね。
1回目の繰り返しです
2回目の繰り返しです
3回目の繰り返しです
4回目の繰り返しです
5回目の繰り返しです
5. 逆送りのループ!数字を減らしながら繰り返す
forループは数字を増やすだけでなく、減らしながら(カウントダウン)繰り返すこともできます。その場合は、初期化で大きな数字を入れ、更新部分で引き算(i-- や i = i - 1)を行います。
例えば、ロケットの発射カウントダウンのような処理を作りたい時に便利です。条件式の向き(> や <)に注意して書くのがポイントです。パソコン初心者のうちは、数字が増えるパターンだけでなく、このように減るパターンも練習しておくと、条件分岐の考え方がより深まりますよ。
for (int i = 3; i > 0; i--) {
std::cout << i << "..." << std::endl;
}
std::cout << "発射!" << std::endl;
3...
2...
1...
発射!
6. 無限ループに注意!終わらない処理の落とし穴
for文を書くときに最も気をつけなければならないのが、無限ループです。これは、条件がいつまでも満たされたままになり、プログラムが永遠に終了しなくなってしまう状態を指します。例えば、数字を増やしていくはずが間違えて減らしてしまったり、終わりの条件を書き間違えたりすると発生します。
もしプログラムを実行して、画面がずっと動き続けたり、パソコンの動作が急に重くなったりした場合は、無限ループに陥っている可能性があります。そんな時は慌てず、実行中のウィンドウを閉じたり、強制終了させたりしましょう。初心者にとって無限ループは怖いものですが、誰もが一度は通る道ですので、落ち着いて条件式を修正すれば大丈夫です。
7. 九九の表も作れる!ループの中にループを入れる「ネスト」
for文の中に、さらに別のfor文を入れることを「ネスト(入れ子)」と呼びます。これを使うと、二次元的な広がりを持つデータを扱うことができます。代表的な例が、学校で習った「九九の表」の作成です。
外側のループが「1の段、2の段……」と進み、その一段ごとに内側のループが「1倍、2倍……」と計算を行います。パソコン初心者の方には、カレンダーをイメージしてもらうと分かりやすいかもしれません。外側のループが「週(1週目、2週目)」を決め、内側のループがその中の「曜日(月〜日)」を埋めていくイメージです。これができるようになると、作れるプログラムの幅が一気に広がります。
#include <iostream>
int main() {
// 2の段と3の段だけを表示する簡単な例
for (int i = 2; i <= 3; i++) {
for (int j = 1; j <= 9; j++) {
std::cout << i << "x" << j << "=" << (i * j) << " ";
}
std::cout << std::endl; // 段が終わったら改行
}
return 0;
}
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
8. forループと配列の相性はバツグン!
今後の学習で登場する「配列(はいれつ)」という、たくさんのデータを一列に並べて管理する仕組みと、forループは非常に相性が良いです。配列に保存された100個のデータを一つずつ確認して、合計を出したり、特定のデータを探したりする作業は、forループなしでは考えられません。
今の段階では、「forループをマスターすれば、後で大量のデータを扱うのがとっても楽になるんだな」と思っておいてください。大量の書類を一気に処理する自動化ツールを作る感覚です。この基礎をしっかり固めておくことで、将来的に高度なアプリケーションや、便利なデータ分析ツールなどを作れる基礎体力が身につきます。
9. forループを使いこなして効率的なプログラムを
forループは、一見すると難しそうな記号の並びに見えますが、その正体はとてもシンプルな「自動繰り返しマシン」です。今回紹介した3つの設定項目(初期化、条件、更新)を正しく組み合わせることで、どんなに膨大な作業でも一瞬で終わらせることができるようになります。
プログラミング未経験の方は、まず「こんにちは」を3回出すところから始め、次に数字を10まで数え、そして九九に挑戦する、という風にステップアップしてみてください。自分の書いた数行のコードで、コンピューターが何十回、何百回と動く様子を見るのは、プログラミングの醍醐味の一つです。楽しみながら、この便利な道具を自分のものにしていきましょう!