【Kotlin】レッスン3-3:関数の戻り値を理解しよう|returnと型の使い方を基礎から解説

ながみえ

一つ前のページではデフォルト引数とキーワード引数について学習しました。

今回は 関数の戻り値 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編

 ・Lesson3-1:関数の基本を理解しよう
 ・Lesson3-2:デフォルト引数とキーワード引数を理解しよう
 ・Lesson3-3:関数の戻り値を理解しよう ◁今回はココ
 ・Lesson3-4:真偽値を返す関数を理解しよう
 ・Lesson3-5:関数のオーバーロードを理解しよう
 ・Lesson3-6:ジェネリクスの基礎を理解しよう
 ・確認問題3-☆1:ブラックジャックゲームを作ろう
 ・確認問題3-☆2:丁半賭博ゲームを作ろう
 ・確認問題3-☆3:モンスターとのバトルゲームを作ろう
Lesson4:コレクション編
Lesson5:オブジェクト指向編

<<前のページ

学習記事一覧

次のページ>>

関数の戻り値とは?|関数の結果を返す方法

この記事では「関数の戻り値」の仕組みを利用して、関数が処理結果を呼び出し元に返す仕組みを学びます。

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

関数の戻り値の概要と使い方|returnキーワードを使おう

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

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

戻り値を返す関数は returnキーワード を使用しいて以下のように書きます。

// 戻り値がある関数の書き方
fun 関数名(引数): 戻り値の型 {
    return 戻り値
}

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

// 戻り値がある関数
fun add(a: Int, b: Int): Int {	// 2つの引数を持ち、Int型の戻り値を返すadd関数を定義
    return a + b				// 戻り値としてa+bを返す
}
// 関数を呼び出して結果を利用する
fun main() {
    val sum = add(5, 10)			// add関数に2つの引数を渡し、戻り値を定数sumに代入
    println("計算結果は $sum です")  // 出力:計算結果は15です
}

上記の例ではadd関数がInt型の戻り値を持ち、a+bの結果をreturnキーワードを使って呼び出し元に返します。

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

戻り値の具体例|呼び出し元で値を活用する方法

戻り値を使った実際のコード例をもう一つ見てみましょう。

以下のコードはユーザーに年齢を入力してもらい、ユーザーが成人か未成年かを判断するコードです。

// 年齢を受け取って成人かどうか判定する関数
fun checkAdulthood(age: Int): String {
    if (age >= 20) {	// もし年齢が20以上なら
        return "成人"	  // 戻り値として「成人」という文字列を返す
    } else {
        return "未成年" // 戻り値として「未成年」という文字列を返す
    }
}

fun main() {
    print("年齢を記入して下さい:")
    val age = readLine().toIntOrNull() ?: 0
  	val text = checkAdulthood(age)	// checkAdulthood関数を呼び出し、戻り値を定数textに代入
    println("あなたは $text です。")
}

このコードでは入力された年齢をcheckAdulthood関数に渡し、年齢が20以上であれば「成人」という文字列が、19以下であれば「未成年」という文字列が戻り値として返ってきます。

メイン関数側でこの戻り値を利用し、printlnで表示しています。

まとめ|戻り値がもたらすプログラムの広がり

関数の戻り値は、処理結果を他の部分に受け渡すための重要な仕組みです。Kotlinでは戻り値の型を柔軟に指定できるため、さまざまな場面で活用できます。

戻り値を適切に設計することで、コードの再利用性や可読性が高まり、より効率的なプログラミングが実現します。

今回学んだ内容をもとに、ぜひ自分だけの便利な関数を作り、戻り値を使いこなしてみてください。

戻り値の練習問題|計算プログラムを作ろう

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

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

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

この問題の要件

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

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

ただし、以下のような実行結果となること。

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

この問題を解くヒント

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

Q
ヒント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を捕捉
  □ □ 「エラー: 数値を入力してください」と出力

Q
ヒント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("エラー: 数値を入力してください")
    }
}

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

この問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
// 二つの整数を加算する関数
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("エラー: 数値を入力してください")
    }
}
Q
正解コードの解説

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

関数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("エラー: 数値を入力してください")
  • 例外のキャッチ: 数値以外が入力された場合、このブロックが実行されます。
  • エラーメッセージ: 「エラー: 数値を入力してください」というメッセージを表示します。
Q
サイト改善アンケート & ご指摘/ご質問

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などを アンケート 形式でお伺いしています。

また記事の内容に関する ご指摘ご質問 もお待ちしています。

1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
※ 特定の記事に関する内容の場合は、記事番号(レッスン〇-〇)をご記入願います。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました