基礎から学ぶC#入門 90日コース | 制御構文・メソッド - Day 16:引数と戻り値

Web APP 90日で身につけるC#
スポンサーリンク
スポンサーリンク

Day 16 のゴールと全体イメージ

Day 16 では、メソッドを一気に「実用レベル」に引き上げる重要なテーマである 引数と戻り値 を学びます。 昨日の Day 15 では「処理のかたまりに名前をつける」ことを学びましたが、 今日はそこに「入力(引数)」と「出力(戻り値)」を加えて、

「メソッドに値を渡して、計算した結果を受け取る」

という流れを身につけていきます。

学ぶことは次のとおりです。

  • 引数
  • 戻り値
  • return
  • 複数引数

これらをステップバイステップでかみ砕きながら、 初心者の方でも自然に「メソッドで計算して結果を返す」コードを書けるようになることを目指します。

引数とは何か

「メソッドに渡す入力データ」

引数(ひきすう)とは、

「メソッドに渡すための値」

のことです。

メソッドは「処理のかたまり」ですが、 その処理が「何を対象にするか」を指定するために、引数を使います。

例えば、

  • 「この名前で挨拶してほしい」
  • 「この 2 つの数の合計を計算してほしい」
  • 「このメッセージを何回表示してほしい」

といったときに、メソッドに値を渡します。

引数付きメソッドの基本形

1 つの引数を持つメソッド

基本形は次のようになります。

戻り値の型 メソッド名(引数の型 引数名)
{
    // 引数を使った処理
}
C#

まずは戻り値なし(void)で、引数だけを持つメソッドを見てみます。

static void Greet(string name)
{
    Console.WriteLine($"こんにちは、{name} さん!");
}
C#

この Greet メソッドは、

  • name という引数を受け取り
  • その name を使って挨拶文を表示する

という役割を持っています。

呼び出し側は次のようになります。

static void Main(string[] args)
{
    Greet("太郎");   // name に "太郎" が渡されます
    Greet("花子");   // name に "花子" が渡されます

    Console.ReadLine();
}
C#

重要ポイント:

  • 引数は「メソッドに渡す入力データ」です。
  • メソッド定義側では「型」と「名前」を書きます(例:string name)。
  • 呼び出し側では、実際の値(例:"太郎")を渡します。

戻り値とは何か

「メソッドから返される結果」

戻り値(もどりち)とは、

「メソッドが処理を行った結果として、呼び出し元に返す値」

のことです。

例えば、

  • 「2 つの数の合計」
  • 「BMI の計算結果」
  • 「合格か不合格かの判定結果」

などを、メソッドの戻り値として返すことができます。

戻り値付きメソッドの基本形

return で値を返す

戻り値付きメソッドの基本形は次のようになります。

戻り値の型 メソッド名(引数リスト)
{
    // 何らかの計算や処理
    return 戻り値; // 戻り値の型と一致する値を返します
}
C#

例えば、2 つの整数の合計を計算するメソッドは次のようになります。

static int Add(int a, int b)
{
    int result = a + b; // 合計を計算します
    return result;      // 計算結果を呼び出し元に返します
}
C#

呼び出し側は次のようになります。

static void Main(string[] args)
{
    int x = 5;
    int y = 10;

    int sum = Add(x, y); // Add(5, 10) の結果が sum に入ります

    Console.WriteLine($"合計:{sum}");
    Console.ReadLine();
}
C#

重要ポイント:

  • メソッドの先頭に書く「戻り値の型」(ここでは int)と、return で返す値の型は一致している必要があります。
  • return は「この値を返して、メソッドの処理を終了する」という意味を持ちます。
  • 呼び出し側では、戻り値を変数に受け取ったり、そのまま使ったりできます。

void と戻り値ありの違い

「返すものがあるかどうか」

  • void メソッド
    • 戻り値を返しません。
    • 「何かをする」ことが目的のメソッドです(例:表示、ログ出力など)。
  • 戻り値ありメソッド(例:intstring など)
    • return で値を返します。
    • 「計算して結果を返す」ことが目的のメソッドです。

イメージとしては、

  • void → 「作業だけして終わる人」
  • 戻り値あり → 「作業して結果を持って帰ってくる人」

と考えると分かりやすいです。

例1:BMI を計算するメソッド

引数と戻り値を両方使う

少し実用的な例として、BMI を計算するメソッドを作ってみます。

BMI の計算式は次のとおりです。

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

これをメソッドにすると、次のようになります。

using System;

class Program
{
    // BMI を計算するメソッド
    static double CalculateBmi(double weightKg, double heightM)
    {
        double bmi = weightKg / (heightM * heightM); // BMI を計算します
        return bmi;                                  // 計算結果を返します
    }

    static void Main(string[] args)
    {
        Console.WriteLine("体重(kg)を入力してください:");
        double weight = double.Parse(Console.ReadLine());

        Console.WriteLine("身長(m)を入力してください:");
        double height = double.Parse(Console.ReadLine());

        // メソッドに体重と身長を渡して、BMI を計算してもらいます
        double bmi = CalculateBmi(weight, height);

        Console.WriteLine($"あなたの BMI は {bmi:F2} です。"); // 小数点以下 2 桁で表示
        Console.ReadLine();
    }
}
C#

ここでのポイント:

  • 引数として「体重」と「身長」を渡しています。
  • メソッドの中で BMI を計算し、その結果を戻り値として返しています。
  • 呼び出し側では、戻り値を bmi 変数に受け取って表示しています。

このように、

「入力(引数) → 処理 → 出力(戻り値)」

という流れが、メソッドの基本的な役割です。

複数引数とは

「カンマで区切って複数の値を渡す」

メソッドは、引数を 1 つだけでなく、複数持つことができます。

定義側では、次のようにカンマで区切って書きます。

static int Add(int a, int b, int c)
{
    return a + b + c;
}
C#

呼び出し側では、同じ順番で値を渡します。

int result = Add(1, 2, 3); // a=1, b=2, c=3 が渡されます
C#

重要ポイント:

  • 引数は「型」と「名前」をセットで書き、複数ある場合はカンマで区切ります。
  • 呼び出し側では、定義と同じ順番で値を渡します。
  • 「何を渡すか」「何を返すか」を意識して設計すると、メソッドの役割が明確になります。

例2:2 つの数値の大小を判定するメソッド

戻り値で「結果」を返す

次のような仕様を考えてみます。

「2 つの整数を受け取り、大きい方の値を返す。」

これをメソッドにすると、次のようになります。

using System;

class Program
{
    // 2 つの整数のうち、大きい方を返すメソッド
    static int Max(int a, int b)
    {
        if (a >= b)
        {
            return a; // a の方が大きい(または同じ)場合は a を返します
        }
        else
        {
            return b; // b の方が大きい場合は b を返します
        }
    }

    static void Main(string[] args)
    {
        Console.WriteLine("1つ目の整数を入力してください:");
        int x = int.Parse(Console.ReadLine());

        Console.WriteLine("2つ目の整数を入力してください:");
        int y = int.Parse(Console.ReadLine());

        int bigger = Max(x, y); // Max メソッドで大きい方を判定してもらいます

        Console.WriteLine($"大きい方の値は {bigger} です。");
        Console.ReadLine();
    }
}
C#

ここでのポイント:

  • 引数として 2 つの整数を受け取っています。
  • 条件分岐で「どちらが大きいか」を判定し、return で結果を返しています。
  • 呼び出し側では、戻り値を bigger 変数に受け取って表示しています。

return の役割をもう少し深掘りする

「値を返す」と「処理を終える」

return には 2 つの役割があります。

  1. 値を返す(戻り値ありメソッドの場合)
  2. メソッドの処理をそこで終了する

例えば、次のようなメソッドを考えてみます。

static int SafeDivide(int a, int b)
{
    if (b == 0)
    {
        Console.WriteLine("0 で割ることはできません。");
        return 0; // ここでメソッドを終了し、0 を返します
    }

    int result = a / b;
    return result; // 正常な結果を返します
}
C#

ポイント:

  • b == 0 のときに return 0; が実行されると、その時点でメソッドは終了します。
  • それ以降の処理(int result = a / b; など)は実行されません。
  • return は「ここで終わり」という区切りの役割も持っています。

練習テンプレート:自分で引数と戻り値を設計してみる

合計と平均を計算するメソッド

using System;

class Program
{
    // 2 つの数値の合計を返すメソッド
    static int Add(int a, int b)
    {
        return a + b;
    }

    // 2 つの数値の平均を返すメソッド
    static double Average(int a, int b)
    {
        int sum = Add(a, b);       // 先ほどの Add メソッドを再利用します
        double avg = (double)sum / 2;
        return avg;
    }

    static void Main(string[] args)
    {
        Console.WriteLine("1つ目の整数を入力してください:");
        int x = int.Parse(Console.ReadLine());

        Console.WriteLine("2つ目の整数を入力してください:");
        int y = int.Parse(Console.ReadLine());

        int sum = Add(x, y);
        double avg = Average(x, y);

        Console.WriteLine($"合計:{sum}");
        Console.WriteLine($"平均:{avg}");
        Console.ReadLine();
    }
}
C#

このテンプレートでは、

  • 引数と戻り値を持つメソッドを 2 つ定義し
  • 片方のメソッド(Average)の中で、もう片方のメソッド(Add)を再利用しています。

「メソッド同士を組み合わせる」感覚を育てるのに良い練習になります。

Day 16 のまとめ

Day 16 では、

  • 引数:メソッドに渡す入力データ
  • 戻り値:メソッドが処理した結果として返す値
  • return:値を返し、メソッドの処理を終了する命令
  • 複数引数:カンマで区切って複数の値を渡す

という 4 つの軸で、メソッドを「入力と出力を持つ部品」として扱う方法を学びました。

これにより、メソッドは単なる「処理のかたまり」から、

「値を受け取り、計算して、結果を返す小さな機能」

へと進化します。

ぜひ、

  • 自分で「どんな入力を受け取って、どんな結果を返したいか」を考えてメソッドを設計してみる
  • 引数の数や型を変えて、いろいろなパターンを試してみる
  • 既に書いた処理を「引数と戻り値を持つメソッド」に切り出してみる

といった練習を通して、「メソッドを使ってプログラムを組み立てる力」を少しずつ育てていってください。

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