GeoCities home page

プログラミング A home page

for 文を使うとよい」と言われてもどうしたらいいかわかりません。

Q 実習指導員からよく「for 文を使うとよい」と言われますが、for 文をどのように使えばいいのかわかりません。

A では、for 文を使うプログラムを作る過程を順に見てみましょう。

「1から5までの整数の和を求めなさい」という課題があったら、あなたはどのようにプログラムを作りますか?

もっとも単純なプログラムは、おそらく次のようなものです。

int sum;

sum = 1 + 2 + 3 + 4 + 5;

printf("%d\n", sum);

この課題が「1から1000までの整数の和を求めなさい」というように変更されたらどうしますか? 「1+2+3+…」を1000まで続けるなんて冗談じゃないですね。そこで、このプログラムを少しずつ変形させて、for 文を利用した簡単なプログラムにします。

まずは、1から5までをばらばらに加えていくことにします。

int sum;

sum = 0; /* 0に初期化する */

sum = sum + 1;

sum = sum + 2;

sum = sum + 3;

sum = sum + 4;

sum = sum + 5;

printf("%d\n", sum);

2行目で「sum = 0;」とする理由は分かりますね。1, 2, 3, 4, 5 と順に加えていく前に何か0でない値が sum に入っていると正しい合計が求まらないからです。

次に、1, 2, 3, 4, 5 を k に置き換えます。

int k, sum;

sum = 0;

k = 1;

sum = sum + k;

k = k + 1;

sum = sum + k;

k = k + 1;

sum = sum + k;

k = k + 1;

sum = sum + k;

k = k + 1;

sum = sum + k;

k = k + 1; /* 本当はこの行はなくてもいい */

printf("%d\n", sum);

こうしてみると、

sum = sum + k;

k = k + 1;

というまったく同じ部分が5回繰り返されていることがわかりますね。この繰り返しの部分は for 文で次のように書くことができます。

int k, sum;

sum = 0;

k = 1;

for ( ; k <= 5; ) { /* k5より小さい間繰り返す */

sum = sum + k;

k = k + 1;

}

printf("%d\n", sum);

普通はもう少しまとめて次のように書きます。

int k, sum;

sum = 0;

for (k = 1; k <= 5; k = k + 1) { /* k5より小さい間繰り返す */

sum = sum + k;

}

printf("%d\n", sum);

これで完成です。

以上からわかるように、for 文を作るために必要なことは、「プログラムを同じ処理の繰り返しにしてしまうこと」です。