1. if else演算子
プログラムが外部の状況が変わっても同じことしかできなかったら、あんまり意味ないよね。プログラムは色んな状況に合わせて、場合によって違う処理をできる必要があるんだ。
C#ではこれを条件演算子っていう特別なキーワードで実現してる。条件がtrueかどうかで、違うコマンドブロックを実行できるんだ。
条件演算子は3つのパートからできてる:条件、コマンド1、コマンド2。条件が正しい(true)ならコマンド1が実行されて、そうじゃなければコマンド2が実行される。コマンドは同時に実行されることはないよ。全体の形はこんな感じ:
if (条件)
コマンド1;
else
コマンド2;
if-else
ifは「もし」、elseは「それ以外」って意味だよ。人間の言葉で書くとこんな感じ:
もし 条件 がtrueなら
コマンド1を実行する;
それ以外
コマンド2を実行する;
if-elseを人間の言葉で
例:
//画面に「まだ子供だよ」と表示される
int age = 17;
if (age < 18)
Console.WriteLine("まだ子供だよ");
else
Console.WriteLine("もう大人だね");
//画面に「暖かい」と表示される
int temperature = 5;
if (temperature < 0)
Console.WriteLine("外は寒いよ");
else
Console.WriteLine("暖かい");
//画面に「免許の試験を受けられる」と表示される
int age = 18;
if (age == 18)
Console.WriteLine("免許の試験を受けられる");
else
Console.WriteLine("車のために貯金しよう");
2. コマンドブロック
条件がtrue(またはfalse)のときに、複数のコマンドを実行したい場合は、それらをコマンドブロックにまとめることができるよ。
コマンドをブロックにまとめるには、波かっこで囲むだけ。全体の形はこんな感じ:
{
コマンド1;
コマンド2;
コマンド3;
}
ブロック内のコマンドは何個でもOK。0個でも大丈夫。
if-elseとコマンドブロックの組み合わせ例:
//画面に「まだ子供だよ。大人に逆らうな」と表示される
int age = 17;
if (age < 18)
{
Console.WriteLine("まだ子供だよ");
Console.WriteLine("大人に逆らうな");
}
else
{
Console.WriteLine("もう大人だね");
Console.WriteLine("最近の若者は…");
}
//画面に「暖かい」と表示される
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("外は寒いよ");
Console.WriteLine("帽子かぶってね");
}
else
Console.WriteLine("暖かい");
//空のコマンドブロックが実行される。画面には何も表示されない。
int age = 21;
if (age == 18)
Console.WriteLine("徴兵事務所に来てください");
else
{
}
3. if演算子の省略構文
elseブロックのコードがなければ、省略できる。その場合、if演算子はこうなる:
if (条件)
コマンド1;
if
例:
int age = 19;
if (age >= 18)
{
Console.WriteLine("成人だよ!");
}
どう動くの?
条件がtrueなら、コードブロックが実行される。falseなら何も起きず、プログラムはそのまま進む。
プログラムにはelseブロックがあるけど、中身が空(波かっこの間に何もない)なら、単に消してもOK。動作は変わらないよ。
4. 条件の組み合わせ: else if
たまに「はい/いいえ」だけじゃなくて、いくつかの選択肢から選びたいときがあるよね。 そんなときはelse ifが便利:
if (条件1)
{
// 条件1がtrueなら実行
}
else if (条件2)
{
// 条件2がtrueで、条件1がfalseなら実行
}
else
{
// 上のどれにも当てはまらなければ実行
}
例:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("おはよう!");
}
else if (hour < 18)
{
Console.WriteLine("こんにちは!");
}
else
{
Console.WriteLine("こんばんは!");
}
ここで何が起きてる?
- 12時までなら朝。
- 12時から18時までなら昼。
- それ以降は夜。
- プログラムはどれか一つだけ選ぶ!条件に合ったら、他はもうチェックしない。
5. 図解:分岐のフローチャート
フローチャートで見るとこんな感じ:
条件が複数ある場合は:
これ、テーブルトークRPGの分岐みたいな感じだよね。左に行けばこれ、右ならあれ、まっすぐならまた別のこと!
6. どんな条件をチェックできる?
ifの後ろの丸かっこの中には、trueかfalseになる論理式を書かないとダメ。
主な比較演算子:
| 演算子 | 意味 | 例 |
|---|---|---|
| == | 等しい | x == 5 |
| != | 等しくない | x != 10 |
| > | より大きい | x > 0 |
| < | より小さい | age < 18 |
| >= | 以上 | score >= 100 |
| <= | 以下 | count <= 50 |
条件の例:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
注意:=(1つ)は代入、==(2つ)は比較。これ、初心者がよくやるミス!もし間違えてこう書いたら:
if (x = 5) // エラー!
— コンパイラがちゃんと怒ってくれるよ。ありがたい!
7. 条件で文字列を使う
数字だけじゃなくて、文字列も比較できるよ:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("ログインできた!");
}
注意:C#では==で文字列を比較しても、普通は中身(値)をちゃんと比べてくれる(参照じゃなくて)。文字列の比較の細かい話やローカライズの注意点は、また文字列メソッドのときにやるね。
8. 注意点・コツ:
波かっこ:必要?不要?
ifやelseの後に1行だけなら、波かっこは省略できる:
if (age > 18)
Console.WriteLine("18歳以上だよ!");
// でも、波かっこは常に書いた方が安全:
if (age > 18)
{
Console.WriteLine("18歳以上だよ!");
}
アドバイス:波かっこは毎回書こう。コードを拡張するときにミスを防げるよ。
論理ミス:条件に注意!
例えばこう書くと:
if (age > 18)
Console.WriteLine("18歳以上だよ!");
Console.WriteLine("ようこそ!");
コンパイラはこう読む:
if (age > 18)
{
Console.WriteLine("18歳以上だよ!");
}
Console.WriteLine("ようこそ!");
2行目は必ず実行される。両方を「分岐の中」に入れたいなら、波かっこが必要だよ!
GO TO FULL VERSION