第18章 もうひとつのループ

 よく考えてみると、for はいろいろやることが多すぎます。実は、もうちょっと簡単なループの方法が存在するのです。

 ということで、今回は for とは違うループの方法について話していきたいと思います。


 これが今回の要点です。


 では、いってみましょう。


 前回 for について話しました。その際、パラメータが省略できるとも話しました。

 で、その省略した形が下のようになっていました。

for(; a < 10;)

 何か変な格好ですね。

 では、このループの意味はどうなるでしょうか。「a が 10 より小さかったらループする」ですね。何か、こんなとき用の命令が別にあっても不思議ではないような感じがしますね。

 それが今回お話しする while です。

 while は for の初期化式、ループ式を省略したものと全く同じになります。

 では、次のプログラムを見て下さい。

プログラム実行結果
// While1.cpp
#include <iostream.h>

int main()
{
    int a = 0;
    while(a < 10)
    {
        cout << a << endl;
        a += 2;
    }
    return 0;
}
0
2
4
6
8

 前回の For3d.cpp の for(; a < 10;) を while(a < 10) にしただけです。結果も同じになっていますね。

 while の書式は

while(<条件式>)<実行文>

で、条件式を満たす限り実行文を実行し続けるというものです。

 while(1) は無限ループになります。


 では、条件式の判定されるタイミングはいつなのでしょうか? while は for(; <条件式>;) と全く同じといいました。だから、ループの先頭で判定されるはずです。

 では、For3b.cpp と同じ事をやってみましょう。

プログラム実行結果
// While1b.cpp
#include <iostream.h>

int main()
{
    int i = 0;
    while(i != 0)
        cout << "この文が表示されるかな?" << endl;
    return 0;
}

 はい、何も表示されませんでした。やはり、ループの先頭で判定しているようです。


 しかし、これとは逆にループの最後で判定するものはないのでしょうか? つまり、中身が最低でも1回は実行されるようにはできないのでしょうか?

 そのために、do-while という、while の別バージョンが存在します。

 では、下のプログラムを見て下さい。

プログラム実行結果
// While1c.cpp
#include <iostream.h>

int main()
{
    int i = 0;
    do
    {
        cout << "この文が表示されるかな?" << endl;
    }
    while(i != 0);
    return 0;
}
この文が表示されるかな?

 はい、表示されました。

 do-while 文の書式は

do <実行文> while(<条件式>);

で、とにかく一度実行文を実行し、そのあとは while と同じになります。

 最後のセミコロンを忘れやすいので気を付けて下さい。


 では、条件の評価されるタイミングをまとめてみましょう。

 先頭にループの条件を書くもの(for, while)は先頭で条件を評価しました。そして、末尾にループの条件を書くもの(do-while)は末尾で条件を評価しました。

 とても覚えやすいですね。


 では、今回の要点です。


 では、次回まで。さようなら。


第17章 for と配列変数 | 第19章 ループの強制終了

Last update was done on 1999.3.15

この講座の著作権はロベールが保有しています