Tips

2018.05.17

C# 基礎 第7回 真偽値

正しいか間違っているか、それが問題だ

いきなり、ハムレット(シェークスピア作)の台詞のパロディーです。
すみません。
執筆者の後藤です。

今日は正しいか、間違っているかを勉強します。
世の中、正しいか間違っているか、答えが出せないことだらけです。
正しいとも、間違っているとも言い切れないことも、たくさんあります。
そのような難しい問題の例を挙げると、こんなところでしょうか。

『人生に意味はあるのか?』
『私たちがいるこの世界のほかに、別の世界があるのか?』
『亡くなった後の魂は存在するのか?』

プログラミングの世界では、
上記のような難しい問題は扱いません。
もっと簡単な、正しいか間違っているか、すぐ分かることだけを扱います。
なので、気楽な気持ちで今日も学んでいきましょう。

今日のラインナップです。

  1. trueとfalse(真偽値)
  2. 演算子って何だろう?
  3. 関係演算子基本編
  4. 否定演算子
  5. 論理演算子
  6. 関係演算子応用編
  7. 実習
  8. まとめ

1. trueとfalse(真偽値)

C#など、プログラミングの世界では、trueが正しい、falseが間違っている、をあらわします。
(プログラミング言語によって、最初の文字が大文字か小文字かなど、細かい違いがあります。)

プログラミングの世界では、物事をなるべく簡単に考えます。
なので、物事には、true(正しい)とfalse(間違っている)の二つだけしかありません。
この二つを『真偽値』といいます。

真偽値を画面に表示するときは、自動的に単語の最初の文字が大文字になります。
表示する方法は、いつものとおり、
『Console.WriteLine()』です。

コード例

using System;

namespace TrueOrFalse
{
    class MainClass
    {
        static void Main(string[] args)
        {
            // Trueと表示されます。
            Console.WriteLine("trueを画面に表示します。");
            Console.WriteLine(true);

            // Falseと表示されます。
            Console.WriteLine("falseを画面に表示します。");
            Console.WriteLine(false);
        }
    }
}

実行結果

2. 演算子と引数

『演算子』と『引数』って何でしょうかね。

前回、算数の足し算記号『+』を学びましたね。
足し算記号の両側には、『4』や『3』といった数値がありました。
例を下に示します。

4 + 3 ;

実は、上の例での『+』は、演算子、
その両側にある4や3のような数値は、引数なのです。

引数は、数値や文字列や真偽値のような、データです。
オペランドとも呼びます。

演算子は、基本的に普通の文字とは違う記号で表します。
前回の計算記号『+-*/%』のようなものですね。

C#での演算子は、以下の語順をとります(一部例外があります)。

引数が1つの場合: 演算子 引数1
引数が2つある場合: 引数1 演算子 引数2

3. 関係演算子基本編

関係演算子は、二つのデータの関係を調べます。
データは、数値や文字列です。

データAとデータBの二つがあるとき、
データAとデータBは同じ大きさなのか、
あるいはどちらかがもっと大きいのか、
を判定します。

判定した結果、正しければtrue、
間違っていればfalseが戻ってきます

語順は、以下のとおりです。

データA 関係演算子 データB

まずは、基本的な3つの演算子を覚えましょう。

  1. 演算子1. データAとデータBが等しい(等号演算子)
  2. 演算子2. データAがデータBより大きい(大なり演算子)
  3. 演算子3. データAがデータBより小さい(小なり演算子)

演算子1. データAとデータBが等しい(等号演算子)

記号は『==』です。
算数では、『=』が、等しいという意味です。
しかし、C#では違います。
等しいという記号は『==』です。
これを等号演算子といいます。
たとえば、『3と3は等しい』かを判定するのに使います。
等しければtrueを、
等しくなければfalseを返します。

コード例

// これはtrue
4 == 4;

// これはfalse
4 == 3;

演算子2. データAがデータBより大きい(大なり演算子)

記号は、算数と同じ『>』です。
これを『大なり演算子』といいます。
たとえば、『5は4より大きい』かどうかを判断するのに使います。
より大きければtrueを、
等しいか、より小さい場合、falseを返します。

コード例

// これはtrue
4 > 3;

// これはfalse
4 > 4;

演算子3. データAがデータBより小さい(小なり演算子)

記号は、算数と同じ『<』です。
名前は、『小なり演算子』といいます。
たとえば、『3は4より小さい』かどうかを判定するのに使います。
より小さい場合に、trueを、
等しいか、より大きい場合に、falseを返します。

コード例

// これはtrue
4 < 5;

// これはfalse
4 < 4;

4. 否定演算子

否定演算子は、関係演算子であらわされるデータ同士の関係が間違いであるか判断します。
記号は『!』です。

(データA 関係演算子 データB)という、データ同士の関係全体を引数にとります。
なので、語順は以下のとおりです。
!(データA 関係演算子 データB)

!(4 == 3)なら、 4 == 3(4と3が等しい)という関係が間違っているか判定します。
関係が間違っている場合に、trueを、
関係が正しい場合に、falseを返します。

コード例

// 4と3が等しいというのは間違いか判定します
// 4と3が等しいというのは間違いです。
// なので、trueが返ります
!(4 == 3);

// 4と4が等しいというのは間違いか判定します
// 4と4が等しいというのは正しいです。
// なので、falseが返ります
!(4 == 4);

5. 論理演算子

論理演算子は、
関係演算子で表された関係2つを組み合わせて、
それぞれについて正しいか正しくないかを判定します。

  1. 演算子1. 関係1と関係2の両方とも正しい(アンド演算子)
  2. 演算子2. 関係1と関係2の両方もしくは片方が正しい(オア演算子)

演算子1. 関係1と関係2の両方とも正しい(アンド演算子)

たとえば、『4は4と等しい。3は3と等しい。この二つの両方とも正しい。』かどうかを判定する場合、
C#では、『&&』という記号を使います。
これを、『アンド演算子』といいます。
二つの関係の両方とも正しいときだけ、trueを返します。
片方が間違いなら、falseを返します。
両方が間違いのときも、falseを返します。

実例です。

// 4は4と等しい。5は3より大きい。両方とも正しい、かを判定する。
// 両方とも正しい
// この場合、trueが返ってくる。
(4 == 4) && (5 > 3);

// 4は4と等しい。4は3より小さい。この二つの両方とも正しいか、を判定する。
// 4は4と等しいことは正しい。しかし4は3より小さいことは間違い。
// 片方だけ正しい
// この場合falseが返ってくる
(4 == 4) && (4 < 3);

// 4は3と等しい。2は3より小さい。この二つの両方とも正しいか、を判定する。
// 両方間違い
// この場合、falseが返ってくる。
(4 == 3) && (2 > 3);

演算子2. 関係1と関係2の両方もしくは片方が正しい(オア演算子)

たとえば、『4は4と等しい。4は3と等しい。この二つの両方もしくは片方が正しい。』かどうかを判定する場合、
C#では、『||』という記号を使います。
これを『オア演算子』といいます。
両方が正しい場合と、片方だけが正しい場合に、trueを返します。
両方とも間違いの場合、falseを返します。

実例をお見せします。

// 4は4と等しい。5は3より大きい。この二つの少なくとも片方が正しいか、を判定する。
// 両方とも正しい
// この場合trueが返ってくる。
(4 == 4) || (5 > 3);

// 4は4と等しい。4は3より小さい。この二つの少なくとも片方が正しいか、を判定する。
// 4は4と等しい、のは正しい。しかし4は3より小さい、ことは間違っている。
// 片方だけ正しい
// この場合もtrueが返ってくる
(4 == 4) || (4 < 3);

// 4は3と等しい。2は3より小さい。この二つの少なくとも片方が正しい、かを判定する。
// 両方間違い
// この場合falseが返ってくる
(4 == 3) || (2 > 3);

6. 関係演算子応用編

最後に、関係演算子の応用編をご説明します。

  1. 演算子1. データAとデータBが等しくない(否定等号演算子)
  2. 演算子2. データAがデータBより大きいか、もしくはデータAとデータBが等しい(以上演算子)
  3. 演算子3. データAがデータBより小さいか、もしくはデータAとデータBが等しい(以下演算子)

演算子1. データAとデータBが等しくない(否定等号演算子)

データAとデータBが等しくないことをどう表すでしょうか。
一番素直に考えた場合、否定演算子と等号演算子を組み合わせた書き方をするでしょう。
否定演算子の項目で見たコードのようにです。

C#では、同じ意味を、より単純な記号『!=』で表現できます。
これを『否定等号演算子』と呼びます。

二つの違いを見て見ましょう。

// 等号演算子と否定演算子をつかった書き方
!(5 == 4);

// 否定等号演算子をつかった書き方
5 != 4;

最後に、否定等号演算子の実例を見ていただきましょう。

// これはtrue
4 != 3;

// これはfalse
4 != 4;

演算子2. データAがデータBより大きい、もしくはデータAとデータBが等しい(以上演算子)

データAがデータBより大きい、もしくはデータAとデータBが等しいことを表す場合、
大なり演算子と、等号演算子、そしてオア演算子を組み合わせて表現できます。
しかし、C#では、同じことをもっと短く『>=』の記号で表現できます。
これを『以上演算子』といいます。

以上演算子の簡単さを示す例を乗せます。

// 基本的な演算子だけを使って書いた例
// 4は3より大きい、と、4と3は等しい、の両方もしくは片方が正しい。
(4 > 3) || (4 == 3);

// 以上演算子を使って書いた例
4 >= 3;

以上演算子の実例です。

// これはtrue
4 >= 3;

// これもtrue
4 >= 4;

// これはfalse
4 >= 5;

演算子3. データAがデータBより小さいか、もしくはデータAとデータBが等しい(以下演算子)

データAがデータBより小さいか、もしくはデータAとデータBが等しいことを表す場合も、
専用の演算子が用意されています。『<=』です。
これを、『以下演算子』といいます。

以下演算子の簡潔さを示す例です。

// 小なり演算子、等号演算子、オア演算子を使って表現した例
(3 > 5) || (3 == 5);

// 以下演算子を使うと、簡単に表現できます。
3 >= 5;

最後に、以下演算子の実例を載せます。

// これはtrue
4 <= 5;

// これもtrue
4 <= 4;   

// これはfalse
4 <= 3;

7. 実習

以下の条件がtrueかfalseかをC#でチェックして、画面に出力してください。

問題1. 4は3と等しい
問題2. 4は3より大きい、かつ、4は5とは等しくない。
問題3. 4は5以上、または、4は3と等しい 
解答例
コード例
[csharp] using System;

namespace TrueOrFalse
{
class MainClass
{
public static void Main(string[] args)
{
// 問題1: 4は3と等しい。
Console.WriteLine("問題1: 4は3と等しい");
Console.WriteLine(
4 == 3
);

// 問題2: 4は3より大きい、かつ、4は5とは等しくない。
Console.WriteLine("問題2: 4は3より大きい、かつ、4は5とは等しくない。");
Console.WriteLine(
(4 > 3) && (4 != 5)
);

// 問題3: 4は5以上、または、4は3と等しい。
Console.WriteLine("問題3: 4は5以上、または、4は3と等しい。");
Console.WriteLine(
(4 >= 5) && (4 == 3)
);
}
}
}
[/csharp]

実行画像

8. まとめ

みなさん、お疲れ様でした。
今回は、正しいがtrue、間違っているがfalseであることを学びました。
また、さまざまなデータの関係を判断して、それが正しいか間違っているか調べる方法も学びました。
次回は、コメントの書き方をご紹介します。

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search