if文
条件による処理の分岐を実現する
概要
プログラムが常に同じ処理をするとは限りません。 条件に応じて、異なる処理をしたいことがあります。
これを実現するのがif文です。
if文の基本形
if文は、条件が真(true)のときだけ処理を実行します。
if (条件) {
// 条件が true のときここが実行される
}
例
#include <iostream>
int main() {
int age = 20;
if (age >= 18) {
std::cout << "成人です" << std::endl;
}
return 0;
}
実行結果:
成人です
age >= 18 が true なので、
波括弧内の処理が実行されます。
if-else文
条件が真のときと偽のときで異なる処理をしたい場合は、 if-else文を使います。
if (条件) {
// 条件が true のとき
} else {
// 条件が false のとき
}
例
#include <iostream>
int main() {
int age = 15;
if (age >= 18) {
std::cout << "成人です" << std::endl;
} else {
std::cout << "未成人です" << std::endl;
}
return 0;
}
実行結果:
未成人です
age >= 18 が false なので、
else ブロックが実行されます。
if-else if-else文
3つ以上の条件を判定したいときは、 else ifを使います。
if (条件1) {
// 条件1が true
} else if (条件2) {
// 条件1は false、条件2は true
} else if (条件3) {
// 条件1、2は false、条件3は true
} else {
// すべての条件が false
}
例: 成績評価
#include <iostream>
int main() {
int score = 75;
if (score >= 90) {
std::cout << "評価: A" << std::endl;
} else if (score >= 80) {
std::cout << "評価: B" << std::endl;
} else if (score >= 70) {
std::cout << "評価: C" << std::endl;
} else {
std::cout << "評価: D" << std::endl;
}
return 0;
}
実行結果:
評価: C
score が 75 なので、
最初にマッチした条件(score >= 70)が実行されます。
複数の条件を組み合わせる
論理演算子(&&, ||, !)を組み合わせることで、 複雑な条件を表現できます。
AND (&&) を使う
両方の条件が true のとき実行:
int age = 25;
bool hasLicense = true;
if (age >= 20 && hasLicense) {
std::cout << "車を運転できます" << std::endl;
}
車を運転できます
OR (||) を使う
どちらか一つが true のとき実行:
int x = 5;
if (x < 0 || x > 10) {
std::cout << "範囲外です" << std::endl;
}
ネストされたif文
if文の中にさらにif文を入れることで、 より複雑な条件判定ができます。
int age = 25;
bool hasLicense = true;
if (age >= 18) {
std::cout << "成人です" << std::endl;
if (hasLicense) {
std::cout << "免許があります" << std::endl;
} else {
std::cout << "免許がありません" << std::endl;
}
}
成人です
免許があります
ポイント
- if文は条件が true のときだけ処理を実行
- else は条件が false のときに実行
- else if で複数の条件を判定
- 論理演算子(&&, ||)で条件を組み合わせる
- 括弧内の条件式は bool 値を返す
よくある誤り
誤り1: セミコロンを入れてしまう
if (age >= 18); // NG: セミコロンが入ってる
{
std::cout << "成人です" << std::endl;
}
// 上記では波括弧内は常に実行される
誤り2: = と == を混同
if (x = 10) { } // NG: 代入になってしまう
if (x == 10) { } // OK: 正しい比較
誤り3: 括弧を忘れる
if age >= 18 { // NG: 括弧が必要
// ...
}
if (age >= 18) { // OK
// ...
}
やってみよう
練習1: ユーザーから整数を1つ入力させ、それが正、負、ゼロのいずれかを判定して出力するプログラム。
練習2: 3つの数値を入力させ、最大値を出力するプログラム。
チャレンジ: うるう年の判定(4で割り切れる年はうるう年。ただし100で割り切れるときは100で割り切れるときは平年。ただし400で割り切れるときはうるう年)
ヒント
複数の else if を使って段階的に判定していきます。
まとめ
- if文で条件分岐を実現
- if-else, if-else if-else で複数の処理を制御
- 論理演算子で複雑な条件を表現
- 括弧と波括弧を正しく使う