Kotlin練習問題2-1:関数の基本を確認しよう

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

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関数

  1. print("数値を入力してください: ")
    • これは、ユーザーに数値を入力するよう促すメッセージを表示します。print関数を使うことで、改行せずにメッセージを表示します。
  2. val input = readLine()
    • readLine関数は、コンソールから1行の入力を読み取ります。ユーザーが数値を入力し、エンターキーを押すと、その入力が文字列として変数inputに格納されます。
  3. val number = input?.toIntOrNull()
    • ここで、入力された文字列inputを整数に変換しようとします。toIntOrNullメソッドを使うことで、変換に失敗した場合にnullを返します。これにより、安全に変換を行うことができます。
  4. if (number != null)
    • この条件文は、numbernullでないこと(つまり、入力が正しい数値に変換されたこと)を確認します。もし変換に成功した場合、isEven関数を呼び出します。
  5. else
    • numbernullの場合、つまり入力が正しい数値でない場合には、エラーメッセージを表示します。これにより、ユーザーに無効な入力があったことを知らせます。

isEven関数

  1. fun isEven(number: Int)
    • isEvenは、整数numberを引数に取る関数です。この関数は、入力された数が偶数か奇数かを判定して、対応するメッセージを出力します。
  2. if (number % 2 == 0)
    • ここでは、numberを2で割った余りが0かどうかをチェックします。余りが0の場合、その数は偶数です。
  3. println("偶数です")
    • 数が偶数の場合に、”偶数です”というメッセージを出力します。
  4. 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関数

  1. fun main()
    • main関数は、Kotlinプログラムのエントリーポイントです。プログラムの実行はここから始まります。
  2. printNumbers()
    • main関数内で、printNumbers関数を呼び出しています。この関数呼び出しにより、printNumbers関数の中に書かれたコードが実行されます。

printNumbers関数

  1. fun printNumbers()
    • printNumbersは、1から10までの数値を表示するための関数です。funキーワードを使って新しい関数を定義しています。
  2. for (i in 1..10)
    • ここでは、forループを使って1から10までの範囲を繰り返します。1..10は1から10までの数値の範囲を表し、この範囲内の各数値に対してループが実行されます。
  3. 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を活用しています。

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






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