C# | 2週間で身につくアプリを作りながら学ぶC#の基本 - 2日目

C# C#
スポンサーリンク

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 回まで入力を受け付けるアプリ」などを作りながら、
ループの感覚を身につけていきます。

タイトルとURLをコピーしました