第74章 もっとロジカルに

 「関数は成功しましたか?」「0です」「今度はどうですか?」「1です」「ええい! よーわからんのや!」「では、true でどうでしょうか?」「おお、よく分かる」というお話です(謎)。


 では、今回の要点です。


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


 さて、ある関数があります。その関数が成功したか失敗したかを返すとします。こういうとき、あなたならどうしますか?

 簡単に考えれば「戻り値を0か1かにしてそれを条件にして判定する」という方法が思いつくでしょう。この考えはごくごく普通の考え方ですが、なんか0と1というのはダサいですね。

 そこで、C++にはたった2つの値しかとれないような型が存在します。それが論理型 bool です。第21章でちらと表に出てきたのを覚えている人はいるでしょうか?

 bool 型のとれる値は2つです。それは true と false です。「真」と「偽」ですね。

 これを if 文に入れてみるとどうなるのでしょうか? 両方真になったり、両方偽になったりするでしょうか? まさかそんなアホなことは起こりません。true は真、false は偽と判定されます。

 また、条件文は0か1の数値として使えるのでした。ということで、true は1、false は0の数値として使えます

 うーん。bool についてはこれ以上話すことはないですね。(^ ^; では、例でも1つ書いて今回はもう終わりにしましょう。

 そうですね。第64章の Input 関数の戻り値を bool 型にするといいでしょうね。ついでに、第44章で紹介した絶対値を求める関数 abs と fabs 、また、インライン関数も使って、豪華に仕立ててあげましょう。することありませんし。

プログラム
// Ovload1b.cpp
#include <iostream.h>
#include <math.h>

// 絶対値を求める
// abs で扱う数の型は int なので、int にしました
inline int Abs(int a)
{
    return abs(a);
}

inline double Abs(double a)
{
    return fabs(a);
}

// 入力
bool Input(int& nInt, double& nDouble)
{
    cout << "整数値を入力して下さい > " << flush;
    cin >> nInt;
    if(nInt == 1)
        return false;

    cout << "小数値を入力して下さい > " << flush;
    cin >> nDouble;
    return true;
}

// 絶対値の表示
void DispAbs(int nInt, double nDouble)
{
    cout << nInt    << " の絶対値は " << Abs(nInt)    << "で、" << endl
         << nDouble << " の絶対値は " << Abs(nDouble) << "です。" << endl;
}

int main()
{
    int    nInt;
    double nDouble;

    while(Input(nInt, nDouble))
        DispAbs(nInt, nDouble);

    return 0;
}
実行結果例
整数値を入力して下さい > -126
小数値を入力して下さい > 0.23
-126 の絶対値は 126 で、
0.23 の絶対値は 0.23 です。
整数値を入力して下さい > 319
小数値を入力して下さい > -0.2
319 の絶対値は 319 で、
-0.2 の絶対値は 0.2 です。
整数値を入力して下さい > 1

 while の条件に直接 Input 関数を渡しています。true を返したときはループを続け、false を返したときはループを終わるわけです。実際動作させてみても、そうなっていることがわかります。


 今回は非常に楽でした。この内容なら、もっと早くやってもよかったですね。

 では、今回の要点です。


 それでは、次回まで。


第73章 借りたら返す3 | 第75章 乱数

Last update was done on 2000.8.29

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