Kotlinの初心者向け問題2-1:関数の基本を確認しよう
この問題を解くために必要な知識:
【レベル1の知識】
基礎文法、四則演算と論理演算、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、配列、Null安全、List(MutableList、ArrayList)
【レベル2の知識】
レベル1の知識、関数の基本、関数の戻り値、関数のオーバーロード、クラスの基本とインスタンス、コンストラクタ、プロパティ、クラスの継承、クラスの拡張
<<前の問題 | 問題集Top |
次の問題>> |
Kotlinの文法「関数の定義と呼び出し」とは
ここでは関数の定義と呼び出しの意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Kotlinでプログラミングを始めるときに重要な概念の一つが「関数」です。関数は、特定の処理をまとめたもので、何度も同じ処理を繰り返す場合に便利です。
ここでは、Kotlinでの関数の定義と呼び出しについて、初心者にも分かりやすく解説します。
関数の定義
Kotlinでは、fun
キーワードを使って関数を定義します。関数は、特定の名前を持ち、必要に応じて引数(入力データ)を受け取り、処理を実行し、結果を返すことができます。
基本的な構文
fun 関数名(引数1: 型, 引数2: 型): 戻り値の型 { // 関数内の処理 return 戻り値 }
例:二つの数字を足す関数
fun add(a: Int, b: Int): Int { return a + b }
上記の例では、add
という名前の関数を定義しています。この関数は、2つのInt
型の引数を受け取り、その和をInt
型で返します。
関数の呼び出し
定義した関数は、関数名に引数を渡して呼び出します。関数を呼び出すことで、その中の処理が実行されます。
呼び出し方の例
val result = add(5, 3) println(result) // 出力: 8
上記のコードでは、add
関数を呼び出して、5と3を引数として渡しています。計算結果である8がresult
に代入され、println
で出力されています。
関数の戻り値については次の記事で詳細に説明します。
戻り値がない関数
場合によっては、処理を行うだけで値を返さない関数もあります。その場合、戻り値の型をUnit
と指定しますが、Unit
は省略可能です。
例:メッセージを表示する関数
fun showMessage(message: String) { println(message) }
このshowMessage
関数は、String
型の引数を受け取り、その内容を表示します。戻り値は必要ないのでUnit
型(省略可能)です。
showMessage("Hello, Kotlin!") // 出力: Hello, Kotlin!
Kotlin練習問題2-1-1_関数の定義と呼び出し
ユーザーに数値を入力させ、その数値が偶数か奇数かを判定する関数 isEven
を作成してください。
この関数は、数値が偶数ならば「Even」、奇数ならば「Odd」を出力します。関数の戻り値は考慮しなくてよいです。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
Enter a number: 5 Odd
----- ↑出力される結果の例↑ -----
解答例
例えば以下のようなプログラムが考えられます。
********************
fun main() { print("数値を入力してください: ") // ユーザーに数値入力を促すメッセージを表示 val input = readLine() // ユーザーが入力した値を読み取る val number = input?.toIntOrNull() // 入力値を整数に変換(変換できない場合はnullを返す) if (number != null) { isEven(number) // isEven関数を呼び出す } else { println("無効な入力です。正しい数値を入力してください。") // 入力が数値でない場合のエラーメッセージ } } // 偶数か奇数かを判定する関数 fun isEven(number: Int) { if (number % 2 == 0) { println("偶数です") // 偶数の場合の出力 } else { println("奇数です") // 奇数の場合の出力 } }
********************
コードの解説
main関数
print("数値を入力してください: ")
- これは、ユーザーに数値を入力するよう促すメッセージを表示します。
print
関数を使うことで、改行せずにメッセージを表示します。
- これは、ユーザーに数値を入力するよう促すメッセージを表示します。
val input = readLine()
readLine
関数は、コンソールから1行の入力を読み取ります。ユーザーが数値を入力し、エンターキーを押すと、その入力が文字列として変数input
に格納されます。
val number = input?.toIntOrNull()
- ここで、入力された文字列
input
を整数に変換しようとします。toIntOrNull
メソッドを使うことで、変換に失敗した場合にnull
を返します。これにより、安全に変換を行うことができます。
- ここで、入力された文字列
if (number != null)
- この条件文は、
number
がnull
でないこと(つまり、入力が正しい数値に変換されたこと)を確認します。もし変換に成功した場合、isEven
関数を呼び出します。
- この条件文は、
else
number
がnull
の場合、つまり入力が正しい数値でない場合には、エラーメッセージを表示します。これにより、ユーザーに無効な入力があったことを知らせます。
isEven関数
fun isEven(number: Int)
isEven
は、整数number
を引数に取る関数です。この関数は、入力された数が偶数か奇数かを判定して、対応するメッセージを出力します。
if (number % 2 == 0)
- ここでは、
number
を2で割った余りが0かどうかをチェックします。余りが0の場合、その数は偶数です。
- ここでは、
println("偶数です")
- 数が偶数の場合に、”偶数です”というメッセージを出力します。
else
- 上記の条件に当てはまらない場合、つまり数が奇数の場合には、”奇数です”というメッセージを出力します。
Kotlin練習問題2-1-2_繰り返し処理と関数
1から10までの数値を表示する関数 printNumbers
を作成し、その関数を呼び出してください。
数値は一行ずつ出力するようにすること。
また、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
1 2 3 4 5 6 7 8 9 10
----- ↑出力される結果の例↑ -----
解答例
例えば以下のようなプログラムが考えられます。
********************
fun main() { printNumbers() // printNumbers関数を呼び出す } // 1から10までの数値を表示する関数 fun printNumbers() { for (i in 1..10) { println(i) // 数値を出力 } }
********************
コードの解説
main関数
fun main()
main
関数は、Kotlinプログラムのエントリーポイントです。プログラムの実行はここから始まります。
printNumbers()
main
関数内で、printNumbers
関数を呼び出しています。この関数呼び出しにより、printNumbers
関数の中に書かれたコードが実行されます。
printNumbers関数
fun printNumbers()
printNumbers
は、1から10までの数値を表示するための関数です。fun
キーワードを使って新しい関数を定義しています。
for (i in 1..10)
- ここでは、
for
ループを使って1から10までの範囲を繰り返します。1..10
は1から10までの数値の範囲を表し、この範囲内の各数値に対してループが実行されます。
- ここでは、
println(i)
for
ループの中で、println
関数を使って現在のループ変数i
の値を出力します。println
は、指定された値を出力し、改行を追加します。
Kotlin練習問題2-1-3_配列と関数
ユーザーが入力した5つの整数を配列に代入し、その配列の要素をすべて表示する関数 printArray
を作成してください。
この関数を使って、以下の配列 [1, 2, 3, 4, 5]
を表示してください。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
要素数を入力してください: 5 要素 1 を入力してください: 1 要素 2 を入力してください: 2 要素 3 を入力してください: 3 要素 4 を入力してください: 4 要素 5 を入力してください: 5 1 2 3 4 5
----- ↑出力される結果の例↑ -----
解答例
例えば以下のようなプログラムが考えられます。
********************
fun main() { print("要素数を入力してください: ") // 要素数を入力するようユーザーに促す val n = readLine()?.toIntOrNull() ?: return // 要素数を読み取る(無効な入力の場合は終了) val numbers = IntArray(n) // 配列を定義 for (i in 0 until n) { print("要素 ${i + 1} を入力してください: ") // 各要素の入力を促す val element = readLine()?.toIntOrNull() ?: return // 入力された数値を取得(無効な入力の場合は終了) numbers[i] = element // 入力された数値を配列に格納 } printArray(numbers) // printArray関数を呼び出す } // 配列の要素を表示する関数 fun printArray(array: IntArray) { for (number in array) { println(number) // 配列の各要素を出力 } }
********************
コードの解説
メイン関数の概要
fun main() { print("要素数を入力してください: ")
Kotlinでは、main
関数がプログラムのエントリーポイントです。
最初にユーザーに「要素数を入力してください」と表示して、データの入力を求めています。
入力値の取得と検証
val n = readLine()?.toIntOrNull() ?: return
この行では、ユーザーの入力を受け取り、その値を整数(Int
)に変換しています。
readLine()
は標準入力から文字列を読み込みますが、toIntOrNull()
を使って整数に変換できなければnull
を返し、null
の場合はプログラムを終了します。
これにより、無効な入力を処理することができます。
配列の定義
ここでは、n
(要素数)に基づいて整数型の配列numbers
を定義しています。
配列はIntArray
で定義され、長さはn
です。
ループによる入力の取得
for (i in 0 until n) { print("要素 ${i + 1} を入力してください: ") val element = readLine()?.toIntOrNull() ?: return numbers[i] = element }
この部分では、ループを使ってユーザーに配列の各要素を入力させています。
until
を使って0
からn-1
までの範囲を繰り返し、各要素をnumbers
配列に格納しています。
toIntOrNull()
を使用して無効な入力があればプログラムを終了します。
配列の表示
printArray(numbers)
ここで、printArray
という関数を呼び出して、配列numbers
の内容を表示します。
次に、この関数について詳しく説明します。
配列の要素を表示する関数
fun printArray(array: IntArray) { for (number in array) { println(number) } }
printArray
は、配列の各要素を1つずつ表示する関数です。ループを使って配列の全ての要素を出力しています。
for (number in array)
の部分では、array
の各要素がnumber
に順番に代入され、println
で出力されます。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。