前回まで、if文・switch文という「分かれ道」をやってきました。

今回は、プログラミング第二の山場。for文(フォーぶん)です。同じことを何度もくり返す、コンピュータがいちばん得意なことです。

for文とは、「決まった回数だけ、くり返す」しくみです。

なぜ、くり返しが必要なのか

たとえば「こんにちは」を5回表示したいとします。今までの知識だと、こう書くしかありません。

Console.WriteLine("こんにちは");
Console.WriteLine("こんにちは");
Console.WriteLine("こんにちは");
Console.WriteLine("こんにちは");
Console.WriteLine("こんにちは");

5回ならまだしも、100回だったら? 同じ行を100回コピーするなんて、現実的ではありません。

そこで使うのが、くり返し(for文)です。「これを100回くり返して」と一言で命令できます。コンピュータは、こういう単純なくり返しが、何より得意なのです。

書き方を見てみる

「こんにちは」を5回表示する例です。

for (int i = 0; i < 5; i++)
{
    Console.WriteLine("こんにちは");
}

これで「こんにちは」が5回表示されます。

for のカッコの中に、3つのことが、セミコロン(;)で区切って書かれています。順番に見てみましょう。

for (int i = 0; i < 5; i++)
        ①        ②     ③
  • int i = 0 … カウント用の箱 i を作り、0からスタート
  • i < 5 … 「i が 5 より小さい間」くり返す(これが続ける条件)
  • i++ … 1回くり返すごとに、i を1増やす

この i は、いま何回目かを数える「カウンター」です。

くり返しの流れを追ってみる

「なんとなく書ける」けど「なぜ動くか分からない」となりがちなので、流れを追ってみます。

for (int i = 0; i < 5; i++)
{
    Console.WriteLine(i);   // i の値を表示してみる
}

これを実行すると、こうなります。

0
1
2
3
4

動きはこうです。

  1. i は0からスタート
  2. 「0 < 5?」→ true。中を実行(0を表示)。i を1増やす
  3. 「1 < 5?」→ true。中を実行(1を表示)。i を1増やす
  4. ……これをくり返す
  5. 「5 < 5?」→ false。くり返し終了

i が0,1,2,3,4 と変わりながら、5回くり返されました。i < 5 が false になった瞬間に、ループが終わります。

なぜ 0 から始めて 5 で終わるのか

初心者が必ず「?」となるのが、「0から始まって、4で終わる(5回)」という点です。

「5回なら1から5までじゃないの?」と思いますよね。

これは、i = 0 から始めて i < 5(5未満)まで、という書き方だからです。
0, 1, 2, 3, 4 ——数えてみると、ちょうど5個。きちんと5回くり返されています。

慣れるまでは不思議ですが、プログラミングでは 「0から数え始める」ことがとても多いです。「0スタート、回数ぶんだけ未満(<)」と、ワンセットで覚えてしまうとラクです。

i は、ただ数えるだけじゃない

このカウンター i、表示にも使えます。たとえば、1から10までの数を順に表示するなら、こうです。

for (int i = 1; i <= 10; i++)
{
    Console.WriteLine(i);
}

今度は i = 1 スタート、i <= 10(10以下)まで。1から10までが順に表示されます。

i の使い方しだいで、「1から100まで足す」「九九を表示する」など、いろんなことができます。カウンターの値を、計算や表示にうまく使うのが、for文を使いこなすコツです。

つまずきポイント

初心者がはまりやすいのが、終わらないくり返し(無限ループ)です。

for (int i = 0; i < 5; i++)
{
    // ... 中で i を変えてしまったり、③のi++を書き忘れたり
}

③の i++(iを増やす)を書き忘れると、i がずっと0のまま。「0 < 5」がずっと true になって、永遠にくり返し続けます

もしプログラムが止まらなくなったら、まず「カウンターはちゃんと増えているか?」を疑ってみてください。

まとめ

for文は、決まった回数だけくり返すしくみ。

for (int i = 0; i < 回数; i++)
{
    くり返したい処理
}
  • ① カウンターを作ってスタート
  • ② 続ける条件
  • ③ 1回ごとにカウンターを増やす

そして、よく使うのは「0スタート、回数ぶんだけ未満(<)」。

次回は、もうひとつのくり返し while文 です。for文との使い分けが分かると、くり返しの理解がぐっと深まります。