for文の使い方(繰り返し)

初心者向けC言語入門

概要

for文は、繰り返し(ループ)を行う繰り返し文です。
同じ処理を繰り返す場合、for文を使うとプログラムをすっきりシンプルに記述できます。
(他の繰り返し文として、do文、while文があります。)

構文

for( 式1 ; 式2 ; 式3 ) 文

for文のフローチャート

for文のフローチャート
  1. 「式1」を実行
  2. 「式2」を評価(評価結果が「真」なら「3」へ。「偽」なら繰り返しを抜ける)
  3. 「文」を実行
  4. 「式3」を実行し、「2」へ。

構文の解説

式1は、初めに1回だけ実行されます。
主に、繰り返し回数のカウントに使う変数の初期化に使用します。

式2は、繰り返しを続けるか、抜けるかの評価に使われます。
この式が成り立つなら「真」で繰り返し継続、成り立たないなら「偽」として抜けます。

式3は、文の実行後に実行されます。
主に、繰り返し回数のカウントに使う変数のカウントアップ(カウントダウン)に使用します。

プログラム例

#include <stdio.h>

int main(void)
{
    int i;
    int x = 0;

    for( i = 1 ; i < 10 ; i = i + 2 )
    {
        x += i;
        printf( "i = %d,  x = %d\n", i, x );        
    }
}

実行結果

i = 1,  x = 1
i = 3,  x = 4
i = 5,  x = 9
i = 7,  x = 16
i = 9,  x = 25

プログラムの解説

このプログラムは、1以上、10未満の奇数を積算するプログラムです。
繰り返し積算する処理にfor文を使用しています。
繰り返し回数のカウントに使う変数に「i」、積算した結果の格納用変数に「x」を使います。

for文の部分ですが、
式1は、「i = 1」です。カウントに使う変数「i」を1で初期化しています。
式2は、「i < 10」です。i < 10が成り立つ、つまり「i」が10未満であれば、繰り返しを継続します。
式3は、「i = i + 2」です。文を実行後、「i」を2カウントアップしています。

それでは、繰り返し処理を詳細に見ていきましょう。

  1. 初めに実行される式1で、「i」には1が代入されます。⇒(i = 1, x = 0)
  2. 式2が評価されます。「1 < 10」は成り立つ(真)ので、文を実行します。
  3. x+=iを実行します。⇒(i = 1, x = 1)
  4. printfの解説は省略(以降も同じ)します。
  5. 式3が実行されます。「i」には2が加算されます。⇒(i = 3, x = 1)
  6. 式2が評価されます。「3 < 10」は成り立つ(真)ので、文を実行します。
  7. x+=iを実行します。⇒(i = 3, x = 4)
  8. 式3が実行されます。「i」には2が加算されます。⇒(i = 5, x = 4)
  9. 式2が評価されます。「5 < 10」は成り立つ(真)ので、文を実行します。
  10. x+=iを実行します。⇒(i = 5, x = 9)
  11. 式3が実行されます。「i」には2が加算されます。⇒(i = 7, x = 4)
  12. 式2が評価されます。「7 < 10」は成り立つ(真)ので、文を実行します。
  13. x+=iを実行します。⇒(i = 7, x = 16)
  14. 式3が実行されます。「i」には2が加算されます。⇒(i = 9, x = 4)
  15. 式2が評価されます。「9 < 10」は成り立つ(真)ので、文を実行します。
  16. x+=iを実行します。⇒(i = 9, x = 25)
  17. 式3が実行されます。「i」には2が加算されます。⇒(i = 11, x = 4)
  18. 式2が評価されます。「11 < 10」は成り立たない(偽)ので、繰り返しを抜けます。

繰り返し文を使わないプログラム

お題の「1以上、10未満の奇数を積算するプログラム」を、繰り返し文を使わずに記述してみます。
ちょうど、電卓で1に3を足して、5を足して、という手作業のイメージをプログラムにしてみました。

#include <stdio.h>

int main(void)
{
    int x = 0;

    x += 1;
    x += 3;
    x += 5;
    x += 7;
    x += 9;
    
    printf( "x = %d\n", x );        
}

実行結果

x = 25

繰り返し回数がこの程度であれば、このように記載できます。
ただし、これが1000未満の積算だったら・・・、奇数を偶数に変えようと思ったら・・・。
かなり大変な作業になりますし、コピペミスも発生するでしょう。

for文で1000未満の積算に変更するなら、式2を「i < 1000」に変えるだけです。

このように、繰り返し処理には、繰り返し文を使うことで、

  • 処理をシンプルに記述できる
  • 繰り返し条件の変更も容易
  • 繰り返し処理であることが一目で判る

といった多くのメリットを享受できます。


コメント

タイトルとURLをコピーしました