if命令
単純比較の場合
if
文は、プログラムの中で特定の条件が満たされた場合にのみ特定のコードを実行するために使用される条件分岐の構文です。条件がtrue
の場合に、コードブロックが実行されます。
if命令の基本構文は以下の通りです。
if (条件) { // 条件が true の場合に実行するコード
}else{//条件がfalseの時に実行するコード
}
条件がtrueの場合のみ処理したい場合、elseブロックは省略できます。
例としてサンプルを示します。
int number = 10;
if(number > 5){
Console.WriteLine("numberは5より大きいです");
}else{
Console.WriteLine("numberは5以下です");
}
多岐分岐
今度はelse ifを付け加えることで条件が成立すればifブロックを実行し、さもなくば次の条件であれば、と言うことを繰り返すことが出来ます。
if(条件式1){//条件式1がtrueの場合ない実行する
}else if(条件式2){//条件式がfalseでかつ条件式がtrueの場合に実行する
}else{//条件式1も条件式2もfalseの時に実行する
}
ここで注意事項。if文で設定した条件式1も条件式2も成立する場合、条件式1の成立したブロックのみ実行されることです。一例は次の通りです。iは100で50より大きい(即ち30よりも大きい)ですが、出力結果には「iは50より大きいです」のみ表示されます。
int i = 100;
if(i > 50){
Console.WriteLine("iは50より大きいです");
}else if(i > 30){
Console.WriteLine("iは30より大きく、50以下です");
}else{
Console.WriteLIne("iは30以下です");
}
if文の条件を逆にしたら以下のようなプログラムになりますが、
int i = 100;
if(i > 30){
Console.WriteLine("iは30より大きく、50以下です");
}else if(i > 50){
Console.WriteLine("iは50より大きいです");
}else{
Console.WriteLIne("iは30以下です");
}
結果表示されるのは「iは30より大きく、50以下です」です。2番目のi>50の判定には入りません。
ネスト構造
if命令は入れ子にすることが出来ます。例えば、以下の様なプログラムです。
int number = 15;
if (number > 0) {
Console.WriteLine("numberは正の数です.");
if (number % 2 == 0) {
Console.WriteLine("numberは偶数です");
} else {
Console.WriteLine("numberは奇数です");
}
}else{
Console.WriteLine("numberは0以下です");
}
上の用に制御命令同士を入れ子に書くことをネストする、と言います。if命令だけでなく、他の制御命令(switch、while、do while、for、foreach)でも同じようにネストすることが出来ます。
ネストの深さには制限はありませんが、余り深くしすぎるとコードが読みにくくなりますので余りにも深いネストは避けるべきです。また、ネスト毎にインデントを下げる(行の前にtabを入れるのが暗黙の了解です)を入れると可動性は高まります。
switch文
switch
文は、特定の変数の値に基づいて、複数の条件分岐を簡潔に書くための構文です。if-else
文の代わりに使用されることが多いです。各ケースの条件が満たされたときに、その対応するコードブロックが実行されます。
基本構文は以下の通りです。
switch (変数) {
case 値1:
// 値1の時に実行されるコード
break;
case 値2:
// 値2の時に実行されるコード
break; // その他のケース
default:
// どのケースにも当てはまらない場合に実行されるコード
break;
}
ここで、case 値xxの後ろについているのは「セミコロン」ではなく「コロン」です。
また、各caseに対して最後のbreak文は必須です。サンプルに曜日を示すプログラムを示します。
どのパターンにも当てはまらない場合は、defaultに入りますが、このdefaul句は省略しない方がいいです。
switch (dayOfWeek) {
case 1:
Console.WriteLine("月曜");
break;
case 2:
Console.WriteLine("火曜");
break;
case 3:
Console.WriteLine("水曜");
break;
case 4:
Console.WriteLine("木曜");
break;
case 5:
Console.WriteLine("金曜");
break;
case 6:
Console.WriteLine("土曜");
break;
case 7:
Console.WriteLine("日曜");
break;
default:
Console.WriteLine("???");
break;
}
まとめ
今回はif文とswitch文について学びました。どちらも条件式に当てはまればという感じで使っていくのですが、同一変数の具体的な値を比較する条件を使っていくのでしたらswitch文の方が使いやすいかと思います。
コメント