ここでは、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文に書き換えることを考えてみてください。
#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文の使い道について書いていきます。