選択構造のバリエーション
3つの基本構造のうち、順次構造と選択構造を学びました。
選択構造は、C++ではif文で表すことができることも学習済みだと思います。
if文
- "ブロック有バージョン"
if(条件式) { trueの時の処理のブロック } else { falseの時の処理のブロック } //例:奇数か偶数かで、処理を分ける int var; cin >> var; if(var%2 == 0) { cout << "var は偶数です" << endl; } else { cout << "var は奇数です" << endl; }
一応ブロックで書きましたが、1行のみの命令で済むのであればブロックは、要りませんが、見やすくまとめるためにわざわざつけることも多いです。
- "ブロックなしバージョン"
if(条件式) trueの時の処理のブロック else falseの時の処理のブロック //ブロックなしで奇数偶数の分類を書いたもの if(var%2 == 0) cout << "var は偶数です" << endl; //命令が1行ならブロックは無しでもよい else cout << "var は奇数です" << endl; //命令が1行ならブロックは無しでもよい
その1:二者択一
初めにやった基本的な奴です。
```if(条件式)```の条件によって、```if```直下のブロックと、```else```ブロックに処理が分岐します。
- "if~else文"
if(条件式) { trueの時の処理のブロック } else { falseの時の処理のブロック }
サンプルコード
上の奇数と偶数で処理を分けるソースコードが、そのものです。
正の整数には奇数か偶数しかありません。したがって、このif文は、すべての正の整数を対象に条件を2つに分けており、もれなく正の整数を処理するところに注意しましょう。(逆に言うと、条件によっては漏れがある場合があります。)
その2:条件選択
条件がTrueの時だけ実行するパターン。
- "Trueの時だけ実行"
if(条件式) { //trueの時の処理 }
```else```ブロックがないだけである。elseの時がない場合はelseの処理を省いてよい。
ただし、二者択一パターンの時と違い、falseの時は処理を行わないでスルーしてしまうので、処理漏れ(処理が必要なのに処理をしないでしまう状態)に注意が必要である。
サンプルコード
- "10より大きい時だけ表示"
int var; cin >> var; if(var > 10) { cout << "varは10より大きい" << endl; }