C#のif文、論理演算子(and/or/not)とは?論理演算子(and/or/not)を記述する方法
- システム
エンジニア - 論理演算子には記述順位が存在するのでしょうか?
- プロジェクト
マネージャー - まずは論理演算子と実際の記述方法を見ながら理解を深めていきましょう。
C#のif文、論理演算子(and/or/not)とは?
今回は、C#のif文と論理演算子(and/or/not)について紹介します。
プログラムを作成する時、「~の場合、~しなさい。ただし~の場合 かつ ~の場合、~しなさい。」というように、条件に応じて処理を分岐したい場面は多いでしょう。C#ではif文が「~の場合、~しなさい。」の役割を、論理演算子(and/or/not)が「かつ」、「または」、「否定」の役割を果たします。
シンプルな構文ですが、if文と論理演算子(and/or/not)をマスターすることで分岐処理を自在に記述でき、作成できるプログラムの幅が広がるため、この記事を読んでマスターしてみましょう。
if文を記述する方法
「~の場合、~しなさい。」の役割を果たすif文の記述について説明します。
C#では次のようにif文を記述します。
1
2
3
4
5
|
if (条件式) {
処理内容
}
|
条件式には、結果がtrueまたはfalseになる式を記述します。処理内容には、if条件でtrueになった時に処理したい内容を記述します。
変数が偶数の場合に値をコンソール表示する、if文を使ったサンプルプログラムです。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int num = 2;
if (num % 2 == 0) {
Console.WriteLine(""{0}は偶数です"", num);
}
num = 7;
if (num % 2 == 0) {
Console.WriteLine(""{0}は偶数です"", num);
}
|
実行結果は次のようになります。
2は偶数です
条件式に当たる偶数、奇数の判定は、2で割った余りが0になるか否かで行いました。変数のうち2は偶数のため、条件式にてtrueと判定され、値がコンソール表示されています。一方で、7は奇数のため条件式にてfalseと判定され、コンソール表示がされていません。
偶数をコンソール表示するサンプルプログラムですが、変数が奇数の場合に、奇数であることを表示させたい時を考えてみます。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int num = 2;
// 偶数表示
if (num % 2 == 0) {
Console.WriteLine(""{0}は偶数です"", num);
}
// 奇数表示
if (num % 2 != 0) {
Console.WriteLine(""{0}は奇数です"", num);
}
|
上記の記述でも実現できますが、いかんせん無駄が多くなってしまいます。
そこでelseを使いましょう。「~の場合、~しなさい。それ以外の場合、~しなさい。」と記述する場合は、if~elseを使うことができます。
1
2
3
4
5
6
7
|
if (条件式) {
処理内容
} else {
処理内容
}
|
また、else ifを使用することで、「~の場合、~しなさい。それ以外~の場合、~しなさい。」のように、複数の分岐を記述することができます。
1
2
3
4
5
6
7
8
9
|
if (条件式1) {
処理内容
} else if (条件式2) {
処理内容
} else if (条件式N) {
処理内容
}
|
偶数と奇数のコンソール表示プログラムを、if~else、if~else ifを使って表現してみます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
int num = 2;
// elseで表現
if (num % 2 == 0) {
// 偶数表示
Console.WriteLine(""{0}は偶数です"", num);
} else {
// 奇数表示
Console.WriteLine(""{0}は奇数です"", num);
}
// else ifで表現
if (num % 2 == 0) {
// 偶数表示
Console.WriteLine(""{0}は偶数です"", num);
} else if (num % 2 == 1) {
// 奇数表示
Console.WriteLine(""{0}は奇数です"", num);
}
|
if~else、if~else ifを適切に使うことでソースの可読性が上がるため、分岐処理を記述する場合はif~else、if~else ifを使ってみましょう。
論理演算子(and/or/not)の書き方
C#のif文について説明しました。「~の場合、~しなさい。それ以外の場合、~しなさい。」をC#で実現したい場合、if~else、if~else ifで実現できます。
しかし、「~かつ~の場合、~しなさい。~または~の場合、~しなさい。~以外の場合、~しなさい」と表現したい場合もあるでしょう。
冒頭でも紹介しましたが、「かつ」、「または」、「否定(~以外の場合)」を実現したい時に、論理演算子を使います。
C#では次のように論理演算子を記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// かつ(and)の記述
if (条件式1 && 条件式2) {
処理内容
}
// または(or)の記述
if (条件式1 || 条件式2) {
処理内容
}
// 否定(not)の記述
if (!条件式1) {
処理内容
}
|
「かつ(and)」を実現したい場合は「&&」を、「または(or)」を実現したい場合は「||」を、「否定(not)」を実現したい場合は条件式の前方に「!」を付けます。
次のサンプルプログラムは、二つの変数について偶数、奇数の判断をコンソール表示させるプログラムですが、論理演算子を使ってみました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
int num1 = 2;
int num2 = 3;
// 変数1、変数2がともに偶数の場合(and)
if (num1 % 2 == 0 && num2 % 2 == 0) {
Console.WriteLine(""{0}と{1}は偶数です"", num1, num2);
}
// 変数1、変数2のいずれか偶数の場合(or)
if (num1 % 2 == 0 || num2 % 2 == 0) {
Console.WriteLine(""{0}と{1}のいずれかは偶数です"", num1, num2);
}
// 変数1、変数2がともに奇数の場合(not)
if (!(num1 % 2 == 0 || num2 % 2 == 0)) {
Console.WriteLine(""{0}と{1}は奇数です"", num1, num2);
}
|
実行結果は次のようになります。
2と3のいずれかは偶数です
ともに偶数という判定に「&&」を、いずれか偶数という判定に「||」を使用しました。また、変数1と変数2がともに奇数である判定に、否定演算子「!」を使用しました。「ともに奇数」は「いずれか偶数」の否定であるためです。もちろん「偶数以外 かつ 偶数以外」でも実現できます。
1
2
3
4
5
6
|
// 変数1、変数2がともに奇数の場合
if (!num1 % 2 == 0 && !num2 % 2 == 0) {
Console.WriteLine(""{0}と(1)は奇数です"", num1, num2);
}
|
bool型について、否定演算子を使用することで、
1
2
3
4
5
6
7
8
9
10
11
12
13
|
bool evenFlg = false;
// 否定演算子を使わない
if (evenFlg == false) {
Console.WriteLine(""奇数です"");
}
// 否定演算子を使う
if (!evenFlg) {
Console.WriteLine(""奇数です"");
}
|
すっきりとコーディングできますので、要所で否定演算子を使えるようにしましょう。
if文と論理演算子を組み合わせる
ここまでC#のif文と論理演算子について紹介しましたが、if文と論理演算子を組み合わせることで、プログラムの処理分岐を自在に実現することができます。
以下、二つの変数が奇数と偶数であるかのコンソール表示プログラムを、if文と論理演算子を駆使して記述してみました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
int num1 = 2;
int num2 = 3;
// コンソール表示
if (num1 % 2 == 0 && num2 % 2 == 0) {
// 変数1、変数2がともに偶数の場合(and)
Console.WriteLine(""{0}と{1}は偶数です"", num1, num2);
} else if (!(num1 % 2 == 1 && num2 % 2 == 1)) {
// 変数1、変数2がいずれか偶数の場合
// 変数1、変数2がともに奇数の否定で実現(andの否定)
// 上の分岐を通るため、変数1、変数2がともに偶数の可能性はない
Console.WriteLine(""{0}と{1}のどちらかは偶数です"", num1, num2);
} else {
// 変数1、変数2がともに奇数の場合
// 「ともに偶数」「いずれか偶数」以外の分岐で実現
Console.WriteLine(""{0}と{1}は奇数です"", num1, num2);
}
|
実行結果は次のようになります。
2と3のどちらかは偶数です
分岐が増えると処理が複雑になるため、サンプルのように適宜コメントを記述し、誰が見ても処理が理解できるように心がけましょう。
- システム
エンジニア - if分と組み合わせることでよりわかりやすい記述ができるということですね。
- プロジェクト
マネージャー - 優先するべき順位をif分を使って、誰もがわかりやすく記述することができます。
C#でif文、論理演算子(and/or/not)を使って分岐処理を実現しよう!
いかがだったでしょうか。
C#ではif文と論理演算子(and/or/not)を使って分岐処理を実現できます。使う頻度の高い構文になりますので、ぜひマスターし、思い通りのプログラムを作成してみましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)