2日目のゴールとテーマ
2日目のテーマは「条件分岐(if 文)で、アプリに“判断”をさせる」です。
昨日は「入力してもらったものを、そのまま表示する」だけでした。
今日はそこに一歩踏み込んで、
「入力された内容によって、表示するメッセージを変える」
という“アプリらしい振る舞い”を作ります。
最終的には、年齢を入力すると
「あなたは大人です」「あなたは未成年です」
のように結果が変わるミニ診断アプリを作ります。
完璧に覚えなくていいので、「if を使うと、条件によって処理を変えられる」という感覚をつかむのがゴールです。
if 文の基本形を理解する
「もし〜なら〜する」をコードで書く
まずは、いちばんシンプルな if 文の形を見てください。
int age = 20;
if (age >= 18)
{
Console.WriteLine("あなたは大人です。");
}
C#日本語にすると、
「age が 18 以上なら、“あなたは大人です”と表示する」
という意味です。
ここで重要なのは次の3つです。
if の後ろのかっこ ( ) の中に「条件」を書く
条件が true(真)のときだけ、波かっこ { } の中が実行される
false(偽)のときは、何も実行されない
この「条件が true のときだけ実行されるブロック」が if 文の本質です。
比較演算子をまとめて押さえる
条件の中では「比較演算子」をよく使います。
代表的なものを例と一緒に見てみましょう。
int x = 10;
bool a = (x > 5); // 10 は 5 より大きい → true
bool b = (x < 5); // 10 は 5 より小さい → false
bool c = (x == 10); // 10 は 10 と等しい → true
bool d = (x != 3); // 10 は 3 と等しくない → true
bool e = (x >= 10); // 10 は 10 以上 → true
bool f = (x <= 9); // 10 は 9 以下 → false
C#== は「等しい」、!= は「等しくない」です。
ここを = と書いてしまうミスは超あるあるなので、「比較は ==」と意識しておいてください。
if 〜 else で「どちらか一方」を選ばせる
else を付けると「それ以外」の場合も書ける
次のコードを見てください。
int age = 16;
if (age >= 18)
{
Console.WriteLine("あなたは大人です。");
}
else
{
Console.WriteLine("あなたは未成年です。");
}
C#これは、
「もし age が 18 以上なら“大人”と表示し、そうでなければ“未成年”と表示する」
という意味です。
if だけのときは「条件を満たさないときは何もしない」でしたが、
else を付けると「条件を満たさないときにやること」も書けます。
ここでのポイントは、
if の条件が true のとき → if ブロックだけ実行
if の条件が false のとき → else ブロックだけ実行
という「どちらか一方だけが実行される」という動きです。
if 〜 else if 〜 else で「3パターン以上」を分ける
年齢でメッセージを細かく変える例
例えば、次のように分けたいとします。
13歳未満 → 子ども
13〜17歳 → ティーン
18歳以上 → 大人
これを if 文で書くと、こうなります。
int age = 15;
if (age < 13)
{
Console.WriteLine("あなたは子どもです。");
}
else if (age < 18)
{
Console.WriteLine("あなたはティーンです。");
}
else
{
Console.WriteLine("あなたは大人です。");
}
C#上から順番に条件がチェックされていきます。
age が 12 なら、最初の if が true になり、そこで終わり
age が 15 なら、最初の if は false だが、次の else if が true
age が 20 なら、if も else if も false なので、最後の else
という流れです。
ここで大事なのは、「上から順番に評価される」ということです。
条件の順番を変えると結果も変わるので、ロジックを考えるときは順番も意識しましょう。
1日目の自己紹介アプリを「年齢診断アプリ」に進化させる
入力を受け取って、if で分岐する
昨日の「名前と年齢を入力してもらう」コードをベースに、
年齢によってメッセージを変えるアプリにしてみます。
Console.WriteLine("あなたの名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("あなたの年齢を入力してください:");
string ageText = Console.ReadLine();
int age = int.Parse(ageText);
Console.WriteLine("こんにちは、" + name + " さん。");
if (age < 13)
{
Console.WriteLine("あなたは子どもですね。");
}
else if (age < 18)
{
Console.WriteLine("あなたはティーンですね。");
}
else
{
Console.WriteLine("あなたは大人ですね。");
}
C#流れを言葉で追ってみます。
名前を文字列として受け取る
年齢を文字列として受け取るint.Parse で文字列 → 整数に変換する
挨拶を表示する
年齢に応じてメッセージを変える
ここで特に大事なのは、「比較に使う前に、文字列を数値に変換している」という点です。
文字列のまま ageText < 13 のように書くと、エラーになったり、意図しない比較になってしまいます。
条件式を自分で考えてみる練習
「条件を日本語で書いてからコードにする」
いきなりコードで条件を書くと、混乱しやすいです。
おすすめは、まず日本語で書いてから、それをコードに翻訳するやり方です。
例えば、次のような診断を作りたいとします。
BMI が 25 以上なら「太り気味」
18.5 未満なら「痩せ気味」
それ以外は「標準」
日本語のままだとこうです。
もし BMI が 25 以上なら「太り気味」
そうでなくて、もし BMI が 18.5 未満なら「痩せ気味」
それ以外なら「標準」
これを C# にすると、こうなります。
double bmi = 23.4;
if (bmi >= 25.0)
{
Console.WriteLine("太り気味です。");
}
else if (bmi < 18.5)
{
Console.WriteLine("痩せ気味です。");
}
else
{
Console.WriteLine("標準です。");
}
C#この「日本語 → 条件式」の変換に慣れてくると、
if 文が一気に怖くなくなります。
条件が複雑なときの「論理演算子」
AND(かつ)と OR(または)
少しだけ踏み込んで、条件を組み合わせる書き方も触れておきます。
例えば、
20歳以上 かつ 30歳未満
という条件は、C# ではこう書きます。
int age = 25;
if (age >= 20 && age < 30)
{
Console.WriteLine("あなたは 20 代です。");
}
C#&& は「かつ(AND)」です。
両方の条件が true のときだけ、全体が true になります。
逆に、
13歳未満 または 65歳以上
という条件は、こう書きます。
if (age < 13 || age >= 65)
{
Console.WriteLine("割引の対象です。");
}
C#|| は「または(OR)」です。
どちらか一方でも true なら、全体が true になります。
1日目・2日目の段階では、
「&& は両方必要」「|| はどちらかでOK」
くらいの理解で十分です。
2日目の仕上げ:ミニ診断アプリを完成させる
おみくじ風「年齢診断+メッセージ」アプリ
最後に、今日の内容を全部使ったミニアプリの例を出します。
これをそのまま写してもいいし、少し変えても OK です。
Console.WriteLine("あなたの名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("あなたの年齢を入力してください:");
string ageText = Console.ReadLine();
int age = int.Parse(ageText);
Console.WriteLine();
Console.WriteLine("=== 診断結果 ===");
Console.WriteLine("こんにちは、" + name + " さん。");
if (age < 13)
{
Console.WriteLine("あなたは子どもですね。");
Console.WriteLine("たくさん遊んで、たくさん学んでください!");
}
else if (age < 18)
{
Console.WriteLine("あなたはティーンですね。");
Console.WriteLine("新しいことに挑戦するのにぴったりな時期です。");
}
else if (age < 65)
{
Console.WriteLine("あなたは大人ですね。");
Console.WriteLine("無理しすぎず、でも少しだけチャレンジしてみましょう。");
}
else
{
Console.WriteLine("あなたはシニアですね。");
Console.WriteLine("ゆっくり、自分のペースで過ごしてください。");
}
C#ここまで動かせたら、2日目としてはかなり良い仕上がりです。
次回(3日目)への予告
3日目は、if 文に続いて
繰り返し(for / while)
簡単な計算ロジック
「回数を数える」「合計を出す」ような処理
を扱っていきます。
例えば、「1〜10 までの合計を出すアプリ」や
「3 回まで入力を受け付けるアプリ」などを作りながら、
ループの感覚を身につけていきます。
