C# | 1 日 60 分 × 7 日アプリ学習:C#基礎・オブジェクト指向 BMI計算機編

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

1日目のゴールと全体像

BMI計算機 1日目のテーマは 「メソッドを使って“BMIを計算する処理”をきれいに分けたシンプルなコンソールアプリを作ること」 です。

この日は C# の中でも特に重要な

  • 基本文法(変数・型・Console入出力)
  • メソッド(処理の部品化)
  • クラスという“箱”のイメージ

を、BMIという分かりやすい題材で体験していきます。 まだコレクション・LINQ・ファイル操作には踏み込みません。 まずは「1人分のBMIを正しく計算できるアプリ」を完成させることが目標です。

BMIとは何かをコードの前に整理する

BMIの計算式

BMIは体格を表す指標で、次の式で計算します。

BMI = 体重(kg) ÷ 身長(m)²

例:

  • 体重 60kg
  • 身長 1.70m

なら

BMI = 60 ÷ (1.70 × 1.70) ≒ 20.76

この「計算式」をそのまま C# のメソッドにしていきます。

C#の基本文法で「BMI計算」をイメージする

まずは“素のコード”で考える

BMIを計算するだけなら、極端に言えばこう書けます。

double weight = 60.0;   // 体重(kg)
double height = 1.70;   // 身長(m)

double bmi = weight / (height * height);  // BMI計算

Console.WriteLine(bmi);
C#

ここから一歩進んで、

  • ユーザーに体重・身長を入力してもらう
  • 計算処理をメソッドに分ける

という「アプリらしい形」にしていきます。

メソッドとは何か(BMIで直感的に理解する)

メソッドの役割

メソッドは 「名前のついた処理のかたまり」 です。

BMI計算なら、こんなイメージになります。

  • メソッド名:CalculateBmi
  • 入力(引数):体重、身長
  • 出力(戻り値):BMI値

「BMIを計算したいときは CalculateBmi を呼ぶ」 という“部品”を作るイメージです。

BMI計算メソッドを作る(最重要パート)

設計

  • 戻り値の型:double(小数を扱うため)
  • 引数:double weightKg, double heightMeter
  • 中身:BMI計算式そのもの

コード(丁寧なコメント付き)

// BMIを計算するメソッド
static double CalculateBmi(double weightKg, double heightMeter)
{
    // 身長(m)の2乗を計算
    double heightSquared = heightMeter * heightMeter;

    // BMI = 体重(kg) ÷ 身長(m)^2
    double bmi = weightKg / heightSquared;

    // 計算結果を呼び出し元に返す
    return bmi;
}
C#

深掘りポイント

  • static は「クラスに属するメソッド」で、 今回のような小さなコンソールアプリではよく使います。
  • double は小数を扱う型で、BMIのような値に向いています。
  • return は「計算結果を呼び出し元に渡す」ためのキーワードです。

このメソッドを作ることで、 「BMI計算」という処理が1か所にまとまり、再利用しやすくなる というメリットが生まれます。

BMIの判定(やせ・標準・肥満など)もメソッドにする

計算だけでなく、「結果をどう解釈するか」もメソッドにできます。

判定の例(ざっくりした区分)

  • 18.5 未満:低体重(やせ)
  • 18.5〜25 未満:普通体重
  • 25 以上:肥満

判定メソッド

// BMI値から判定メッセージを返すメソッド
static string ClassifyBmi(double bmi)
{
    if (bmi < 18.5)
    {
        return "低体重(やせ)";
    }
    else if (bmi < 25.0)
    {
        return "普通体重";
    }
    else
    {
        return "肥満";
    }
}
C#

深掘りポイント

  • if / else if / else は「条件によって処理を分ける」基本文法。
  • 判定ロジックをメソッドに閉じ込めることで、 後から基準を変えたいときもこのメソッドだけ直せばよくなります。

ユーザー入力を受け取る(Console.ReadLine)

コンソールアプリでは、 Console.ReadLine() を使って文字列として入力を受け取り、 double.Parse() で数値に変換します。

Console.Write("体重(kg)を入力してください: ");
string weightInput = Console.ReadLine();      // 文字列として入力を受け取る
double weight = double.Parse(weightInput);    // doubleに変換

Console.Write("身長(cm)を入力してください: ");
string heightInput = Console.ReadLine();
double heightCm = double.Parse(heightInput);

// cm を m に変換(例: 170cm → 1.70m)
double heightMeter = heightCm / 100.0;
C#

深掘りポイント

  • コンソール入力は必ず「文字列」で入ってくる。
  • 数値として計算したいときは double.Parse() などで変換する。
  • 身長は cm で入力してもらい、内部では m に変換する方が直感的。

1日目の完成コード(シンプルBMI計算コンソールアプリ)

ここまでの要素を全部まとめると、 「1人分のBMIを計算して判定まで表示する」 最小だけど実用的なアプリになります。

using System;

class BmiApp
{
    static void Main(string[] args)
    {
        // 体重の入力
        Console.Write("体重(kg)を入力してください: ");
        string weightInput = Console.ReadLine();
        double weightKg = double.Parse(weightInput); // 文字列 → double

        // 身長の入力(cm)
        Console.Write("身長(cm)を入力してください: ");
        string heightInput = Console.ReadLine();
        double heightCm = double.Parse(heightInput);

        // cm を m に変換
        double heightMeter = heightCm / 100.0;

        // BMIを計算(メソッド呼び出し)
        double bmi = CalculateBmi(weightKg, heightMeter);

        // BMI判定(メソッド呼び出し)
        string category = ClassifyBmi(bmi);

        // 結果表示
        Console.WriteLine();
        Console.WriteLine("=== BMI計算結果 ===");
        Console.WriteLine($"体重: {weightKg} kg");
        Console.WriteLine($"身長: {heightMeter:F2} m");
        Console.WriteLine($"BMI: {bmi:F2}");
        Console.WriteLine($"判定: {category}");
    }

    // BMIを計算するメソッド
    static double CalculateBmi(double weightKg, double heightMeter)
    {
        double heightSquared = heightMeter * heightMeter;
        double bmi = weightKg / heightSquared;
        return bmi;
    }

    // BMI値から判定メッセージを返すメソッド
    static string ClassifyBmi(double bmi)
    {
        if (bmi < 18.5)
        {
            return "低体重(やせ)";
        }
        else if (bmi < 25.0)
        {
            return "普通体重";
        }
        else
        {
            return "肥満";
        }
    }
}
C#

コードのポイントをもう一度整理

  • Main は「アプリの入口」であり、 入力 → 計算 → 判定 → 表示という“流れ”だけを書いている。
  • 計算ロジックは CalculateBmi に、 判定ロジックは ClassifyBmi に分離されている。
  • これが「メソッドで処理を部品化する」という、 オブジェクト指向の入り口になる考え方です。

1日目で本当に掴んでほしいこと

1. メソッドは「名前のついた処理のかたまり」

  • CalculateBmi
  • ClassifyBmi

この2つのメソッドを作ることで、 「BMI計算」と「判定」がコード上で“見える化”されます。

2. Mainは“流れ”だけを書く

  • 入力
  • 計算
  • 判定
  • 表示

という流れを Main に書き、 細かい処理はメソッドに任せる。 このスタイルが身につくと、 コードが一気に読みやすくなります。

3. 型と変数を意識する

  • double は小数
  • string は文字列
  • Console.ReadLine() は文字列を返す
  • double.Parse() で数値に変換

このあたりの「基本文法」が、 後のクラス・コレクション・LINQ・ファイル操作の土台になります。

次のステップ

2日目以降では、この BMI 計算機を

  • 複数人分のBMIを扱う(コレクション)
  • 平均BMIや最大・最小をLINQで集計する
  • CSVファイルに保存・読み込みする
  • Personクラスを作って「人」をオブジェクトとして扱う

といった形で育てていきます。

1日目のこの小さなコンソールアプリが、 「C#でアプリを育てていく感覚」のスタート地点 になります。

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