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; ) { /* k が5より小さい間繰り返す */
sum = sum + k;
k = k + 1;
}
printf("%d\n", sum);
普通はもう少しまとめて次のように書きます。
int k, sum;
sum = 0;
for (k = 1; k <= 5; k = k + 1) { /* k が5より小さい間繰り返す */
sum = sum + k;
}
printf("%d\n", sum);
これで完成です。
以上からわかるように、for 文を作るために必要なことは、「プログラムを同じ処理の繰り返しにしてしまうこと」です。