C++超入門③ if文で条件によって処理を変えよう
if、else if、else、比較演算子、論理演算子、switch文を使い、条件によって動きが変わるプログラムを作ります。
第3回では、「点数が60点以上なら合格」のように、条件によって処理を変える方法を学びます。
プログラムに判断をさせるときに使うのがif文です。
この回でできるようになること
- if文で条件を確認する
- else ifとelseで複数の結果を作る
- 複数の条件を組み合わせる
- switch文で選択肢を分ける
if文の基本
if (条件) {
条件が正しいときの処理
}
年齢が18以上か調べるコードは次のようになります。
int age = 20;
if (age >= 18) {
std::cout << "18歳以上です。\n";
}
条件が正しいことをtrue、正しくないことをfalseと表します。
比較に使う記号
| 記号 | 意味 |
|---|---|
| == | 左右が等しい |
| != | 左右が等しくない |
| > | 左が右より大きい |
| < | 左が右より小さい |
| >= | 左が右以上 |
| <= | 左が右以下 |
等しいか調べる記号は**==です。値を入れる=**とは役割が違います。
else ifとelse
複数の結果へ分けるときは、else ifとelseを使います。
#include <iostream>
int main() {
int score = 0;
std::cout << "点数を入力してください: ";
std::cin >> score;
if (score >= 80) {
std::cout << "とてもよくできました。\n";
} else if (score >= 60) {
std::cout << "合格です。\n";
} else {
std::cout << "もう一度復習しましょう。\n";
}
return 0;
}
条件は上から順番に確認されます。85点の場合は最初の条件で処理が決まり、それより下の条件は確認されません。
条件を組み合わせる
| 記号 | 意味 | 読み方 |
|---|---|---|
| && | 両方がtrue | かつ |
| || | どちらかがtrue | または |
| ! | trueとfalseを反対にする | ではない |
int age = 19;
bool hasTicket = true;
if (age >= 18 && hasTicket) {
std::cout << "入場できます。\n";
}
この場合は、「18歳以上」と「チケットを持っている」の両方を満たす必要があります。
switch文
一つの値を、決まった選択肢ごとに分ける場合はswitch文も使えます。
int menu = 2;
switch (menu) {
case 1:
std::cout << "ゲームを開始します。\n";
break;
case 2:
std::cout << "設定を開きます。\n";
break;
default:
std::cout << "選択肢がありません。\n";
break;
}
breakは、そのcaseの処理が終わったところでswitch文から抜ける命令です。
範囲を比べる場合はif文、番号や種類など決まった値を分ける場合はswitch文が分かりやすいことがあります。
小さな練習
年齢を入力し、12歳以下なら「子ども料金」、13歳以上なら「通常料金」と表示するプログラムを作ってください。
余裕があれば、65歳以上の「シニア料金」も追加してみましょう。
模範解答
#include <iostream>
int main() {
int age = 0;
std::cout << "年齢: ";
std::cin >> age;
if (age >= 65) {
std::cout << "シニア料金\n";
} else if (age <= 12) {
std::cout << "子ども料金\n";
} else {
std::cout << "通常料金\n";
}
return 0;
}
解説
65歳以上という特別な条件を先に調べます。その後、12歳以下かどうかを判定し、どちらにも当てはまらない13〜64歳をelseで通常料金にしています。
まとめ
- if文は、条件がtrueのときに処理を実行します。
- else ifとelseを使うと、結果を複数に分けられます。
- **==と=**は役割が違うので注意します。