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つずつ条件を分けて考えると理解しやすくなります。









ディスカッション
コメント一覧
まだ、コメントがありません