入力した数値が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
この講座の著作権はロベールが保有しています