入力した数値が0のときは...、1のときは...、2のときは...、とかしたいとき、if を使っていては面倒です。今回はそういうときのいい方法を教えたいと思います。
今回の要点は以下の通りです。
では、いってみましょう。
第12章と前回に割り算プログラムを作りました。今度は四則演算全部できるようにしましょう。
そのために、どれを行うか選択することにします。
どれをしますか(1:加算,2:減算,3:乗算,4:除算) >
第1項と第2項の入力は共通にしていいですね。ですが、計算と出力は分岐する必要があります。
あと、演算の種類の選択で1〜4以外の数値を入れた場合の処理をする必要があります。
ここでは次のようにすればいいですね。選択の結果を sign という変数に入れます。そして、sign が 1 のときは足し算をして、そうでないときはまた sign を確かめます。それを繰り返して、それでも条件からもれれば、エラーを表示します。
条件分岐は if-else でしたね。上の処理を直訳すると
if(sign == 1){ ... }
else if(sign == 2){ ... }
else if(sign == 3){ ... }
else if(sign == 4){ ... }
else{ ... }
となります。でも、こんなので本当にいいんでしょうか。
では、次のプログラムを見て下さい。
| プログラム | 
|---|
| // Switch1b.cpp
#include <iostream.h>
int main()
{
    int a, b, sign, result, i;
    for(i = 0; i < 5; i++)
    {
        cout << "第1項 > ";
        cin >> a;
        cout << "第2項 > ";
        cin >> b;
        cout << "どれをしますか(1:加算,2:減算,3:乗算,4:除算) > ";
        cin >> sign;
        if(sign == 1)
            result = a + b;
        else if(sign == 2)
            result = a - b;
        else if(sign == 3)
            result = a * b;
        else if(sign == 4)
            result = a / b;
        else
        {
            cout << "真面目にせんかい!" << endl;
            continue;
        }
        cout << "答えは " << result << " です。" << endl;
    }
    return 0;
} | 
| 実行結果 | 
| 第1項 > 1 第2項 > 2 どれをしますか(1:加算,2:減算,3:乗算,4:除算) > 1 答えは 3 です。 第1項 > 5 第2項 > 4 どれをしますか(1:加算,2:減算,3:乗算,4:除算) > 2 答えは 1 です。 第1項 > 9 第2項 > 6 どれをしますか(1:加算,2:減算,3:乗算,4:除算) > 3 答えは 54 です。 第1項 > 14 第2項 > 7 どれをしますか(1:加算,2:減算,3:乗算,4:除算) > 4 答えは 2 です。 第1項 > 678 第2項 > -543 どれをしますか(1:加算,2:減算,3:乗算,4:除算) > 5 真面目にせんかい! | 
どうやらこれでいいみたいです。
このように、単純に else if を使えば多条件分岐ができます。
でも、判定するのは変数 sign だけなんだから、もうちょっと、こう、簡単にならないものですかね。
そのようなときは switch 文を使います。
では、次のプログラムを見て下さい。
| プログラム | 
|---|
| // Switch1.cpp
#include <iostream.h>
int main()
{
    int a, b, sign, result, i;
    for(i = 0; i < 5; i++)
    {
        cout << "第1項 > ";
        cin >> a;
        cout << "第2項 > ";
        cin >> b;
        cout << "どれをしますか(1:加算,2:減算,3:乗算,4:除算) > ";
        cin >> sign;
        switch(sign)
        {
        case 1:
            result = a + b; break;
        case 2:
            result = a - b; break;
        case 3:
            result = a * b; break;
        case 4:
            result = a / b; break;
        default:
            cout << "真面目にせんかい!" << endl;
            continue;
        }
        cout << "答えは " << result << " です。" << endl;
    }
    return 0;
} | 
| 実行結果 | 
| 上と同じだから省略 | 
if - else if - else を使っていたところが switch 文に置き換わっています。
switch の書式は
| switch(<式>)
{
case <値1>: <実行文>
case <値2>: <実行文>
case <値3>: <実行文>
 | 
です。
<式> が <値> のどれかである場合、その場所に飛びます。もし、どれとも違う場合は default: の所へ飛びます。
switch 文を終わるには break を使います。次の case に到達したからといっても、終わってくれません。
また、else と同じように、default はなくていいのなら、なくても構いません。
switch 文はループではないので、continue はその外のループ命令に対して効力を持ちます。
今回でひとまず条件分岐とループ処理は終わりです。ここまでのことを使えばある程度のことはもうできるでしょう。何か簡単なプログラムを組んでみるのもいいでしょうね。
今回の要点は次の通りでした。
では、次回まで。さようなら。
Last update was done on 1999.8.17
この講座の著作権はロベールが保有しています