#4 条件分岐
プログラミングでは,もし条件を満たせばこの動作,そうでなければこの動作,というように条件によって動作を変えるための構文があります.
##if文
if (条件式1)
{
条件式1がtrueの時実行される.
}
else if (条件式2)
{
条件式1がfalse,且つ条件式2がtrueの時実行される.
}
else if (条件式3)
{
条件式1,条件式2がfalse,且つ条件式3がtrueの時実行される.
}
else
{
すべての条件式がfalseの時実行される.
}
if文は上のようにして条件分岐します,else if
はいくつも書けますが,あまりに多すぎるとコンパイラから怒られることもあります.また,実行する文が一つの場合は波括弧を省略することもできます.
次は具体例を見てみましょう.
ConditionalBranchSample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConditionalBranchSample
{
class Program
{
static void Main(string[] args)
{
int num = 2;
if (num == 0)
{
Console.WriteLine("numは0です.");
}
else if (num == 1 || num == 2)
{
Console.WriteLine("numは1か2です.");
}
else
{
Console.WriteLine("numは0,1,2以外です.");
}
}
}
}
出力結果
numは1か2です.
##switch-case文
switch (変数)
{
case 値1:
変数が値1の時実行される.
break;
case 値2:
変数が値2の時実行される.
break;
default:
変数が値1でも値2でもない時実行される.
break;
}
switch-case文はラベルが定数でなければならないなど少々使い勝手が良くないため,if文が好んで使われる傾向がありますが,上から条件を判定していくif文と比べるとより早いと言われています.
ConditionalBranchSample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConditionalBranchSample
{
class Program
{
static void Main(string[] args)
{
double num = 3;
switch (num)
{
case 0:
Console.WriteLine("numは0です.");
break;
case 1:
Console.WriteLine("numは1です.");
break;
default:
Console.WriteLine("numは0,1以外です.");
break;
}
}
}
}
次回はループ処理について説明します.
##練習問題
int型の変数yearを定義して,西暦年をyearに代入すると平成何年か画面に出力するコードを書いてください.
解答例
元年と表示するのが個人的こだわりポイントです.
ConditionalBranchSample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConditionalBranchSample
{
class Program
{
static void Main(string[] args)
{
int year = 1998;
if (year == 1989)
Console.WriteLine("平成元年です.");
else if (year > 1989 && year <= 2019)
Console.WriteLine("平成" + (year - 1988) + "年です.");
else
Console.WriteLine("平成ではありません.");
}
}
}