今回は、whileに条件を付けて繰り返し回数をコントロールします。
while文とは、条件が成立している間繰り返す命令です。
条件の書き方はif文と同じです。
繰り返しの中で、条件を不成立にすることが出来れば、無限に繰り返すことはなくなります。
例えば前回のサンプルで、繰り返しの中で数を増やす「カウンタ」というものを紹介しました。
「カウンタ」の中身は1ずつ増えていきますので、「カウンタの中身が10より小さい間繰り返す」という設定をしてやれば、10以上になった時に条件が成り立たなくなるはずです。
早速試してみましょう。
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 10) { printf("%d\n", counter); counter = counter + 1; } return 0; } |
<実行結果>
0 1 2 3 4 5 6 7 8 9 続行するには何かキーを押してください・・・
条件の中に「counter < 10」と書きました。
この条件は「変数counterの中身が10より小さい」時に成立します。
逆に「変数counterの中身が10以上になった」時は不成立になります。
変数counterの中身は0から始まって、1ずつ増えていきますから、いつか10以上になる時が来ます。
実行結果を見ると、0から9までの数値が表示されています。
プログラムを確認してください。
while文の中括弧の中身は、
1.変数counterの中身を表示する 2.変数counterの中身を1増やす
という順番になっています。
つまり、9を表示した後で1増えて、10になった時点で繰り返しが止まっています。
重要な部分ですので、非常にクドイかもしれませんが、処理の流れを詳しく書きます。
1.変数counterを準備する。 2.変数counterに0を代入する。 3.変数counterが10より小さいかどうか調べる・・・繰り返しの始まり ※・・・ここで、変数counterの中身が10以上であればwhile文を抜け出し7に行きます。 4.変数counterの中身を表示。 5.変数counterの中身を1増やす。 6.3に戻る・・・繰り返しの終端 7.プログラム終了。 |
この考え方は後々までずっと使う考え方ですから、しっかりと理解してください。
では、少し質問をしてみますね。
質問1.結局このプログラムでは、何回繰り返しが行われたのでしょうか? 質問2.プログラムが終了する時の変数counterの値はいくつでしょうか?
質問1の答え・・・10回 質問2の答え・・・10
「カウンタ」を0から始めて9まで数えましたから10回繰り返されています。
条件が成り立つのは「カウンタ」が10より小さい時です、「カウンタ」は1ずつ増えますから10になった時に条件が不成立になり、繰り返しをしなくなります。
このことをしっかりと頭に入れて、次の問題を考えてみてください。
上のプログラムを改良して、28回繰り返すプログラムを書いてみてください。
解答例です。
<sample program 030-02>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 28) { printf("%d\n", counter); counter = counter + 1; } return 0; } |
<実行結果>
0 1 2 3 4 5 6 ・ ・ (省略しています) ・ 25 26 27 続行するには何かキーを押してください・・・
条件の数値「10」を「28」に変えただけです。
0から27までの28回繰り返されています。
では、100回繰り返すプログラムを作ってみましょうか。
解答例です。
<sample program 030-03>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 100) { printf("%d\n", counter); counter = counter + 1; } return 0; } |
<実行結果>
0 1 2 3 4 5 6 ・ ・ (省略しています) ・ 97 98 99 続行するには何かキーを押してください・・・
「カウンタ」の概念が理解できましたでしょうか?
この考え方は非常に重要ですので、理解できなかった場合は何度も読み返してみてください。
これを理解せずに次のステップに進むことは出来ません。
最後に、なぜ0から数え始めるのでしょうか。
普通の方は数を数えるのに1から始めるはずですから、人間にとっては1から数え始めた方が都合が良いはずです。
実は0から始めるのはコンピュータにとって都合が良いからなのです。
これに関しては後々説明しますので、今は置いておいて、次は色々な繰り返しを作ってみましょう。