今回は if、if-else を使った分岐処理についてです。
条件分岐はどのプログラミング言語でも出てくる必須の知識になるので、ぜひ覚えましょう。
ある条件のときだけ処理を行いたい場合にif文を、
条件によってそれぞれ別の処理を行い場合に if-else文を使います。
ifの使い方
if文の構文はこんな感じです。
if ( 条件 ) {
// 条件を満たす場合に行う処理を書く
}
if文は if の後ろのかっこ内に書かれた条件式の結果が true の場合に、後ろの { } ブロック内の処理を実行します。
条件式には等値演算子や比較演算子などを使い、結果が論理型(bool型:true か false)になる式を書きます。
たとえば、
- 左辺と右辺が同じかどうか( a == b )
- 左辺と右辺が異なっている( a != b )
- 左辺が右辺より大きいか( a > b )
- 左辺が右辺と同じまたは大きいか( a >= b )
- 左辺が右辺より小さいか( a < b )
- 左辺が右辺と同じまたは小さいか( a <= b )
int i = 10;
if (i == 10) { System.Console.WriteLine("iは10です。"); }
if (i != 10) { /* 結果がfalseなのでここは実行されない */ }
if (i > 10) { /* 結果がfalseなのでここは実行されない */ }
if (i >= 10) { System.Console.WriteLine("iは10以上です。"); }
if (i < 10) { /* 結果がfalseなのでここは実行されない */ }
if (i <= 10) { System.Console.WriteLine("iは10以下です。"); }
という感じです。
さらに、論理演算子を使ってそれらを組み合わせたりします。
論理演算子 | 数学でいうと | 使い方 | 意味 |
---|---|---|---|
&& | AND | a && b | a かつ b ならば true |
|| | OR | a || b | a または b ならば true |
ある数値型の変数が範囲内(たとえば10~20のあいだ)の場合に処理を行いたいというときは、
変数が10以上 かつ 変数が20以下 という式にします。
int i = 15;
if (i >= 10 && i <= 20) {
System.Console.WriteLine("iは10~20の間にあります。");
}
等値演算子や比較演算子、論理演算子については別記事にまとめてあるので必要なときに見てみてください。
また、条件のところはbool型になればいいので、bool型を返すメソッドなんかも指定できます。
string filePath = @"C:\Test.txt";
if (System.IO.File.Exists(filePath)) {
System.Console.WriteLine("ファイルは存在します。");
}
System.IO.File.Existsメソッドは第1引数で渡されたパスにファイルがあれば true、なければ falseを返します。
それをif文の条件式に指定してファイルがあった場合にメッセージを表示しています。
ブロック { } の省略
if 分のブロック内の処理が1つだけの場合、{ } を省略することができます。
int i = 10;
if (i == 10) System.Console.WriteLine("iは10です。"); // { } を省略できる
// 改行してもOK
if (i <= 10)
System.Console.WriteLine("iは10以下です。");
if-elseの使い方
if-else文 の構文はこんな感じです。
if ( 条件) {
// 条件を満たす場合に行う処理を書く
}
else {
// 条件ではなかった場合に行う処理を書く
}
if-else文は if の後ろのかっこ内に書かれた条件式の結果が true の場合に、後ろの { } ブロック内の処理を実行し、条件式の結果が false の場合に、else の後ろの { } ブロック内の処理が実行されます。
条件の書き方は上のif文と同じです。
int i = 15;
if (i >= 10 && i <= 20) {
System.Console.WriteLine("iは10~20の間にあります。");
}
else {
System.Console.WriteLine("iは10~20の間ではありません。");
}
また、elseもブロック内の処理が1つだけの場合、{ } を省略することができます。
int i = 15;
if (i >= 10 && i <= 20)
System.Console.WriteLine("iは10~20の間にあります。");
else
System.Console.WriteLine("iは10~20の間ではありません。");
elseブロックにさらにifを書く(else if)
たとえば、ある数値型の変数が
100以上だったらメッセージ1、
50以上だったらメッセージ2を表示するといった場合、
こんな感じになると思いますが、
int i = 120;
if (i >= 100)
{
System.Console.WriteLine("メッセージ1");
}
else {
if (i >= 50) {
System.Console.WriteLine("メッセージ2");
}
}
ブロック内の処理が1つの場合に { } を省略することができるので、elseブロックを省略して書くことが多いです。こんな感じです。if (xxx) { … } で1つの処理です。
int i = 120;
if (i >= 100)
{
System.Console.WriteLine("メッセージ1");
}
else if (i >= 50)
{
System.Console.WriteLine("メッセージ2");
}
{ } を省略すると少しわかりづらくなるのですが、上の2つようなif文の場合、プログラムを実行するとメッセージ1だけが表示されます。
順番に見ていくと、最初の i >= 100 が true になりifブロックのメッセージ1が表示され else は実行されずにif-elseが終わります。
iは120なんだからメッセージ1もメッセージ2も表示したいという場合には、
if文を2つに分けて記述します。
int i = 120;
if (i >= 100) { System.Console.WriteLine("メッセージ1"); }
if (i >= 50) { System.Console.WriteLine("メッセージ2"); }
C# 記事まとめページに戻る(他のサンプルコードもこちら)
コメント