C#の条件式をベン図で理解しよう

広告

今回は、C#の if 文に出てくる条件式を、ベン図のイメージで考えてみます。

扱うコードは次のものです。

using System;

namespace List4_6
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var month = 6;

            if (1 <= month && month <= 12)
            {
                Console.WriteLine("1以上、12 以下の数値です");
            }
        }
    }
}

このプログラムでは、month という変数に 6 が入っています。

var month = 6;

そして、次の条件を満たすかどうかを調べています。

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

条件式の意味

この条件式は、次の2つの条件に分けて考えることができます。

1 <= month

これは、

month は 1以上である

という意味です。

もう1つは、

month <= 12

です。

これは、

month は 12以下である

という意味です。

つまり、全体としては、

month は 1以上で、しかも 12以下である

という条件になります。

&& は「かつ」という意味

C#の && は、論理演算子の1つです。

読み方は「アンド」です。

意味は、

左の条件も正しい
かつ
右の条件も正しい

です。

今回の条件式では、次のようになります。

1 <= month && month <= 12

これは、

month が 1以上
かつ
month が 12以下

という意味です。

つまり、両方の条件を同時に満たしたときだけ、if 文の中が実行されます。

ベン図で考える

ここで、ベン図を使って考えてみましょう。

左の円を、

1 <= month

つまり、

month が 1以上の数

の集まりとします。

右の円を、

month <= 12

つまり、

month が 12以下の数

の集まりとします。

この2つの円が重なっている部分が、

1以上 かつ 12以下

の範囲です。

つまり、

1 ~ 12

の数です。

整数で考えると、

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

が当てはまります。

今回の month は 6

今回のコードでは、month に 6 が入っています。

var month = 6;

6 は、1以上です。

6 は 1以上

また、6 は 12以下でもあります。

6 は 12以下

つまり、両方の条件を満たしています。

1 <= month && month <= 12

は、今回の場合、

1 <= 6 && 6 <= 12

として考えることができます。

これは、

正しい && 正しい

なので、全体としても正しい条件になります。

そのため、if 文の中が実行されます。

実行結果

このプログラムを実行すると、次のように表示されます。

1以上、12 以下の数値です

これは、month に入っている 6 が、1から12までの範囲に入っているからです。

なぜ月の判定に使えるのか

1年の月は、1月から12月までです。

そのため、月として正しい数値かどうかを調べたいときは、

1 <= month && month <= 12

のように書くことができます。

例えば、

month = 1
month = 6
month = 12

は、すべて正しい月です。

一方で、

month = 0
month = 13
month = -1

は、月としては正しくありません。

0の場合を考えてみる

もし、次のように書いたとします。

var month = 0;

この場合、条件式は次のように考えられます。

1 <= 0 && 0 <= 12

0 は12以下ではあります。

しかし、1以上ではありません。

つまり、

正しくない && 正しい

になります。

&& は、両方が正しいときだけ全体が正しくなります。

そのため、この場合は if 文の中は実行されません。

13の場合を考えてみる

今度は、次のように書いた場合を考えます。

var month = 13;

この場合、条件式は次のようになります。

1 <= 13 && 13 <= 12

13 は1以上です。

しかし、12以下ではありません。

つまり、

正しい && 正しくない

になります。

この場合も、両方の条件を満たしていないので、if 文の中は実行されません。

ベン図で見ると「共通部分」

&& は、ベン図で考えると「共通部分」です。

今回の条件では、

1以上の数

という集まりと、

12以下の数

という集まりがあります。

この2つの条件を両方満たす場所が、ベン図の重なった部分です。

つまり、

1以上 かつ 12以下

の範囲です。

この範囲が、

1 ~ 12

になります。

数学の書き方に似ている

今回のC#の条件式は、数学の書き方に近い形をしています。

1 <= month && month <= 12

これは、数学で書くと、

1 ≦ month ≦ 12

のような意味です。

ただし、C#では数学のように次の形では書けません。

1 <= month <= 12

これはC#では正しい書き方ではありません。

C#では、条件を2つに分けて、&& でつなぎます。

1 <= month && month <= 12

この書き方を覚えておきましょう。

まとめ

今回のコードでは、month が1以上12以下かどうかを調べています。

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

この条件式は、次の2つの条件を表しています。

month が 1以上
month が 12以下

そして、&& は「かつ」という意味です。

そのため、両方の条件を満たしたときだけ、if 文の中が実行されます。

今回の month は 6 なので、1以上であり、12以下でもあります。

したがって、条件を満たし、次の文字が表示されます。

1以上、12 以下の数値です

&& は、ベン図で考えると「2つの条件の共通部分」です。

今回の場合は、

1以上の数
かつ
12以下の数

なので、共通部分は、

1 ~ 12

になります。

条件式が難しく見えるときは、1つずつ条件を分けて考えると理解しやすくなります。

訪問数 2 回, 今日の訪問数 2回

広告

C#

Posted by hidepon