Skip to content

第4章 条件に応じた処理

この章では、条件に応じて処理を変える方法を学習します。

これまでの章では、プログラムは基本的に上から順番に実行されました。

1行目を実行
2行目を実行
3行目を実行

しかし、実際のプログラムでは、常に同じ処理だけを行うわけではありません。

たとえば、次のような処理が必要になります。

点数が60点以上なら「合格」と表示する
年齢が20歳以上なら「成人」と表示する
購入金額が5000円以上なら送料を無料にする
入力された番号によって実行する処理を変える
入力された値が正しくなければエラーメッセージを表示する

このように、条件によって処理を変えることを 条件分岐 といいます。

この章では、C# で条件分岐を行うための if 文、elseelse ifswitch 文を学習します。


この章でできるようになること

Section titled “この章でできるようになること”

この章を終えると、次のことができるようになります。

  • 条件分岐が必要になる場面を説明できる
  • if 文を使って条件に合うときだけ処理を実行できる
  • else を使って条件に合わないときの処理を書ける
  • else if を使って複数の条件を順番に判定できる
  • switch 文を使って値に応じた多分岐処理を書ける
  • ==!=>>=<<= を使って条件式を書ける
  • &&||! を使って複数の条件を組み合わせられる
  • bool 型の値と条件式の関係を説明できる
  • 入力された値に応じて処理を変えるコンソールアプリを作成できる

項目内容
開発環境Visual Studio 2022
プロジェクト種類コンソール アプリ
対象フレームワーク.NET 8
ソリューション名Chapter04
プロジェクト名Ch04_Conditional

csproj の Nullable は disable に変更してください

プロジェクト作成後、Ch04_Conditional.csproj を開き、<Nullable>disable</Nullable> に変更してください。

詳しい手順は、第 1 章「1-1 プロジェクトを作成する」を参照してください。

補足:ソリューション名とプロジェクト名は別の名前にします

本研修では、ソリューション名は Chapter04、プロジェクト名は Ch04_Conditional のように分けます。

新規作成画面で「ソリューション名」欄を Chapter04 に変更してください。


作業を始める前に、次の内容を確認してください。

  • Visual Studio 2022 でコンソールアプリを作成できる(不安な場合は 付録 B「VS2022 の準備と基本操作」 を参照)
  • .NET 8.0 を選択できる
  • csproj の Nullable を disable に変更できる
  • Console.WriteLine を使って表示できる
  • Console.ReadLine で入力を受け取れる
  • int.Parse で文字列を整数に変換できる
  • intstringbool の基本的な意味を説明できる
  • 第 3 章の課題を Git に提出済みである

まず、点数を表示するだけのプログラムを考えます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 80;
Console.WriteLine($"点数:{score}");
}
}
}

実行結果:

点数:80

このプログラムは、点数を表示するだけです。

しかし、研修や試験のプログラムでは、点数に応じて次のような判定をしたい場合があります。

60点以上なら合格
60点未満なら不合格

このような場合に、条件分岐を使います。


次のコードを入力して実行してください。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 80;
Console.WriteLine($"点数:{score}");
if (score >= 60)
{
Console.WriteLine("合格です。");
}
}
}
}

実行結果:

点数:80
合格です。

score の値が 60 以上なので、if 文の中の処理が実行されます。


score の値を 45 に変更して実行してください。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 45;
Console.WriteLine($"点数:{score}");
if (score >= 60)
{
Console.WriteLine("合格です。");
}
}
}
}

実行結果:

点数:45

今度は「合格です。」が表示されません。

score >= 60 が成り立たないため、if 文の中の処理が実行されなかったからです。


if 文の基本形は次の通りです。

if (条件式)
{
条件式が成り立つときに実行する処理
}

条件式が成り立つ場合だけ、{ } の中の処理が実行されます。

条件式が true の場合 → 実行する
条件式が false の場合 → 実行しない

条件式とは、結果が true または false になる式です。

たとえば、次の式は条件式です。

score >= 60

score80 の場合、これは成り立つので true です。

80 >= 60 → true

score45 の場合、これは成り立たないので false です。

45 >= 60 → false

条件に合う場合と、条件に合わない場合の両方の処理を書きたい場合は、else を使います。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 45;
Console.WriteLine($"点数:{score}");
if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
}
}

実行結果:

点数:45
不合格です。

if の条件が成り立たない場合、else の中の処理が実行されます。


次は、キーボードから入力された点数を判定します。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("点数を入力してください。");
string input = Console.ReadLine();
int score = int.Parse(input);
if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
}
}

実行例:

点数を入力してください。
75
合格です。

実行例:

点数を入力してください。
40
不合格です。

第 3 章で学習した % を使うと、偶数・奇数を判定できます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("整数を入力してください。");
string input = Console.ReadLine();
int number = int.Parse(input);
if (number % 2 == 0)
{
Console.WriteLine("偶数です。");
}
else
{
Console.WriteLine("奇数です。");
}
}
}
}

実行例:

整数を入力してください。
8
偶数です。

number % 2 は、number を 2 で割った余りです。

余りが0 → 偶数
余りが1 → 奇数

エラーではないが注意したい例:if 文の中身が 1 行だけの場合

Section titled “エラーではないが注意したい例:if 文の中身が 1 行だけの場合”

C# では、if 文の中の処理が 1 行だけなら、{ } を省略できます。

if (score >= 60)
Console.WriteLine("合格です。");

このコードは動作します。

しかし、本研修では基本的に { } を省略しません。

if (score >= 60)
{
Console.WriteLine("合格です。");
}

補足:本研修での書き方

本研修では、if 文の処理が 1 行だけでも { } を書きます。 処理の範囲が分かりやすくなり、後から処理を追加するときのミスを防ぎやすいためです。


エラーになる例:条件式の後ろにセミコロンを付ける

Section titled “エラーになる例:条件式の後ろにセミコロンを付ける”

次のコードは、意図した動きになりません。

if (score >= 60);
{
Console.WriteLine("合格です。");
}

if (score >= 60); の末尾に ; が付いているため、if 文の中身が空になってしまいます。

正しくは次のように書きます。

if (score >= 60)
{
Console.WriteLine("合格です。");
}

if の条件式の直後には、通常 ; を付けません。


if 文の中に if 文を書く(入れ子)

Section titled “if 文の中に if 文を書く(入れ子)”

if 文の中に、さらに if 文を書くこともできます。これを 入れ子(ネスト) と呼びます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 85;
bool isActive = true;
if (isActive)
{
if (score >= 60)
{
Console.WriteLine("受講中で合格点に達しています。");
}
else
{
Console.WriteLine("受講中ですが合格点に達していません。");
}
}
else
{
Console.WriteLine("受講していません。");
}
}
}
}

実行結果:

受講中で合格点に達しています。

入れ子を使うと、複数の条件を段階的に判定できます。

ただし、入れ子が深くなると読みにくくなるため、後で学ぶ &&else if で書き換えることもよくあります。

入れ子は 2 段までを目安に

入れ子は便利ですが、3 段、4 段と深くなるとコードが読みにくくなります。

深くなりそうな場合は、&& で条件をまとめる、else if で並列に書く、メソッドに切り出す(第 7 章以降で学習)などの工夫を検討してください。


関係演算子は、2 つの値を比較するための演算子です。

演算子意味
==等しいscore == 100
!=等しくないname != "山田"
>より大きいage > 20
>=以上score >= 60
<より小さいage < 20
<=以下score <= 100

C# では、=== は意味が違います。

記号意味
=代入score = 80;
==等しいか比較score == 80

次のコードは、score80 を代入しています。

score = 80;

次のコードは、score80 と等しいかを判定しています。

score == 80

注意

条件式で「等しい」を表したいときは、= ではなく == を使います。


文字列も ==!= で比較できます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("使用したい言語を入力してください。");
string language = Console.ReadLine();
if (language == "C#")
{
Console.WriteLine("C#を選択しました。");
}
else
{
Console.WriteLine("C#以外を選択しました。");
}
}
}
}

実行例:

使用したい言語を入力してください。
C#
C#を選択しました。

論理演算子を使うと、複数の条件を組み合わせられます。

演算子読み方意味
&&AND両方の条件が成り立つ
||ORどちらか一方の条件が成り立つ
!NOT条件を反転する

&& は、複数の条件がすべて成り立つ場合に true になります。

次のコードでは、点数が 0 以上 100 以下かどうかを判定します。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("点数を入力してください。");
string input = Console.ReadLine();
int score = int.Parse(input);
if (0 <= score && score <= 100)
{
Console.WriteLine("有効な点数です。");
}
else
{
Console.WriteLine("点数の範囲が正しくありません。");
}
}
}
}

実行例:

点数を入力してください。
80
有効な点数です。

実行例:

点数を入力してください。
120
点数の範囲が正しくありません。

0 <= score && score <= 100 は、次の意味です。

score が 0 以上 かつ score が 100 以下

|| は、複数の条件のうち 1 つ以上が成り立つ場合に true になります。

次のコードでは、入力された番号が 1 または 2 かどうかを判定します。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("メニュー番号を入力してください。");
Console.WriteLine("1: 登録");
Console.WriteLine("2: 検索");
string input = Console.ReadLine();
int menu = int.Parse(input);
if (menu == 1 || menu == 2)
{
Console.WriteLine("有効なメニュー番号です。");
}
else
{
Console.WriteLine("無効なメニュー番号です。");
}
}
}
}

実行例:

メニュー番号を入力してください。
1: 登録
2: 検索
1
有効なメニュー番号です。

! は、条件の結果を反転します。

bool isDeleted = false;
if (!isDeleted)
{
Console.WriteLine("このデータは表示対象です。");
}

!isDeleted は、isDeletedfalse のときに true になります。

isDeleted が false
!isDeleted は true

削除済みではないデータだけを表示したい、というような場面で使います。


&&|| には、条件が確定した時点で残りの式を評価しない という性質があります。これを 短絡評価(ショートサーキット評価)と呼びます。

// 左が false なので、右は評価されない
if (false && SomeCheck())
{
// 実行されない。さらに SomeCheck() も呼ばれない
}
// 左が true なので、右は評価されない
if (true || SomeCheck())
{
// 実行される。SomeCheck() は呼ばれない
}
演算子短絡の条件
&&左が false のとき、右を評価しない(全体は false で確定)
||左が true のとき、右を評価しない(全体は true で確定)

この性質は、第 11 章で学ぶ null チェック などで重要になります。今は「左から順に評価され、結果が決まったら右側は実行されない」と覚えておけば十分です。


条件式の結果は、bool 型の値として扱えます。

int score = 80;
bool isPassed = score >= 60;
Console.WriteLine(isPassed);

実行結果:

True

score >= 60 の結果が true なので、isPassedtrue が入ります。

次のように、bool 型の変数を if 文に使うこともできます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
int score = 80;
bool isPassed = score >= 60;
if (isPassed)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
}
}

switch 文は、1 つの値に応じて処理を分けるときに使います。

たとえば、入力されたメニュー番号によって処理を分ける場合に便利です。

1 → 登録
2 → 検索
3 → 終了
それ以外 → エラー

switch 文の基本形は次の通りです。

switch (値)
{
case 値1:
処理1;
break;
case 値2:
処理2;
break;
default:
どれにも当てはまらない場合の処理;
break;
}

case には、判定したい値を書きます。

default は、どの case にも当てはまらなかった場合に実行されます。


次のコードを入力して実行してください。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("メニューを選択してください。");
Console.WriteLine("1: 社員登録");
Console.WriteLine("2: 社員検索");
Console.WriteLine("3: 終了");
string input = Console.ReadLine();
int menu = int.Parse(input);
switch (menu)
{
case 1:
Console.WriteLine("社員登録を選択しました。");
break;
case 2:
Console.WriteLine("社員検索を選択しました。");
break;
case 3:
Console.WriteLine("終了します。");
break;
default:
Console.WriteLine("メニュー番号が正しくありません。");
break;
}
}
}
}

実行例:

メニューを選択してください。
1: 社員登録
2: 社員検索
3: 終了
2
社員検索を選択しました。

break は、switch 文の処理を抜けるために使います。

case 1:
Console.WriteLine("社員登録を選択しました。");
break;

C# の switch 文では、case の最後に break が必須 です。

// これはコンパイルエラーになる例
case 1:
Console.WriteLine("社員登録を選択しました。");
// break を書き忘れている
case 2:
Console.WriteLine("社員検索を選択しました。");
break;

case 1: の処理が終わったあと、次の case 2: に「すり抜けて落ちる」ことを フォールスルー と呼びます。

C++ や Java では暗黙的にフォールスルーが許されますが、C# は明示しない限り許可されませんbreak を書き忘れると次のようなコンパイルエラーが出ます。

コントロールが 1 つの case ラベル ('case 1:') から
別の case ラベルへフォール スルーすることはできません

C# でのフォールスルーは「明示」が必要

もし意図して次の case に処理を続けたい場合は、goto case を使うか、複数の case を連続で並べる(後述)書き方を使います。

業務コードでは、break で確実に区切る書き方が圧倒的に多いです。本研修でも break を必ず書く前提で進めます。


複数の値で同じ処理を行いたい場合は、case を並べて書きます。

switch (menu)
{
case 1:
case 2:
Console.WriteLine("登録または検索を選択しました。");
break;
case 3:
Console.WriteLine("終了します。");
break;
}

case 1:case 2: のように並べた場合、どちらの値でも同じ処理が実行されます。この書き方は フォールスルーではない ため、コンパイルエラーになりません。


default は、どの case にも当てはまらない場合に実行されます。

default:
Console.WriteLine("メニュー番号が正しくありません。");
break;

入力ミスに対応するため、default はできるだけ書くようにしましょう。


switch 文は、文字列に対しても使えます。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("コマンドを入力してください。");
Console.WriteLine("add: 登録");
Console.WriteLine("search: 検索");
Console.WriteLine("exit: 終了");
string command = Console.ReadLine();
switch (command)
{
case "add":
Console.WriteLine("登録処理を行います。");
break;
case "search":
Console.WriteLine("検索処理を行います。");
break;
case "exit":
Console.WriteLine("終了します。");
break;
default:
Console.WriteLine("不明なコマンドです。");
break;
}
}
}
}

実行例:

コマンドを入力してください。
add: 登録
search: 検索
exit: 終了
search
検索処理を行います。

if 文と switch 文は、どちらも条件分岐に使えます。

使い方向いている場面
if範囲判定、複雑な条件、大小比較
switch値ごとに処理を分ける場合

例:

点数が60点以上かどうか
→ if文が向いている
メニュー番号が1、2、3のどれか
→ switch文が向いている

4-5 else if 構文を使った多分岐処理

Section titled “4-5 else if 構文を使った多分岐処理”

点数に応じて評価を分けたい場合を考えます。

90点以上 → A
80点以上 → B
70点以上 → C
60点以上 → D
60点未満 → E

このように、範囲ごとに処理を分けたい場合は、else if が向いています。


else if の基本形は次の通りです。

if (条件1)
{
条件1が成り立つときの処理
}
else if (条件2)
{
条件2が成り立つときの処理
}
else
{
どの条件にも当てはまらないときの処理
}

上から順番に条件を判定し、最初に成り立った条件の処理だけを実行します。


次のコードを入力して実行してください。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("点数を入力してください。");
string input = Console.ReadLine();
int score = int.Parse(input);
if (score >= 90)
{
Console.WriteLine("評価:A");
}
else if (score >= 80)
{
Console.WriteLine("評価:B");
}
else if (score >= 70)
{
Console.WriteLine("評価:C");
}
else if (score >= 60)
{
Console.WriteLine("評価:D");
}
else
{
Console.WriteLine("評価:E");
}
}
}
}

実行例:

点数を入力してください。
85
評価:B

else if では、条件を書く順番が重要です。

次のコードは、意図した判定になりません。

if (score >= 60)
{
Console.WriteLine("評価:D以上");
}
else if (score >= 80)
{
Console.WriteLine("評価:B以上");
}
else if (score >= 90)
{
Console.WriteLine("評価:A");
}

たとえば score95 の場合、最初の score >= 60 が成り立つため、そこで処理が終わります。

そのため、score >= 90 まで到達しません。

範囲を段階的に判定する場合は、条件の厳しいものから順に書くことが多いです。

90以上
80以上
70以上
60以上
それ以外

次のコードでは、購入金額に応じて送料を判定します。

Program.cs
namespace Ch04_Conditional
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("購入金額を入力してください。");
string input = Console.ReadLine();
int amount = int.Parse(input);
int shippingFee;
if (amount >= 5000)
{
shippingFee = 0;
}
else if (amount >= 3000)
{
shippingFee = 300;
}
else
{
shippingFee = 600;
}
Console.WriteLine($"購入金額:{amount}");
Console.WriteLine($"送料:{shippingFee}");
}
}
}

実行例:

購入金額を入力してください。
3500
購入金額:3500円
送料:300円

このように、ifelse ifelse を使うと、業務アプリでよくある判定処理を書けます。


この章でよくあるつまずきを確認します。

つまずき原因対応
if の条件に = を使ってしまう代入と比較を混同している比較には == を使う
if (score >= 60); と書いてしまう条件式の後ろにセミコロンを付けているif の直後に ; を付けない
{ } の範囲が分からないインデントが崩れているCtrl + KCtrl + D で整形する
else がどの if に対応するか分からない入れ子やインデントが複雑まず単純な構造で書く。深くなりすぎたら &&else if で書き換える
&&|| を混同するAND 条件と OR 条件の違いが曖昧「かつ」は &&、「または」は || と覚える
switchbreak を忘れるcase の終了を示していないC# では break が必須。書き忘れるとコンパイルエラー
else if の判定順を間違える広い条件を先に書いている厳しい条件から順に書く
int.Parse でエラーになる数字以外を入力しているこの章では数字を入力する。入力エラー対応は 第 15 章「例外処理」 で学ぶ

次の項目について、自分で説明できるか確認してください。

  • 条件分岐とは何かを説明できる
  • if 文の基本形を書ける
  • else の役割を説明できる
  • if 文の入れ子を読める
  • else if の役割を説明できる
  • switch 文の基本形を書ける
  • casebreakdefault の役割を説明できる
  • C# では break を書き忘れるとコンパイルエラーになることを説明できる
  • 複数の case を並べて同じ処理を行えることを知っている
  • === の違いを説明できる
  • != の意味を説明できる
  • && の意味を説明できる
  • || の意味を説明できる
  • ! の意味を説明できる
  • &&|| の短絡評価について簡単に説明できる
  • bool 型と条件式の関係を説明できる
  • 入力された値に応じて処理を変えるプログラムを作成できる

研修の進め方によっては、隣の人またはチーム内で説明確認を行います。

次の内容を、自分の言葉で説明してください。

  1. if 文はどのようなときに使いますか。
  2. else は何のために使いますか。
  3. === の違いは何ですか。
  4. &&|| の違いは何ですか。
  5. switch 文はどのような処理に向いていますか。
  6. C# の switchbreak を省略するとどうなりますか。
  7. else if で判定順序が重要になる理由は何ですか。
  8. 入れ子の if が深くなりすぎたとき、どんな書き換え方が考えられますか。

説明するときは、完全な答えでなくても構いません。自分の言葉で説明しようとすることが大切です。


この章の演習課題に取り組みます。

本章では タイマー方式 を試験導入します。次の 2 段階で進めてください。

段階時間内容
① ソロ作業25 分(タイマーで計測)一人で課題に取り組む。タイマーが鳴ったら、完成・未完成にかかわらず作業を止めて Git に提出する
② チーム時間講師が指定する発表開始時刻までチーム内でコードレビューを行い、発表者を決める。実装の続行も可。時間配分はチームで管理する

評価対象はタイマー時点で提出されたコードです(タイマー後に書き足した分は評価には含まれません)。 発表開始時刻は厳守 です。チーム時間中も、その時刻が来たら全員手を止めて発表に移ります。

演習の進め方の詳細は、付録A「演習の進め方」 を参照してください。


課題はソリューション Kadai04 の中に作成してください。

各課題のプロジェクト名は次の通りです。

課題プロジェクト名
課題4-1Kd04_01_PassFail
課題4-2Kd04_02_EvenOdd
課題4-3Kd04_03_ScoreRange
課題4-4Kd04_04_MenuSelect
課題4-5(発展)Kd04_05_GradeJudge
課題4-6(発展)Kd04_06_LoginCommand

補足:ソリューションに複数のプロジェクトを追加する方法

最初の課題で Kadai04 ソリューションと Kd04_01_PassFail プロジェクトを同時に作成します。

2 つ目以降の課題は、ソリューションエクスプローラーで Kadai04 を右クリックし、追加新しいプロジェクト から追加します。


以下は、本章のすべての課題に共通する作業です。各課題の本文には繰り返し書きません。

作業内容参照
プロジェクト作成時の設定最上位レベルのステートメントを使用しない」にチェック第 1 章 1-1
csproj の編集<Nullable>disable</Nullable> に変更第 1 章 1-1
コードを書く場所Main メソッドの中(本章 4-1 などのサンプル形式と同じ)4-1
ファイルを保存して実行Ctrl + S で保存 → F5 で実行第 1 章 1-2

特に 2 つ目以降のプロジェクト(Kd04_02_EvenOdd など)も、新規追加するたびに csproj の Nullable を disable に変更する 必要があります。忘れると警告が出やすくなります。

演習課題のコードは、本文と同じ namespace + class Program + Main の枠組みの中に書きます。

提出ルール(タイマー方式)

  • 演習スタートと同時に、25 分のタイマー をセットします
  • タイマーが鳴ったら、完成・未完成にかかわらず手を止め、その場で git addgit commitgit push を行います
  • これがこの演習の 唯一の提出 です。タイマー後も実装を続けて構いませんが、書き足した分は評価対象には含まれません

コミットメッセージの形式:

Chapter04 タイマー提出: <どの課題まで完成> / <詰まったポイント>

例:

  • Chapter04 タイマー提出: 4-1〜4-3完成、4-4は途中 / 4-4 の switch の書き方で詰まっている
  • Chapter04 タイマー提出: 4-1〜4-4全て完成、発展未着手 / 特になし
  • Chapter04 タイマー提出: 4-2の途中まで / int と string を + で繋げない理由が不明

「どこまでできたか」「詰まったポイント」は短くて構いません。順調なときも「特になし」と明示 してください(順調さの証拠になります)。

タイマー後のチーム時間の使い方

タイマー後、講師が指定する 発表開始時刻 までがチーム時間です。チーム内で次の 3 つを自由に管理してください。

  • コードレビュー:他のメンバーの commit を読んで、気づいたことを共有する
  • 発表者の選出:発表開始時刻に、チームから 1 人が要点を発表できるよう、誰が話すかを決めておく
  • 実装の続行(任意):途中だった課題を続けても構いません(提出後の追加分は評価対象外ですが、理解を深める意義はあります)

どの順番で進めるか、何分ずつ使うかはチームの判断です。ただし 発表開始時刻は厳守 です。その時刻までにレビューと発表者選出を必ず終わらせてください。


まずは、全員が必須課題に取り組んでください。


点数を入力し、60 点以上なら「合格です。」、60 点未満なら「不合格です。」と表示してください。

実行例:

点数を入力してください。
75
合格です。

実行例:

点数を入力してください。
45
不合格です。

条件:

  • Console.ReadLine を使う
  • int.Parse を使う
  • if-else を使う

整数を入力し、偶数か奇数かを判定してください。

実行例:

整数を入力してください。
12
偶数です。

実行例:

整数を入力してください。
7
奇数です。

条件:

  • % を使う
  • if-else を使う

点数を入力し、0 以上 100 以下なら「有効な点数です。」、それ以外なら「不正な点数です。」と表示してください。

実行例:

点数を入力してください。
85
有効な点数です。

実行例:

点数を入力してください。
120
不正な点数です。

条件:

  • && を使う
  • if-else を使う

メニュー番号を入力し、選択内容を表示してください。

1: 登録
2: 検索
3: 終了

実行例:

メニューを選択してください。
1: 登録
2: 検索
3: 終了
2
検索を選択しました。

条件:

  • switch 文を使う
  • default を書く
  • 不正な番号の場合は「メニュー番号が正しくありません。」と表示する

必須課題が終わった人は、発展課題に取り組んでください。


点数を入力し、次の基準で評価を表示してください。

点数評価
90点以上A
80点以上90点未満B
70点以上80点未満C
60点以上70点未満D
60点未満E

実行例:

点数を入力してください。
82
評価:B

条件:

  • else if を使う
  • 判定順序に注意する

課題4-6 ログイン → コマンド処理

Section titled “課題4-6 ログイン → コマンド処理”

ユーザー ID とパスワードを入力してログインし、ログイン成功時のみコマンドを入力させて処理内容を表示してください。 ログイン失敗時は、その時点で終了します(コマンド入力に進みません)。

正しい認証情報

項目
ユーザーIDadmin
パスワードcsharp

コマンド一覧

コマンド表示内容
add登録処理を行います。
list一覧表示を行います。
search検索処理を行います。
exit終了します。
それ以外不明なコマンドです。

実行例(ログイン成功):

ユーザーIDを入力してください。
admin
パスワードを入力してください。
csharp
ログイン成功
コマンドを入力してください。
search
検索処理を行います。

実行例(ログイン失敗):

ユーザーIDを入力してください。
admin
パスワードを入力してください。
wrong
ログイン失敗

条件:

  • ユーザー ID とパスワードの比較に string== を使う
  • ログイン判定に && を使う
  • ログイン失敗時はコマンド入力ステップに進まない(if-else でフロー制御する)
  • コマンドの判定に switch 文を使い、default を書く

ヒント:認証 → 操作の流れ

現場の業務アプリでは「まずログイン、その後に各種操作」というフローが一般的です。 この課題はその流れをミニ版で体験する内容です。 if (ログイン成功) { ... コマンド処理 ... } else { ログイン失敗を表示 } の構造で組み立てます。


提出前に、次の項目を確認してください。

  • プログラムを Visual Studio から実行できる
  • if 文を使っている
  • else を使っている
  • 必要に応じて else if を使っている
  • 必要に応じて switch 文を使っている
  • === を正しく使い分けている
  • && または || を使った条件を書ける
  • 入力値を使って条件分岐している
  • defaultelse で想定外の入力に対応している
  • セミコロンの付け忘れがない
  • if の条件式の直後に不要な ; がない
  • インデントが整っている
  • Git に commit している
  • Git に push している

タイマーが鳴ったら、第 4 章の課題プロジェクト群(Kadai04 ソリューション)をその場で Git に提出します。

Terminal window
git status
git add .
git commit -m "Chapter04 タイマー提出: <どこまで完成> / <詰まったポイント>"
git push

実行例:

Terminal window
git commit -m "Chapter04 タイマー提出: 4-1〜4-3完成、4-4は途中 / 4-4 の switch の使いどころで悩んだ"

Git の詳しい操作は、付録 C「Git のインストールと提出ルール」 を参照してください。

コミットメッセージの形式は、本章冒頭「演習課題 > 提出ルール(タイマー方式)」を参照してください。


この章では、条件に応じた処理について学習しました。

この章で学んだ主な内容は次の通りです。

  • 条件によって処理を変えることを条件分岐という
  • if 文を使うと、条件が成り立つときだけ処理を実行できる
  • else を使うと、条件が成り立たない場合の処理を書ける
  • if 文は入れ子にもできるが、深くなりすぎないように注意する
  • else if を使うと、複数の条件を順番に判定できる
  • switch 文を使うと、値ごとに処理を分けられる
  • C# の switch 文では break が必須(暗黙のフォールスルーは不可)
  • 複数の case を並べて書くことで、同じ処理を共有できる
  • default は、どの case にも当てはまらない場合に実行される
  • == は比較、= は代入である
  • && は「かつ」、|| は「または」、! は否定を表す
  • &&|| は短絡評価され、結果が確定した時点で残りの式は評価されない
  • 条件式の結果は true または false になる
  • 条件分岐では、判定順序や条件の範囲に注意する必要がある

次章では、繰り返し処理 を学習します。

繰り返し処理を使うと、同じような処理を何度も書かずに、条件や回数に応じて繰り返し実行できるようになります。

この章で学んだ条件式は、繰り返し処理の「いつ止めるか」という判定にも使います。