はじめに
プログラムの流れは「上から順番に処理を行う」「条件で処理を分岐する」「繰り返し処理を行う」の3つがあります。
今回は、「条件で処理を分岐する」ために欠かせないif文について説明します。
制御構文
冒頭でも述べた通り、プログラムの流れは以下のように大きく3つがあります。
- 順次(逐次)処理:上から順番に実行する
- 分岐(選択)処理:条件で処理を分岐させて実行する
- 反復(繰り返し)処理:処理を繰り返し実行する
これら3つを組み合わせてプログラムを作成する方法を構造化プログラミングといいます。
C#, VB.NET, Java, Swiftなど多くのプログラミング言語は構造化プログラミングのための構文が提供されています。
中でも分岐処理と反復処理は制御構文に分類されます。
制御構文には以下のようなものがあります。
C#における分岐処理の制御構文
- if文(今回の学習対象)
- switch文
C#における反復処理の制御構文
- for文
- foreach文
- while文
- do〜while文
if文の基本
if文を使用すると、条件が成り立った場合と成り立たなかった場合に分けて処理を書くことができます。基本的な構文を以下に示します。
構文:C#におけるif文
if (条件式) { 条件式が成り立った場合の処理 } else { 条件式が成り立たなかった場合の処理 }
if の後ろの()の中には条件式を書きます。
条件式は、成立するとbool型のtrueという値になり、成立しない場合はfalseという値になります。このことからもわかるように、条件式の結果は必ず true か falseのどちらかになります。
条件式が成り立った(trueの)場合は、条件式のすぐ後ろにある { 〜 } の中に書かれた処理を実行します。一方、条件式が成り立たなかった(falseの)場合は else の後ろにある { 〜 } の中に書かれた処理を実行します。なお、elseから後ろの部分は省略することができます。
例えば「変数x が5より小さい」を条件式にしたif文は、以下のように記述します。条件式で使用している演算子については後述します。
C#におけるif文の例
var x = 3; if (x < 5) { Console.WriteLine("xは5より小さい"); // 条件式が true の場合に実行される } else { Console.WriteLine("xは5以上"); // 条件式が false の場合に実行される }
VB.NETは、条件式を()で囲みません。また条件式の後ろは{}ではなくThenというキーワードを使用します。If 〜 Then なので「もし〜ならば」となり英文法に近い書き方になります。If文の終わりには必ず「End If」を書きます。
VB.NETにおけるif文の例
Dim x = 3 If x < 5 Then Console.WriteLine("xは5より小さい") Else Console.WriteLine("xは5以上") End If
Javaにおけるif文の書式はC#と同じです。
Javaにおけるif文の例
int x = 3; if ( x < 5 ) { System.out.println("xは5より小さい"); } else { System.out.println("xは5以上"); }
Swiftにおけるif文はC#に似ていますが、条件式を()で囲まないという点で異なります。
Swiftにおけるif文の例
var x = 3 if x < 3 { print("xは5より小さい") } else { print("xは5以上") }
if 〜 else if文
Aという条件式が成り立った場合には処理Aを、Bという条件式が成り立った場合には処理Bを、というように、条件式を複数書いて処理を分岐させることができます。
このような場合は if 〜 else if 文 を使用します。else ifは複数書くことができます。
構文:C#における if 〜 else if 文
if (条件式A) { 条件式Aが成り立った場合の処理 } else if (条件式B) 条件式Bが成り立った場合の処理 else { 条件式が成り立たなかった場合の処理 }
以下は、変数xが1の場合 と 変数xが2の場合、変数xが1 or 2以外の場合について、if 〜 else if文で記述する例です。
C#における if 〜 else if 文の例
var x = 2; if (x == 1) { Console.WriteLine("xは1です"); } else if (x == 2){ Console.WriteLine("xは2です"); } else { Console.WriteLine("xは1と2以外です"); }
VB.NETの場合は If 〜 Then、 ElseIf 〜 Then となります。
VB.NETにおける if 〜 else if 文の例
Dim x = 2 If x = 1 Then Console.WriteLine("xは1です") ElseIf x = 2 Then Console.WriteLine("xは2です") Else Console.WriteLine("xは1と2以外です") End If
JavaはC#と同じ構文で記述することが出来ます。
Javaにおける if 〜 else if 文の例
var x = 2; if (x == 1) { System.out.println("xは1です"); } else if (x == 2){ System.out.println("xは2です"); } else { System.out.println("xは1と2以外です"); }
Swiftにおけるif文はC#に似ていますが、条件式を()で囲まないという点で異なります。
Swiftにおける if 〜 else if 文の例
let x = 2 if x == 1 { print("xは1です") } else if x == 2 { print("xは2です") } else {おうh print("xは1と2以外です") }
条件式で使用できる演算子
関係演算子
演算子の左オペランド(*)と右オペランドの大小比較を行います。
*オペランドとは、演算子の左右に置く値のこと。
使用可能な関係演算子を以下に示します。
関係演算子
C# | VB.NET | Java | Swift | 説明 |
---|---|---|---|---|
x < y | x < y | x < y | x < y | xがyより小さい場合はtrue |
x <= y | x <= y | x <= y | x <= y | xがy以下の場合はtrue |
x > y | x > y | x > y | x > y | xがyより大きい場合はtrue |
x >= y | x >= y | x >= y | x >= y | xがy以上の場合はtrue |
等値演算子
演算子の左オペランド(*)と右オペランドが等しいかどうかを比較します。
使用可能な等値演算子を以下に示します。
等値演算子
C# | VB.NET | Java | Swift | 説明 |
---|---|---|---|---|
x == y | x = y | x == y | x == y | xとyが等しい場合はtrue |
x != y | x <> y | x != y | x != y | xとyが等しくない場合はtrue |
条件論理演算子
複数の条件式を一度に評価したい場合は、条件論理演算子を使用します。演算子の左側と右側の条件式の結果から、その式全体が true か false のどちらかになります。
条件論理演算子
C# | VB.NET | Java | Swift | 説明 |
---|---|---|---|---|
x && y | x AndAlso y | && | && | xとyがtrueの場合、式がtrueとなる |
|| | OrElse | || | || | x または y のどちらかがtrueの場合に、式全体がtrueとなる |
C#における&&、|| は短絡評価と呼ばれる挙動をします。
短絡評価とは、左辺の結果によって右辺の評価を行わないというものです。
たとえば、「false && true」の場合は左辺がfalseであることが明確なので、右辺については評価するまでもなく、式全体がfalseとなります。
コメント