Day7 後半のゴール
Day7 後半では、前半で学んだ 数当てゲーム・BMI判定ツール・成績管理プログラム を、 実際に「完成形のプログラム」として組み立てていきます。 前半では“考え方”を中心に整理しましたが、後半では コードの流れ・重要ポイント・初心者がつまずきやすい点 を丁寧に深掘りしていきます。
数当てゲームを完成させる
ゲームとして成立させるためのポイント
数当てゲームは、次の 3 つの要素がそろうことで成立します。
正解の数字を決める(変数) ユーザーに入力してもらう(入力処理) 当たるまで繰り返す(while + break)
初心者が最もつまずきやすいのは「繰り返しの終了条件」です。 while(true) で無限ループを作り、正解したら break で抜けるという構造が最もシンプルで理解しやすいです。
完成コードと解説
Random rand = new Random();
int answer = rand.Next(1, 101); // 1〜100の中からランダムに選ぶ
int input;
Console.WriteLine("数当てゲームを開始します!(1〜100)");
while (true)
{
Console.Write("数字を入力してください:");
input = int.Parse(Console.ReadLine());
if (input > answer)
{
Console.WriteLine("もっと小さいです");
}
else if (input < answer)
{
Console.WriteLine("もっと大きいです");
}
else
{
Console.WriteLine("正解です!");
break;
}
}
C#深掘りポイント
rand.Next(1, 101) は「1〜100のランダムな整数」を生成します。 上限は「含まれない」ため、101 と書く必要があります。
while(true) は「ずっと繰り返す」構造で、 break が「ゲーム終了」の役割を持ちます。
この「無限ループ+break」は、 ゲーム・メニュー選択・入力チェックなど、実務でも頻繁に使われる重要パターンです。
BMI判定ツールを完成させる
入力 → 計算 → 判定 の流れを作る
BMI判定ツールは、次の 3 ステップで構成されます。
身長と体重を入力してもらう BMIを計算する 条件分岐で判定する
ここで初心者がつまずきやすいのは「身長をメートルで扱う」点です。 170cm と入力された場合は 1.7 に変換する必要があります。
完成コードと解説
Console.Write("身長(cm)を入力してください:");
double heightCm = double.Parse(Console.ReadLine());
double height = heightCm / 100.0; // メートルに変換
Console.Write("体重(kg)を入力してください:");
double weight = double.Parse(Console.ReadLine());
double bmi = weight / (height * height);
Console.WriteLine("BMI: " + bmi);
if (bmi < 18.5)
{
Console.WriteLine("低体重です");
}
else if (bmi < 25.0)
{
Console.WriteLine("普通体重です");
}
else
{
Console.WriteLine("肥満です");
}
C#深掘りポイント
double 型を使う理由 BMI は小数点を含むため、int では正しい計算ができません。
heightCm / 100.0 100 ではなく 100.0 と書くことで「小数として割り算」になります。 整数同士の割り算は小数点が切り捨てられるため注意が必要です。
条件分岐の順番 bmi < 18.5 bmi < 25.0 それ以外
この順番で書くことで、BMI の範囲を正しく判定できます。
成績管理プログラムを完成させる
配列 × ループ × 条件分岐 の総まとめ
成績管理プログラムは、Day6 までの内容をすべて使う総合問題です。
扱う処理は次のとおりです。
配列で複数の点数を管理する 合計を求める 平均を求める 最大値・最小値を求める
初心者がつまずきやすいのは「最大値・最小値の初期値」です。 必ず scores[0] を基準にする ことが重要です。
完成コードと解説
int[] scores = { 80, 75, 90, 60, 88 };
int total = 0;
int max = scores[0];
int min = scores[0];
for (int i = 0; i < scores.Length; i++)
{
total += scores[i];
if (scores[i] > max)
max = scores[i];
if (scores[i] < min)
min = scores[i];
}
double average = (double)total / scores.Length;
Console.WriteLine("合計: " + total);
Console.WriteLine("平均: " + average);
Console.WriteLine("最大値: " + max);
Console.WriteLine("最小値: " + min);
C#深掘りポイント
max = scores[0] / min = scores[0] 0 を基準にすると、 点数がすべて負の値だった場合に正しく動きません。
(double)total / scores.Length キャストすることで「小数として割り算」できます。 整数同士の割り算は小数点が切り捨てられるため注意が必要です。
Length を使う理由 配列のサイズが変わっても安全に処理できるため、 固定値(5など)を書くよりも圧倒的に安全です。
Day7 後半のまとめ
Day7 後半では、次の 3 つのプログラムを「完成形」として組み立てました。
数当てゲーム → 無限ループ+break の重要パターン BMI判定ツール → double 型・メートル変換・条件分岐 成績管理プログラム → 配列 × ループ × 最大値・最小値・平均
これらは、C# の基礎文法をひとつの流れとして理解するための最適な題材です。

