第19章 ループの強制終了

 今までのを見たとおり、条件式はループの端でしか判定されません。

 今回は実行文の真ん中あたりでもループを終了する方法について話していきます。


 今回の要点は以下の通りです。


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


 ループを抜けるには、今まではループ命令の条件判定に頼ってきました。しかし、その判定部分は先頭か終わり、つまり、実行文の端でしか判定されませんでした。

 実際には実行文の真ん中あたりで抜け出さなくてはならないときもあります。そのときは break を使います。

 書式は単純で

break;

だけで構いません。ですが、途中にこれを置いただけではループができなくなってしまいます。そこで、実際には if 文と組み合わせて使います

 さて、途中で抜け出す必要のあるプログラムとはどのようなものがあるでしょうか?

 第12章で行った割り算プログラムを思い出して下さい。これを、繰り返してずっと割り算を行うように改造します(無限ループ)。

 このとき、2番目に0を入力するとループを終わるようにしたいと思います。

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

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

int main()
{
    int a, b;

    while(1)
    {
        cout << "1番目の値を入力してください > ";
        cin >> a;

        cout << "2番目の値を入力してください > ";
        cin >> b;

        if(b == 0)
        {
            cout << "0では割れません!" << endl;
            break;
        }

        cout << a << " / " << b << " = "
             << a / b << " ... " << a % b << endl;
    }

    cout << "プログラムは終了しました。" << endl;
    return 0;
}
1番目の値を入力してください > 23
2番目の値を入力してください > 7
23 / 7 = 3 ... 2
1番目の値を入力してください > 16
2番目の値を入力してください > 2
16 / 2 = 8 ... 0
1番目の値を入力してください > 7
2番目の値を入力してください > 0
0では割れません!
プログラムは終了しました。

 ああ、終われましたね。この終わり方は普通のループ文ではできません。

 また、ループを抜け出した後、すぐ関数が終わるようなら、return を使って抜け出しても構いません。


 今度は、0を入力したら終わるのではなく、5回実行したら終わるようにしてみましょう。

 「あれ、for 使うだけでええやないの」と思ったでしょう。確かにそうです。

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

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

int main()
{
    int a, b, i;

    for(i = 0; i < 5; i++)
    {
        cout << "1番目の値を入力してください > ";
        cin >> a;

        cout << "2番目の値を入力してください > ";
        cin >> b;

        if(b == 0)
        {
            cout << "0では割れません!" << endl;
            continue;
        }

        cout << a << " / " << b << " = "
             << a / b << " ... " << a % b << endl;
    }

    cout << "プログラムは終了しました。" << endl;
    return 0;
}
1番目の値を入力してください > 89
2番目の値を入力してください > 4
89 / 4 = 22 ... 1
1番目の値を入力してください > 0
2番目の値を入力してください > 5
0 / 5 = 0 ... 0
1番目の値を入力してください > 0
2番目の値を入力してください > 0
0では割れません!
1番目の値を入力してください > 8
2番目の値を入力してください > 1
8 / 1 = 8 ... 0
1番目の値を入力してください > 40
2番目の値を入力してください > 9
40 / 9 = 4 ... 4
プログラムは終了しました。

 おや、何か見慣れないものがありますね。

continue;

 これは、残りの実行文を無視するものです。実行文の末尾に飛ぶと言っても構いません。

 その後は、ループ式(i++)を行い、条件式を判定します。そして、条件を満たしていればさらにループを続けます。

 「else を使えばいいのでは」と思うかも知れませんが、これはネストを深くしないための工夫です。こういう条件が何個も出てくるときなどには非常に効果的です。


 今回の要点です。


 では、さようなら。


第18章 もうひとつのループ | 第20章 多条件分岐

Last update was done on 1999.3.15

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