第11章 条件分岐

 プログラムをただ垂れ流すだけでは何か物足りないですよね。いろいろと分岐してこそプログラムはその本領を発揮します。

 今回は条件分岐のうち if 文を説明します。ほかにも switch 文がありますが、それはもっと後に説明します。


 今回の要点は次の通りです。


 では、いってみましょう。


 前回、値を入力する方法を教えました。ですが、それに対する反応は「3で割ったときの余りは...」という一辺倒なものでした。なので、今回はもうちょっと違った種類の反応をしてみましょう。

 では、次のプログラムを見て下さい。

プログラム実行結果
// If1.cpp
#include <iostream.h>

void Birthmonth()
{
    int a;

    cout << "あなたは何月生まれですか > ";
    cin >> a;

    if(1 <= a && a <= 12)
    {
        cout << "へー、" << a
             << " 月なんですか。" << endl;
    }
    else
    {
        cout << a << " 月やと!?" << endl
             << "んな月、あらへんわ!" << endl;
    }
}

int main()
{
    Birthmonth();
    Birthmonth();
    return 0;
}
あなたは何月生まれですか > 2
へー、2 月なんですか。
あなたは何月生まれですか > 13
13 月やと!?
んな月、あらへんわ!

 今回のプログラムは、誕生月を入力し、とんでもない数字が入力されるとツッコミが入るというプログラムです。

 値の入れ物の変数は内部変数になっています。この変数は Birthmonth 内でしか使えないのでしたね。

 では、入力した後の処理を見てみましょう。

if(1 <= a && a <= 12)
{
    cout << "へー、" << a
         << " 月なんですか。" << endl;
}
else
{
    cout << a << " 月やと!?" << endl
         << "んな月、あらへんわ!" << endl;
}

 どうやらこの部分で条件分岐を行っているようです。この部分を大雑把に見ると、

if(<条件>){ <実行文1> }
else{ <実行文2> }

となります。if の次のカッコにかかれた <条件> を満たすと <実行文1> が、満たされないと else の次の <実行文2> が実行されます。実行文が1文しかない場合は、普通 { } を書く必要はありません。

 また、else 文はなくても良いなら、なくても構いません

 ここでは a が 1 から 12 のどれかなら普通の反応をし、それ以外の時はツッコミを入れればよいことになります。


 では、<条件> つまり条件式はどのように表記すればよいのでしょうか?

if(1 <= a && a <= 12)

 <= は≦の事です。=< とはできません。そして、&& は「且(か)つ」の事です。つまり、これは「a が 1 以上 かつ 12 以下の場合...」となります。

 こういった演算子の一覧を以下に示します。

演算子意味
比較
== 等しいとき
!= 異なるとき
> 左辺が右辺より大きいとき
< 左辺が右辺より小さいとき
>= 左辺が右辺以上の時
<= 左辺が右辺以下の時
条件の結合
&& 且(か)つ
|| または
! 〜でない

 「等しいとき」は == です。= は代入演算子なので、それと区別をするために2つ重ねます。= と == は間違いやすいので注意して下さい。

 またはの | は、Shift + \ で表示します。

 ! の「〜でない」というのは、たとえば

if(!(a < 5))...

のように使い、この場合は「a が 5 より小さくないとき」になります。



 また、条件式が満たされる状態を、満たされない状態をと言います。


 今回はこれで終わりですが、以上を踏まえて何かプログラムを自分で組んでみて下さい。いろいろと実験することで わかってくることもあるでしょう。

 では、今回の要点です。


 では、次回まで。さようなら。


第10章 値の入力 | 第12章 もっと条件分岐

Last update was done on 1999.3.15

この講座の著作権はロベールが保有しています