[C# プログラミング入門] 条件分岐(if文)について

今回は ifif-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以下です。"); }

という感じです。
さらに、論理演算子を使ってそれらを組み合わせたりします。

論理演算子数学でいうと使い方意味
&&ANDa && ba かつ b ならば true
||ORa || ba または b ならば true

ある数値型の変数が範囲内(たとえば10~20のあいだ)の場合に処理を行いたいというときは、
変数が10以上 かつ 変数が20以下 という式にします。

int i = 15;
if (i >= 10 && i <= 20) {
    System.Console.WriteLine("iは10~20の間にあります。"); 
}


等値演算子や比較演算子、論理演算子については別記事にまとめてあるので必要なときに見てみてください。

[C# プログラミング入門] 演算子について
今回は演算子についてです。 演算子のことをオペレーターと言います。 計算や比較、論理演算するときにつかいます。


また、条件のところは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# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました