C#入門⑥ if文 ── 条件によって動きを変える

前回は「キーボードから入力を受け取る」方法をやりました。

今回は、プログラミングの最初の山場。if文(イフぶん)です。これができると、プログラムが「考えて」動くようになります。

if文とは、「もし〜なら、これをする」という分かれ道です。

なぜ、これが必要なのか

第1回で「プログラムは上から順番に動く」と書きました。でも、いつも同じことをするだけでは、できることが限られます。

現実は、状況によってやることが変わります

「もし雨なら、傘を持つ」
「もし18歳以上なら、入場できる」
「もし点数が60点以上なら、合格」

この「もし〜なら」を、プログラムで表現するのがif文です。料理でいうなら、「もし味が薄かったら、塩を足す」という判断ですね。

書き方を見てみる

年齢で判定する、シンプルな例です。

int age = 20;

if (age >= 18)
{
    Console.WriteLine("入場できます");
}

実行すると「入場できます」と表示されます。

形を見てみましょう。

if (条件)
{
    条件が true のときに、する処理
}
  • if のあとの カッコ ( ) の中に、条件 を書く
  • 波カッコ { } の中に、条件が成り立ったときの処理 を書く

age >= 18 は、第4回でやった「くらべる演算子」です。「age は18以上か?」をくらべて、true か false が返ります。true なら、{ } の中が実行されます。

age は20なので、「20は18以上?」→ true。だから「入場できます」が表示されました。

「そうでなければ」を加える ── else

「条件に合わないとき」の処理も書けます。else(エルス)を使います。

int age = 15;

if (age >= 18)
{
    Console.WriteLine("入場できます");
}
else
{
    Console.WriteLine("入場できません");
}

age は15なので、「15は18以上?」→ false。
true ではないので、else の方、「入場できません」が表示されます。

if = もし〜なら / else = そうでなければ。この2つで、分かれ道が作れます。

入力と組み合わせてみる

前回の ReadLine と組み合わせると、グッと実用的になります。

Console.WriteLine("年齢を入力してください");
int age = int.Parse(Console.ReadLine());

if (age >= 18)
{
    Console.WriteLine("入場できます");
}
else
{
    Console.WriteLine("入場できません");
}

これで、入力された年齢によって、結果が変わるプログラムになりました。

20と入力すれば「入場できます」、15と入力すれば「入場できません」。同じプログラムでも、入力によって動きが変わる。これが「プログラムが考えて動く」ということです。

3つ以上に分けたいとき ── else if

「合格・あと一歩・不合格」のように、3つ以上に分けたいときは else if を使います。

int score = 75;

if (score >= 80)
{
    Console.WriteLine("合格");
}
else if (score >= 60)
{
    Console.WriteLine("あと一歩");
}
else
{
    Console.WriteLine("不合格");
}

上から順にくらべていきます。

  1. 「80以上?」→ 75なのでfalse、次へ
  2. 「60以上?」→ 75なのでtrue、「あと一歩」を表示して終了

ポイントは、上から順にくらべて、最初に当てはまったところで終わりということ。だから、条件は「きびしい順(大きい順)」に並べるのがコツです。

つまずきポイント

初心者がよく間違えるのが、第4回でも触れた 「等しい」は ==(イコール2つ) です。

if (age == 18)    // 「ageは18と等しい?」(正しい)
if (age = 18)     // 「ageに18を入れる」になってしまう!エラー

if文の条件で「等しいか」をくらべたいときは、必ずイコールを2つ。
1つだと「箱に入れる」の意味になってしまいます。

まとめ

if文は「もし〜なら、これをする」という分かれ道。

  • if (条件) { } … もし条件が true なら、{ } を実行
  • else { } … そうでなければ、こちら
  • else if (条件) { } … 3つ以上に分けるとき

そして、等しいかのくらべは ==(イコール2つ)。

次回は、もうひとつの分岐の書き方、switch文 です。選択肢がたくさんあるときに便利です。