Kotlin練習問題2-2:関数の戻り値を理解しよう

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

Kotlinの初心者向け問題2-2:関数の戻り値を理解しよう

この問題を解くために必要な知識:
【レベル1の知識】
基礎文法、四則演算と論理演算、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、配列、Null安全、List(MutableList、ArrayList)

【レベル2の知識】
レベル1の知識、関数の基本、関数の戻り値、関数のオーバーロードクラスの基本とインスタンスコンストラクタプロパティクラスの継承クラスの拡張

<<前の問題 問題集Top 次の問題>>

Kotlinの文法「○○○」とは

ここでは○○○の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。




Kotlinの関数を学ぶ上で、重要な概念の一つに「戻り値」があります。

関数は、ある処理を行った後に結果を返すことが多く、その結果が「戻り値」と呼ばれます。

この記事では、Kotlinでの関数の戻り値について、わかりやすく解説していきます。

関数の戻り値とは?

関数の戻り値とは、関数が何かしらの処理を行った結果として返す値のことです。Kotlinでは、関数を定義する際に、どの型の値を返すのかを明示する必要があります。

関数の戻り値の型は、関数名の後に「:」と書いて指定します。

基本的な構文
fun 関数名(引数1: 型, 引数2: 型): 戻り値の型 {
    // 関数内の処理
    return 戻り値
}

戻り値を持つ関数の例

次に、Kotlinの関数で戻り値を使用する例を見てみましょう。以下は、二つの整数を足し算して結果を返す関数です。

例:二つの数字を足す関数
fun add(a: Int, b: Int): Int {
    return a + b
}

このadd関数では、abという二つのInt型の引数を受け取り、その合計を返します。関数が返す値の型はIntであるため、関数の定義の後に: Intと指定しています。

戻り値が不要な場合

場合によっては、関数が値を返さないこともあります。Kotlinでは、戻り値がない関数の場合、Unit型を使用しますが、Unitは省略可能です。

戻り値がない関数は、何かの処理を行うだけで結果を返しません。

例:メッセージを表示する関数
fun showMessage(message: String) {
    println(message)
}

この関数は、messageというString型の引数を受け取り、それを表示するだけで、値を返しません。この場合、戻り値の型Unitを省略しています。

戻り値を使用した関数の呼び出し

関数を呼び出す際には、関数が返した戻り値を変数に代入したり、そのまま使用することができます。

例:戻り値を変数に代入
val result = add(10, 20)
println(result)  // 出力: 30

この例では、add関数を呼び出して1020を引数として渡し、結果である30result変数に代入しています。その後、printlnを使って結果を出力します。

条件に応じた戻り値

関数は、条件によって異なる値を返すこともできます。例えば、条件分岐を使用して、条件に応じた結果を返す関数を作成できます。

例:条件に応じた戻り値を返す関数
fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

このmax関数は、二つの引数abのうち、大きい方の値を返します。if文を使って、条件に応じた値を返しています。

まとめ

Kotlinの関数の戻り値は、プログラムの結果を返す重要な役割を持っています。

戻り値の型をしっかり定義し、returnを使って結果を返すことで、関数の柔軟性を高めることができます。

戻り値がない場合には、Unit型が使われますが、通常は省略できます。ぜひ、実際にコードを書きながら、Kotlinでの関数とその戻り値を理解していきましょう!




Kotlin練習問題2-2-1_合計値を返す関数を作ろう

2つの整数をユーザーに入力させ、その合計を出力してください。

ただし、合計値を計算する sumTwoNumbers 関数を main 関数の外に作成すること。

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

----- ↓出力される結果の例↓ -----

2つの整数を入力してください:
5
3
5 + 3 = 8

----- ↑出力される結果の例↑ -----

解答例

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

********************

fun main() {
    // 2つの整数を入力して合計を計算
    println("2つの整数を入力してください:")

    val num1 = readLine()?.toIntOrNull()
    val num2 = readLine()?.toIntOrNull()

    if (num1 != null && num2 != null) {
        val result = sumTwoNumbers(num1, num2)
        println("$num1 + $num2 = $result")
    } else {
        println("無効な入力です。整数を入力してください。")
    }
}

// 2つの整数を引数として受け取り、その合計を返す関数
fun sumTwoNumbers(a: Int, b: Int): Int {
    return a + b
}

********************

コードの解説

main関数

  1. println("2つの整数を入力してください:")
    • ユーザーに2つの整数を入力するように促すメッセージを表示します。
  2. val num1 = readLine()?.toIntOrNull()
    • readLine関数を使って、ユーザーが入力した最初の値を読み取ります。toIntOrNullメソッドを使用することで、入力が整数に変換できない場合はnullを返します。
  3. val num2 = readLine()?.toIntOrNull()
    • readLine関数を使って、ユーザーが入力した2番目の値を読み取ります。同様に、toIntOrNullメソッドを使用して変換します。
  4. if (num1 != null && num2 != null)
    • 入力された2つの値がどちらもnullでないことを確認します。どちらかがnullの場合、無効な入力として処理します。
  5. val result = sumTwoNumbers(num1, num2)
    • sumTwoNumbers関数を呼び出し、2つの整数の合計を計算します。
  6. println("$num1 + $num2 = $result")
    • 計算結果を表示します。$num1$num2、および$resultは、それぞれの変数の値を文字列内に埋め込むために使用されます。
  7. else
    • 入力が無効な場合にエラーメッセージを表示します。

sumTwoNumbers関数

  1. fun sumTwoNumbers(a: Int, b: Int): Int
    • 2つの整数を引数として受け取り、その合計を返す関数を定義します。
  2. return a + b
    • 引数として受け取った2つの整数の合計を計算し、その結果を返します。

Kotlin練習問題2-2-2_配列の要素の合計値を返す関数を作ろう

配列内の要素をユーザーに入力させ、合計値を出力してください。

ただし合計値を計算する sumArrayElements 関数を main 関数の外に作成すること。

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

----- ↓出力される結果の例↓ -----

配列のサイズを入力してください:
5
配列の要素を入力してください:
1
2
3
4
5
配列の合計 = 15

----- ↑出力される結果の例↑ -----

解答例

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

********************

fun main() {
    // 配列のサイズを入力
    println("配列のサイズを入力してください:")
    val size = readLine()?.toIntOrNull() ?: return
    val array = IntArray(size)

    // 配列の要素を入力
    println("配列の要素を入力してください:")
    for (i in 0 until size) {
        val element = readLine()?.toIntOrNull() ?: return
        array[i] = element
    }

    val result = sumArrayElements(array)
    println("配列の合計 = $result")
}

// 配列の要素の合計を計算して返す関数
fun sumArrayElements(numbers: IntArray): Int {
    var sum = 0
    for (num in numbers) {
        sum += num
    }
    return sum
}

********************

コードの解説

このKotlinプログラムは、ユーザーに配列のサイズと要素を入力させ、その要素の合計を計算して表示します。以下に、コードの各部分について詳しく解説します。

main関数

  1. println("配列のサイズを入力してください:")
    • ユーザーに配列のサイズを入力するように促すメッセージを表示します。
  2. val size = readLine()?.toIntOrNull() ?: return
    • readLine関数を使って、ユーザーが入力した値を読み取ります。toIntOrNullメソッドを使用して、入力が整数に変換できない場合はnullを返し、無効な入力の場合はプログラムを終了します。
  3. val array = IntArray(size)
    • 入力されたサイズを使用して、整数型の配列arrayを作成します。
  4. println("配列の要素を入力してください:")
    • ユーザーに配列の各要素を入力するように促すメッセージを表示します。
  5. for (i in 0 until size)
    • forループを使って、0からsize未満の範囲で繰り返します。このループで各要素の値を入力します。
  6. val element = readLine()?.toIntOrNull() ?: return
    • readLine関数を使ってユーザーが入力した値を読み取り、整数に変換します。無効な入力の場合はプログラムを終了します。
  7. array[i] = element
    • 読み取った整数を配列arrayi番目の位置に格納します。
  8. val result = sumArrayElements(array)
    • sumArrayElements関数を呼び出して、配列の要素の合計を計算します。
  9. println("配列の合計 = $result")
    • 計算結果を表示します。$resultは、計算された合計を文字列内に埋め込むために使用されます。

sumArrayElements関数

  1. fun sumArrayElements(numbers: IntArray): Int
    • IntArray型の配列numbersを引数に取り、その合計を返す関数を定義します。
  2. var sum = 0
    • 合計を保持する変数sumを初期化します。
  3. for (num in numbers)
    • forループを使って、配列numbersの各要素に対して繰り返し処理を行います。
  4. sum += num
    • 各要素の値をsumに加算します。
  5. return sum
    • 計算された合計を返します。
<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

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

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






    Kotlin練習問題集へ戻る
    トップページへ戻る