★基本制御文(while3)★


今回は、whileに条件を付けて繰り返し回数をコントロールします。

while文とは、条件が成立している間繰り返す命令です。

条件の書き方はif文と同じです。

繰り返しの中で、条件を不成立にすることが出来れば、無限に繰り返すことはなくなります。

例えば前回のサンプルで、繰り返しの中で数を増やす「カウンタ」というものを紹介しました。

「カウンタ」の中身は1ずつ増えていきますので、「カウンタの中身が10より小さい間繰り返す」という設定をしてやれば、10以上になった時に条件が成り立たなくなるはずです。

早速試してみましょう。


<sample program 030-01>

#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から始めるのはコンピュータにとって都合が良いからなのです。

これに関しては後々説明しますので、今は置いておいて、次は色々な繰り返しを作ってみましょう。


次へ

戻る

目次へ