第12章 もっと条件分岐

 前回条件分岐の話をしました。今回はもうちょっとその話の続きをしたいと思います。2つの例をもとに if 文の使い方を考えてみましょう。


 では、今回の要点です。


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


 if は条件分岐に使いますが、これを詳しく言うと「変数や関数の戻り値などがある値をとったときの処理を決める」となります。

 では、2つの値を入力してその割り算をし、商と余りを表示するプログラムを作るとしましょう。

 このとき、特別な処理をする必要があります。そうです。2番目の値に0を入れられたときの処理を決めてやる必要があります。そのまま割り算をしてしまうとエラーが出てしまいます。

 そこで、2番目の値に0が入力されたときには、「0では割れません!」という警告を出すことにします。

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

void Divide()
{
    int a, b;

    cout << "1番目の値を入力してください > ";
    cin >> a;

    cout << "2番目の値を入力してください > ";
    cin >> b;

    if(b == 0)
    {
        cout << "0では割れません!" << endl;
    }
    else
    {
        cout << a << " / " << b << " = "
             << a / b << " ... " << a % b << endl;
    }
    return;
}

int main()
{
    Divide();
    Divide();
    return 0;
}
1番目の値を入力してください > 15
2番目の値を入力してください > 4
15 / 4 = 3 ... 3
1番目の値を入力してください > 5
2番目の値を入力してください > 0
0では割れません!

 条件文には関数を含むことも可能です。では、西暦年号を昭和元号に変換する関数を例に考えてみましょう。

 昭和は1926年から1989年の64年間使われた元号です。つまり、西暦年号から1925を引けば昭和元号になります。

 ですが、1999年は昭和ではありませんし、1800年なんかも昭和ではありません。ただ1925を引けばよいというものではありません。

 そこで、引数が上の範囲内の時は1925を引いた値を返し、範囲外の時は0を返すことにします。

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

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

int ChangeToShohwa(int a)
{
    if(1926 <= a && a <= 1989)
        return a - 1925;
    else
        return 0;
}

void Shohwa()
{
    int a;

    cout << "西暦を入力して下さい > ";
    cin >> a;

    if(ChangeToSyohwa(a) == 0)
        cout << "その年は昭和ではありません。" << endl;
    else
        cout << "その年は昭和 " << ChangeToShohwa(a)
             << " 年です。" << endl;
}

int main()
{
    Shohwa();
    Shohwa();
    return 0;
}
西暦を入力して下さい > 1979
その年は昭和 54 年です。
西暦を入力して下さい > 1999
その年は昭和ではありません。

 入力した西暦が昭和時代のものでないときは0が返されます。そこで、

if(ChangeToShohwa(a) == 0) ...

として、昭和でないときの処理をし、

else ...

で、昭和のときの処理を行いました。

 このプログラムでは if と else の後の文を { } で囲っていませんが、1文なら囲まなくて良いと前に言いましたね。ちなみに文というのはセミコロンで終わるようなものでした。


 今回は具体例を元に if 文の使い方をもう一度話してみました。どうでしょう。if の使い方が大体分かってきたでしょうか?

 では、今回の要点です。


 また次回まで。さようなら。


第11章 条件分岐 | 第13章 さらに条件分岐

Last update was done on 1999.2.27

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