以下のように書きます。
for(初期化処理;条件式;変化処理)
{
処理
}
まず最初に初期化処理を行った後、条件式が真の間、各ループの最後に変化処理を行いつつ処理を繰り返します。
初期化処理
while(条件式)
{
処理
変化処理
}
whileを用いて表すとこのようになります。
よく使われるのは以下のような使い方です。
for(i=0;i<10;i++)
forの行だけ書きました。
これで処理が10回繰り返されます(iが0から9まで変化する間)。
この例では初期化、条件、変化が全てiに関するものになっていますが、もちろんそのような制限はありません。
ただ上の例のような
for(i=始まり;i<終わり;i++)
という使い方の方が圧倒的に多いのでまずはこれを覚えましょう。
iが始まりの数から終わりの数-1まで変化していき繰り返す、なんだか数学のシグマみたいですね(私は順番が逆で数学で初めてシグマを習った時、「あ、for文だ!」となりました)。
なお、while同様{}内が一行なら{}は省略可能です。
前章でforは繰り返す回数が決まっている時によく使うと書きました。
始まりを0に終わりを繰り返したい回数にすればいいわけです。
for(i=0;i<5;i++)
{
printf("そして伝説へ…\n");
}
文章が五回表示されます。
この例では{}内でiを使っていないのでiは繰り返し回数をカウントしてチェックいるだけです(シグマの中身が定数)。
iが変化していくことを{}内で利用することもできます。
for(i=1;i<=7;i++)
{
printf("ドラゴンクエスト%d\n",i);
}
ドラクエ1からドラクエ7まで表示されるわけですね。
forやwhileの中にさらにループをつくることも可能です。
ここではforの二重ループを解説します。
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
{
処理
}
}
この場合処理はi=0でj=0〜2、i=1でj=0〜2…i=4でj=0〜2という順番で計15回繰り返されます。
二つ並んだシグマを考えればすぐに理解できるでしょう。
100以下の3の倍数を表示するプログラムをforを使ってつくってみましょう。
#include <stdio.h> int main(void) { int i; for(i=3;i<=100;i+=3) printf("%d",i); printf("\n"); return 0; }