【Kotlin】レッスン3-03:関数の戻り値を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:関数の戻り値

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造(レッスン1~2)関数の定義と呼出しデフォルト引数とキーワード引数関数の戻り値真偽値を返す関数関数のオーバーロードジェネリクスの基礎

<<前のページ Kotlin記事一覧 次のページ>>

Kotlinの「関数の戻り値」とは

この章ではKotlinにおける「関数の戻り値」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




Kotlinの関数では計算結果や処理の結果を呼び出し元に返す仕組みがあり、これを「戻り値」と呼びます。

本記事では、戻り値の基本的な使い方について解説します。

関数の戻り値とは?

関数の戻り値とは、関数が処理を終えた後に結果を返す値のことです。

戻り値を使うことで関数が計算や処理した結果を他の処理に活用できます。

例えば2つの数値を加算する関数があれば、その計算結果を戻り値として返すことが可能です。

戻り値の基本構文

Kotlinの関数で戻り値を返す際にはreturnキーワードを使用します。

また、関数の定義時に戻り値の型を明示する必要があります。

戻り値がない場合にはUnit型を指定しますが、Unitは省略可能です。

// 戻り値がある関数
fun add(a: Int, b: Int): Int { // 2つの引数を持ち、Int型の戻り値を返すadd関数を定義
    return a + b // 戻り値としてa+bを返す
}

// 戻り値がない関数(Unit型)
fun printMessage(message: String) {
    println(message)
// 省略しないなら以下のように書く
// fun printMessage(message: String): Unit {
}

上記の例ではadd関数がInt型の戻り値を持ち、printMessage関数は戻り値を持ちません。

戻り値の使用例

次に、戻り値を使った実際の例を見てみましょう。

// 数値を加算し、結果を返す関数
fun calculateSum(x: Int, y: Int): Int { // 2つの引数を持ち、Int型の戻り値を返すcalculateSum関数を定義
    return x + y // この関数の戻り値(x+y)
}

// 関数を呼び出して結果を利用する
fun main() {
    val sum = calculateSum(5, 10)  // calculateSum関数に2つの引数を渡し、戻り値を定数sumに代入
    println("計算結果は $sum です") // 出力:計算結果は15です
}

この例では、calculateSum関数が2つの引数を受け取り、その合計をreturnキーワードを使って呼び出し元に返します。

呼び出し元のmain関数では、返された値をsum変数に代入し、printlnで出力しています。

また、早期リターンを利用して特定の条件で処理を終了することも可能です。

fun isPositive(number: Int): Boolean {
    if (number > 0) {
        return true
    }
    return false
}

この関数は引数が正の数かどうかを判定し、結果を呼び出し元に返します。

まとめ

【初心者向け】Kotlinの関数の使い方を分かりやすくまとめた概念図。 特に関数の呼び出しや戻り値、関数のオーバーロード、ジェネリクス、デフォルト引数とキーワード引数について視覚的に理解できるようまとめている。

Kotlinの関数で戻り値を使うことで関数が処理した結果を柔軟に活用できます。

戻り値の型を明示し、適切にreturnキーワードを使うことが重要です。

戻り値の仕組みを活用すれば、効率的で読みやすいコードを書くことができるでしょう。

関数の戻り値の練習問題:簡単な計算プログラムを作成しよう

ユーザーが入力した2つの数値を加算し、その合計を計算して出力するプログラムを作成してください。

このプログラムでは関数を使って計算結果を戻り値として返し、メイン関数でその結果を利用します。

また数値以外が入力された場合にはエラーメッセージを表示するようにしてください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. 関数addNumbersを作成し、2つの整数を引数として受け取り、その合計を戻り値として返すこと。
  2. メイン関数で以下の処理を実装すること:
    • ユーザーから2つの数値を入力する。
    • 入力値を整数に変換し、関数addNumbersを呼び出す。
    • 計算結果を画面に表示する。
    • 入力が数値でない場合は例外処理でエラーメッセージを表示する。
  3. 必要に応じてtry-catch構文を使用してエラーハンドリングを行うこと。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

1つ目の数を入力してください:
10
2つ目の数を入力してください:
20
2つの数の合計は: 30 です

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:関数addNumbersの定義
  □ 戻り値として2つの整数の合計を返す
2:main関数の定義
  □ 「1つ目の数を入力してください:」と出力
  □ ユーザーからの入力をreadLine()で受け取り、デフォルト値”0″を設定して変数input1に代入
  □ 「2つ目の数を入力してください:」と出力
  □ ユーザーからの入力をreadLine()で受け取り、デフォルト値”0″を設定して変数input2に代入
  □ tryブロックの開始
  □ □ input1を整数に変換して変数number1に代入
  □ □ input2を整数に変換して変数number2に代入
  □ □ addNumbers関数を呼び出し、結果を変数resultに代入
  □ □ 「2つの数の合計は: {result} です」と出力
  □ catchブロックでNumberFormatExceptionを捕捉
  □ □ 「エラー: 数値を入力してください」と出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

// 二つの整数を加算する関数
fun addNumbers(a: Int, b: Int): Int {
    /* 【穴埋め問題1】
    ここで戻り値として2つの整数を加算した結果を返すコードを書いてください。
    */
}

// メイン関数
fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0" // Null安全のためにデフォルト値を設定
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"

    try {
        // 入力を整数に変換
        val number1 = input1.toInt()
        val number2 = input2.toInt()

        // 関数を呼び出して結果を受け取る
        /* 【穴埋め問題2】
        ここでaddNumbers関数を呼び出し、結果を変数resultに代入するコードを書いてください。
        */

        // 結果を表示
        println("2つの数の合計は: $result です")
    } catch (e: NumberFormatException) {
        // 数値以外が入力された場合の例外処理
        println("エラー: 数値を入力してください")
    }
}

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

// 二つの整数を加算する関数
fun addNumbers(a: Int, b: Int): Int {
    // 戻り値を指定するにはreturnを使用します。
    return a + b
}

// メイン関数
fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0" // Null安全のためにデフォルト値を設定
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"

    try {
        // 入力を整数に変換
        val number1 = input1.toInt()
        val number2 = input2.toInt()

        // 関数を呼び出して結果を受け取る
        val result = addNumbers(number1, number2)

        // 結果を表示
        println("2つの数の合計は: $result です")
    } catch (e: NumberFormatException) {
        // 数値以外が入力された場合の例外処理
        println("エラー: 数値を入力してください")
    }
}

正解コードの解説

今回のコードは、2つの数値を入力してその合計を計算するプログラムです。

このコードをブロックごとに分解して解説します。

関数addNumbersの定義

fun addNumbers(a: Int, b: Int): Int {
    return a + b
}
  • 関数定義: fun addNumbers(a: Int, b: Int): Int
    この関数は2つの整数を引数として受け取り、その合計を戻り値として返します。戻り値の型はIntです。
  • 戻り値: return a + b
    このreturn文は関数の計算結果(2つの整数の合計)を呼び出し元に返す役割を果たします。戻り値は次の処理で利用されます。

メイン関数の定義

fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0"
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"
  • println関数: ユーザーに入力を求めるメッセージを表示しています。
  • readLine(): ユーザーから入力を受け取るために使用します。?:はNull安全演算子で、入力がnullの場合にはデフォルト値"0"を代入しています。

入力値の変換と例外処理

try {
    val number1 = input1.toInt()
    val number2 = input2.toInt()
  • toInt(): 入力された文字列を整数に変換します。変換に失敗した場合、例外が発生します。
  • try-catch構文: 数値以外が入力された場合のエラーハンドリングを行います。

関数の呼び出しと結果の表示

val result = addNumbers(number1, number2)
println("2つの数の合計は: $result です")
  • 関数の呼び出し: addNumbers(number1, number2)で2つの整数を引数として渡し、その合計を取得します。
  • 結果の表示: 計算結果を画面に出力しています。

例外処理でのエラー対応

} catch (e: NumberFormatException) {
    println("エラー: 数値を入力してください")
  • 例外のキャッチ: 数値以外が入力された場合、このブロックが実行されます。
  • エラーメッセージ: 「エラー: 数値を入力してください」というメッセージを表示します。

まとめ

このプログラムでは「関数の戻り値」の仕組みを利用して、関数が計算結果を呼び出し元に返す仕組みを学びます。

初心者にとって、関数の役割と戻り値を理解することはプログラミングの基礎を固める重要なステップです。

ぜひ他の計算や処理でもこの考え方を活用してみてください!

<<前のページ Kotlin記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Kotlinのテキスト&問題集トップへ戻る
    トップページへ戻る