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
関数では、a
とb
という二つのInt
型の引数を受け取り、その合計を返します。関数が返す値の型はInt
であるため、関数の定義の後に: Int
と指定しています。
戻り値が不要な場合
場合によっては、関数が値を返さないこともあります。Kotlinでは、戻り値がない関数の場合、Unit
型を使用しますが、Unit
は省略可能です。
戻り値がない関数は、何かの処理を行うだけで結果を返しません。
例:メッセージを表示する関数
fun showMessage(message: String) { println(message) }
この関数は、message
というString
型の引数を受け取り、それを表示するだけで、値を返しません。この場合、戻り値の型Unit
を省略しています。
戻り値を使用した関数の呼び出し
関数を呼び出す際には、関数が返した戻り値を変数に代入したり、そのまま使用することができます。
例:戻り値を変数に代入
val result = add(10, 20) println(result) // 出力: 30
この例では、add
関数を呼び出して10
と20
を引数として渡し、結果である30
をresult
変数に代入しています。その後、println
を使って結果を出力します。
条件に応じた戻り値
関数は、条件によって異なる値を返すこともできます。例えば、条件分岐を使用して、条件に応じた結果を返す関数を作成できます。
例:条件に応じた戻り値を返す関数
fun max(a: Int, b: Int): Int { return if (a > b) a else b }
このmax
関数は、二つの引数a
とb
のうち、大きい方の値を返します。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関数
println("2つの整数を入力してください:")
- ユーザーに2つの整数を入力するように促すメッセージを表示します。
val num1 = readLine()?.toIntOrNull()
readLine
関数を使って、ユーザーが入力した最初の値を読み取ります。toIntOrNull
メソッドを使用することで、入力が整数に変換できない場合はnull
を返します。
val num2 = readLine()?.toIntOrNull()
readLine
関数を使って、ユーザーが入力した2番目の値を読み取ります。同様に、toIntOrNull
メソッドを使用して変換します。
if (num1 != null && num2 != null)
- 入力された2つの値がどちらも
null
でないことを確認します。どちらかがnull
の場合、無効な入力として処理します。
- 入力された2つの値がどちらも
val result = sumTwoNumbers(num1, num2)
sumTwoNumbers
関数を呼び出し、2つの整数の合計を計算します。
println("$num1 + $num2 = $result")
- 計算結果を表示します。
$num1
、$num2
、および$result
は、それぞれの変数の値を文字列内に埋め込むために使用されます。
- 計算結果を表示します。
else
- 入力が無効な場合にエラーメッセージを表示します。
sumTwoNumbers関数
fun sumTwoNumbers(a: Int, b: Int): Int
- 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関数
println("配列のサイズを入力してください:")
- ユーザーに配列のサイズを入力するように促すメッセージを表示します。
val size = readLine()?.toIntOrNull() ?: return
readLine
関数を使って、ユーザーが入力した値を読み取ります。toIntOrNull
メソッドを使用して、入力が整数に変換できない場合はnull
を返し、無効な入力の場合はプログラムを終了します。
val array = IntArray(size)
- 入力されたサイズを使用して、整数型の配列
array
を作成します。
- 入力されたサイズを使用して、整数型の配列
println("配列の要素を入力してください:")
- ユーザーに配列の各要素を入力するように促すメッセージを表示します。
for (i in 0 until size)
for
ループを使って、0からsize
未満の範囲で繰り返します。このループで各要素の値を入力します。
val element = readLine()?.toIntOrNull() ?: return
readLine
関数を使ってユーザーが入力した値を読み取り、整数に変換します。無効な入力の場合はプログラムを終了します。
array[i] = element
- 読み取った整数を配列
array
のi
番目の位置に格納します。
- 読み取った整数を配列
val result = sumArrayElements(array)
sumArrayElements
関数を呼び出して、配列の要素の合計を計算します。
println("配列の合計 = $result")
- 計算結果を表示します。
$result
は、計算された合計を文字列内に埋め込むために使用されます。
- 計算結果を表示します。
sumArrayElements関数
fun sumArrayElements(numbers: IntArray): Int
IntArray
型の配列numbers
を引数に取り、その合計を返す関数を定義します。
var sum = 0
- 合計を保持する変数
sum
を初期化します。
- 合計を保持する変数
for (num in numbers)
for
ループを使って、配列numbers
の各要素に対して繰り返し処理を行います。
sum += num
- 各要素の値を
sum
に加算します。
- 各要素の値を
return sum
- 計算された合計を返します。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。