第5回 値によって処理を変える条件分岐
はじめに
前回は、演算子を使用して値の計算を行う方法について学びました。
しかし、プログラムは常に同じ処理を行うだけではありません。
例えば、
- テストの点数が60点以上なら「合格」と表示する
- パスワードが正しければログインする
- プレイヤーの体力が0になったらゲームオーバーにする
このように、条件によって実行する処理を変えることができます。
この仕組みを条件分岐といいます。
今回の到達目標
- 条件分岐とは何かを説明できる。
- 比較演算子を使用できる。
if文を使用して条件分岐ができる。else、else ifを使用して複数の処理を記述できる。
条件分岐とは
条件分岐とは、条件によって実行する処理を切り替える仕組みです。
例えば、ゲームでプレイヤーの体力を管理する場面を考えてみましょう。
体力が1以上
↓
ゲームを続ける
体力が0以下
↓
ゲームオーバー
体力の値によって、実行する処理が変わっています。
このような処理を実現するために、C++ではif文を使用します。
比較演算子
条件分岐では、「値を比較する」ことがよくあります。
値を比較するために使用する演算子を比較演算子といいます。
演算子
意味
例
==
等しい
a == b
!=
等しくない
a != b
>
より大きい
a > b
<
より小さい
a < b
>=
以上
a >= b
<=
以下
a <= b
比較を行うと、その結果は
- 条件を満たす
- 条件を満たさない
のどちらかになります。
C++では、この結果を**bool型**で表します。
true:条件を満たすfalse:条件を満たさない
例えば、
80 >= 60
という比較は条件を満たしているため、結果はtrueになります。
一方、
40 >= 60
は条件を満たしていないため、結果はfalseになります。
if文
条件分岐を行うには、if文を使用します。
基本的な書き方は次のようになります。
if (条件)
{
実行する処理
}
条件がtrueであれば、中に書かれた処理が実行されます。
例えば、テストの点数が60点以上なら「合格」と表示するプログラムは次のようになります。
#include <iostream>
int main()
{
int score = 80;
if (score >= 60)
{
std::cout << "合格です。";
}
}
実行結果
合格です。
一方、
int score = 40;
とすると、条件を満たさないため、何も表示されません。
ブロック
if文では、
{
}
で囲まれた部分をブロックといいます。
条件がtrueになった場合、このブロックの中に書かれた処理が順番に実行されます。
if (score >= 60)
{
std::cout << "合格です。" << std::endl;
std::cout << "おめでとうございます。";
}
このように、複数の処理をまとめて実行できます。
else文
条件を満たさなかった場合の処理を書きたいときは、elseを使用します。
#include <iostream>
int main()
{
int score = 40;
if (score >= 60)
{
std::cout << "合格です。";
}
else
{
std::cout << "不合格です。";
}
}
実行結果
不合格です。
elseは、「それ以外の場合」を表します。
else if文
条件が複数ある場合は、else ifを使用します。
例えば、点数によって成績を表示するプログラムを考えてみましょう。
#include <iostream>
int main()
{
int score = 85;
if (score >= 90)
{
std::cout << "評価はAです。";
}
else if (score >= 80)
{
std::cout << "評価はBです。";
}
else if (score >= 70)
{
std::cout << "評価はCです。";
}
else if (score >= 60)
{
std::cout << "評価はDです。";
}
else
{
std::cout << "評価はFです。";
}
}
条件は上から順番に判定され、最初にtrueとなった処理だけが実行されます。
比較演算子と代入演算子の違い
初心者が最も間違えやすいのが、
=
と
==
の違いです。
=は、第4回で学習した代入演算子です。
一方、==は値が等しいかどうかを調べる比較演算子です。
例えば、
score = 60;
は、「60を代入する」という意味です。
一方、
score == 60
は、「scoreが60と等しいかを調べる」という意味になります。
この2つは役割がまったく異なるため、混同しないよう注意しましょう。
条件を組み合わせる演算子
条件は組み合わせることもできます。
例えば、
- 点数が60点以上
- 出席率が80%以上
の両方を満たした場合だけ合格にしたいことがあります。
このような場合には、条件を組み合わせるための演算子を使用します。
if (score >= 60 && attendance >= 80)
{
std::cout << "合格です。";
}
今回は「条件を組み合わせることもできる」ということだけ覚えておきましょう。
詳しい使い方については、今後の講座で必要になったときに改めて説明します。
まとめ
今回は、条件によって処理を切り替える条件分岐について学びました。
- 条件分岐は、条件によって実行する処理を変える仕組みです。
- 値を比較するには比較演算子を使用します。
- 比較した結果は
trueまたはfalseになります。 if文を使用すると、条件を満たした場合だけ処理を実行できます。elseやelse ifを使用すると、複数の条件に応じた処理を記述できます。=と==は意味が異なるため、使い分けに注意しましょう。
次回は、同じ処理を何度も繰り返し実行するための反復処理について学びます。