ここでは、C#の条件分岐について学習します。
条件分岐とは、「どういう条件なら、どうする」といったコードを書くことです。
①ifステートメント
②switchステートメント
の2つについて学びます。
ifステートメント
ifステートメント(以下、if文)は、ifの後に条件式を書き、更に、その条件が満足されたときの処理を書いていきます。具体的に説明していきます。
if~
if文とは、ある条件が成り立つかどうかによって、実行する処理を変えることができる文のことです。
if文の基本的な書き方は以下のようになります。
構文
if (条件式)
{
// 条件式が真(満足)の場合ここのコードが実行されます。
}
条件式は、数値の場合、下記の演算子が使えます。
・x == y xとyは等しい
・x != y xとyは異なる
・x > y xはyより大きい(超)
・x >= y xはy以上か
・x < y xはyより小さい(未満)
・x <= y xはyと以下か
例えば、
int x>=5;
if (x >= 10)
{
// 条件が満足されたのでここのコードが実行されます。
}
文字列の場合は
例えば
string str = “zzz”;
if (str == “zzz”)
{
// 条件が満足されたのでここのコードが実行されます。
}
では、実際にコードを書いてみましょう。
下記のコードでは、変数「i=10」に対して、iが20未満なら条件が成り立ち、
Console.WriteLine(“iは、20未満です!”);
が、実行されます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int i = 10; //10にした場合 if (i < 20) { Console.WriteLine("iは、20未満です!"); } } } }
実行結果は
iは、20未満です!
となります。
では変数「i=20」とした場合はどうなりますでしょうか。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int i = 20; //20にした場合 if (i < 20) { Console.WriteLine("iは、20未満です!"); } } } }
実行結果は
iが20以上に該当し、
(iが20未満の条件が成立しないため )
結果は表示されない状態になります。では、どうしたら、表示されるようになるでしょうか。
if〜else
構文
if (条件式)
{
// 条件式が真(満足)の場合ここのコードが実行されます。
}
else
{
// 条件式が偽 (満足しなかった) の場合ここのコードが実行されます。
}
ifだけでは、条件が満足していない場合、そのまま実行されないことがわかりました。
それを、回避したいときは、if~elseを使います。
下記のコードでは、前回同様、変数「i=10」に対して、iが20未満なら条件が成り立ち、
Console.WriteLine("iは、20未満です!");
が、実行されます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int i = 10; //10にした場合 if (i < 20) { Console.WriteLine("iは、20未満です!"); } else { Console.WriteLine("iは、20以上です!"); } } } }
実行結果は
iは、20未満です!
となります。
では変数「i=20」とした場合はどうなりますでしょうか。
ifだけの場合では、条件が成立せず表示されませんでしたが・・・
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int i = 20; //20にした場合 if (i < 20) { Console.WriteLine("iは、20未満です!"); } else { Console.WriteLine("iは、20以上です!"); } } } }
実行結果は
iは、20以上です!
条件式(iが20未満)に該当しなかったため、elseにとび、
Console.WriteLine("iは、20以上です!");
が実行されました。
if~else if~else
更に、条件を分岐できます。
構文
if (条件式A)
{
// 条件式Aが真(満足)の場合ここのコードが実行されます。
}
}else if(条件式B)
{
// 条件式Aが偽(満足しなかった)場合で、条件式Bが真(満足)の場合ここのコードが実行されます。
{
else
{
// 条件式がすべて偽 (満足しなかった) の場合ここのコードが実行されます。
}
else ifを使えば、どのような条件でも分岐できます。
下記のコードでは、前回同様、変数「i=10」に対して、iが20未満なら条件が成り立ち、
Console.WriteLine("iは、10以上20未満です!");
が、実行されます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int i =10; if (i < 10) { Console.WriteLine("iは、10未満です!"); } else if (i < 20) { Console.WriteLine("iは、10以上20未満です!"); } else { Console.WriteLine("iは、20以上です!"); } } } }
実行結果は
iは、10以上20未満です!
となります。
上記の例ではelse ifを2つ使っていますが、いくつでも使えます。
あまりに分岐が多い場合は、switchステートメントを使いましょう。
比較演算子や論理演算子を使う
条件式には、比較演算子や論理演算子を使って、真か偽かを判定できる式を書きます。
比較演算子には、等しい(==)、等しくない(!=)、より大きい(>)、より小さい(<)、以上(>=)、以下(<=)などがあります。
論理演算子には、かつ(&&)、または(||)、否定(!)などがあります。
例えば、以下のように書くことができます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int x = 10; if (x> 5 && x < 15) { // xが5より大きくかつ15より小さいときに実行される処理 } else { // xが5以下または15以上のときに実行される処理 } } } }
IF文は、elseを省略することもできます。
その場合は、条件式が真のときだけ処理が実行されます。
例えば、以下のように書くことができます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string name = "Alice"; if (name == "Alice") { // nameがAliceのときに実行される処理 } } } }
IF文は、else ifを使って、複数の条件式を連続して書くこともできます。
その場合は、上から順に条件式を評価し、最初に真となった条件式に対応する処理が実行されます。
例えば、以下のように書くことができます。
using System; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int score = 80; if (score>= 90) { // scoreが90以上のときに実行される処理 } else if (score >= 80) { // scoreが80以上90未満のときに実行される処理 } else if (score >= 70) { // scoreが70以上80未満のときに実行される処理 } else { // scoreが70未満のときに実行される処理 } } } }
以上が、C#のif文について詳しく説明した内容です。
if文を使えば、プログラムの流れを柔軟に制御することができます。
ぜひ覚えておいてください。