★基本制御文(while5)★


繰り返しの手順について説明します。

手順といっても、作り方は前回までに書きましたので、繰り返す中身について書きます。

では、もう一度以前のプログラムを見てみましょう。


<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
続行するには何かキーを押してください・・・

0から9まで表示されますよね。

では、次のプログラムの実行結果を考えてみてください。

最初のプログラムと良く似たプログラムですが、どこが変わっているか分かりますでしょうか?


<sample program 032-01>

#include <stdio.h>

int main(void)
{
    int counter;

    counter = 0;

    while (counter < 10) {
        counter = counter + 1;
        printf("%d\n", counter);
    }

    return 0;
}









































<実行結果>

1
2
3
4
5
6
7
8
9
10
続行するには何かキーを押してください・・・

変わっているのは、繰り返しの中身が上下入れ替わっています。

最初のプログラムでは、カウンタ用変数(counter)の中身を表示した後でcounterの中身を1増やしていました。

このプログラムでは、counterの中身を1増やした後で、中身を表示しています。

余り大差ないと思いがちですが、結果を見るとはっきり違っています。

繰り返し回数はどちらも10回ですが、表示されるカウンタの中身が違いますね。

このように、単純に上下のプログラムを入れ替えるだけで、実行結果が変わってきます。

前回も書きましたが、結果を考えた上でしっかりとプログラムを書かなければなりません。

プログラムとは、手順を考える作業です。そして、正しい手順や間違った手順を教えるのは人間です。


では、また同じプログラムを題材にしてみます。

このプログラムが終了する時に(return 0;のところ)変数counterの中身はいくつになっているでしょうか?


<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;
}









































答え 10


繰り返しの条件は、( counter < 10 )ですから、counterが10より小さい間繰り返します。

ということは、counterが10以上になったら終わるということですね。

繰り返しの中身で、counterは0から始まって1ずつ増えていますから、いつかは10になるはずです。

10になった時点で、条件が成り立たなくなって繰り返しを終了します。

検証してみましょう。


<sample program 032-02>

#include <stdio.h>

int main(void)
{
    int counter;

    counter = 0;

    while (counter < 10) {
        printf("%d\n", counter);
        counter = counter + 1;
    }

    printf("counter = %d\n", counter);

    return 0;
}

<実行結果>

0
1
2
3
4
5
6
7
8
9
counter = 10
続行するには何かキーを押してください・・・

プログラムが終了する直前にcounterの中身を表示してみました。

ちゃんと10が入っていますね。

プログラムを組んでいる間は、printfを使えばいつでも変数の中身が確認できます。

この変数の中身は今どうなってるんだろ?」と悩まずに表示すれば良いのです。

よく悩んでいる方がいらっしゃいますが、悩むより表示です。

繰り返しは人間が苦手としていることです。

初心者の方が頭で考えて悩むより、表示して確認し、その後で「なぜこうなっているのか」を考えた方が建設的だと思います。

ただし、「なぜこうなっているのか」はしっかりと検証してくださいね。

でないと同じ間違いをずっと繰り返すことになります。


検証する時は、最初はぜひ紙に書いてみてください。

まず、変数counterの中身は0で、条件は成り立っているから繰り返しに入って、counterの中身0を表示して、counterを1増やして、条件は成り立っているから繰り返しに入って・・・・

これを紙に書きながら順番に最後まで検証してみると、手順がはっきりと見えてきます。

慣れてくると頭で考えて組めるようになりますし、もっと慣れてくると考えなくても作れるようになりますから、最初は丁寧にやってみてください。


次へ

戻る

目次へ