制御構文その1 ループ(for編)


・for

 以下のように書きます。

for(初期化処理;条件式;変化処理)
{
	処理
}
まず最初に初期化処理を行った後、条件式が真の間、各ループの最後に変化処理を行いつつ処理を繰り返します。
初期化処理
while(条件式)
{
	処理
	変化処理
}
whileを用いて表すとこのようになります。 よく使われるのは以下のような使い方です。
for(i=0;i<10;i++)
forの行だけ書きました。 これで処理が10回繰り返されます(iが0から9まで変化する間)。 この例では初期化、条件、変化が全てiに関するものになっていますが、もちろんそのような制限はありません。 ただ上の例のような
for(i=始まり;i<終わり;i++)
という使い方の方が圧倒的に多いのでまずはこれを覚えましょう。 iが始まりの数から終わりの数-1まで変化していき繰り返す、なんだか数学のシグマみたいですね(私は順番が逆で数学で初めてシグマを習った時、「あ、for文だ!」となりました)。 なお、while同様{}内が一行なら{}は省略可能です。

・forの利用

 前章で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;
}