★基本制御文(反復構造:for2)★


ここでは、for文の特徴について書いていきます。

次のプログラムを実行してみてください。


<sample program 056-01>

#include <stdio.h>

int main(void)
{
    int i;

    for (i = 0; i < 0; i++) {
        printf("%d\n", i);
    }

    return 0;
}

<実行結果>

続行するには何かキーを押してください・・・

繰り返し条件の部分が「i < 0」となっています。

「i」が0より小さい間繰り返すという意味ですね。

「i」の初期値は0ですから、最初から条件が成り立っていません。

条件が成り立っていないため、1度も繰り返さずに実行を終了しています。

何が言いたいかというと、for文は「前判定」なのです。

「前判定」と「後判定」の違いはこちらを見てください。

「前判定」ですから、while文の途中で出てきた、「do〜while文」のような「後判定」のプログラムには不向きです。


次にwhile文を使った次のプログラムをfor文に書き換えることを考えてみてください。


<sample program 056-02>

#include <stdio.h>

int main(void)
{
    int input;

    scanf("%d", &input);

    while (input != 0) {
        scanf("%d", &input);
    }

    return 0;
}

<実行結果>

5
3
-1
100
0
続行するには何かキーを押してください・・・

このプログラムは0を入力しない限り終わりません。

これをfor文に書き換えようとすると「初期値」や「増分」が無いため、どのように書き換えてよいか分りません。

※書き換えは可能ですが、後で書きます。

whileとforの使い分けは次のように考えると簡単です。

  while文 → 繰り返し回数が決まっていない場合

  for文 → 繰り返し回数が決まっている場合

while文は、「繰り返し条件」を書く場所しか決まっていませんので、「カウンタ」を構成する「初期値」「増分」は書かないことも出来ます。

for文には「初期値」「繰り返し条件」「増分」を書く場所が決まっていますので、「○○回繰り返す」という処理に向いています。


実際にプログラムを組む際には、前判定か後判定か、繰り返し回数が決まっているかどうか、で使い分けをすると良いと思います。

次は、これまでwhile文で書いたプログラムをfor文に書き直しながらfor文の使い道について書いていきます。


次へ

戻る

目次へ