【Kotlin】レッスン3-4:真偽値を返す関数とは?条件判定に使える関数の基本

ながみえ

一つ前のページでは関数の戻り値について学習しました。

今回は 真偽値を返す関数 について見ていきましょう。

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

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

<<前のページ

学習記事一覧

次のページ>>

真偽値を返す関数とは|条件分岐で役立つBoolean型の基本

Kotlinでは関数がさまざまな型の値を返すことができます。

その中でも「真(true)」または「偽(false)」を返す関数は、条件判定やデータのフィルタリングでよく使われます。

本記事では、初心者向けに真偽値を返す関数の基本と使用例について解説します。

Boolean型を返す関数の役割と書き方

真偽値を返す関数は、戻り値としてtrueまたはfalseのいずれかを返す関数です。

この種の関数はプログラム内で何かを判断する際に利用され、コードを簡潔かつ読みやすくするのに役立ちます。

例えば入力された数値が偶数か奇数かを判定するような状況では、真偽値を返す関数を利用することで、条件判定を明確かつシンプルに記述できます。

fun isEven(number: Int): Boolean {	// 引数を持ち、Boolean型の戻り値を返す関数を定義
    return number % 2 == 0			// numberが偶数であれば戻り値としてTrueを返す
}									// 奇数であればFalseを返す

このように戻り値の型としてBooleanを指定することで、真偽値を返す関数を作成できます。

偶数判定で学ぶBoolean関数の使い方

以下はisEven関数を用いて数値が偶数かどうかを判定するプログラムの例です。

fun isEven(number: Int): Boolean {	// 真偽値を返す関数
    return number % 2 == 0			// 偶数ならtrue、奇数ならfalseを返す
}
fun main() {
    val number = 4
    if (isEven(number)) {	// もしisEven関数の戻り値がtrueなら
        println("$number は偶数です")
    } else {				// 戻り値ががtrueでないなら
        println("$number は奇数です")
    }
}

このコードでは、以下の処理が行われます。

  1. 変数numberに整数値を代入
  2. 関数isEvenを呼び出し、その結果がtruefalseかを確認
  3. if-else文で条件を判定し、それに応じたメッセージを出力

このように真偽値を返す関数を使うことで、条件に基づいた処理を簡潔に記述できます。

まとめ|条件判定を簡潔にする関数設計のポイント

真偽値を返す関数はプログラム内での条件判定を簡潔にし、コードの可読性を向上させる重要なツールです。

関数を利用することで、同じ判定処理を繰り返し使う場合でも効率的にコードを再利用できます。

ぜひ自分のプログラムにも取り入れてみてください。

練習問題|真偽値と例外処理で数値の偶奇を判定しよう

入力された整数が偶数か奇数かを判定するプログラムを作成してください。

このプログラムでは真偽値を返す関数を使用し、入力された数値を判定します。

プログラムが繰り返し実行されるようにし、空の入力があった場合に終了するようにしてください。

正しく数値を入力しなかった場合には、エラーメッセージを表示する必要があります。

この問題の要件

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

  • readLine を使用してユーザーから数値を入力すること。
  • 入力が空または無効な場合にはプログラムを終了すること。
  • 入力された値を整数に変換し、その値が偶数であるかを判定する関数を作成すること。
  • 偶数か奇数かを判定して結果を日本語で出力すること。
  • 無効な入力があった場合には、エラーメッセージを出力すること。
  • プログラムは繰り返し実行されるようにし、空白の入力があれば終了すること。

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

数値を入力してください(終了するには空白でEnterを押してください):
4
4 は偶数です。
3
3 は奇数です。
abc
無効な入力です。数値を入力してください。

この問題を解くヒント

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

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:main関数の定義
  □ 「数値を入力してください(終了するには空白でEnterを押してください):」を出力
  □ while文の開始(無限ループの設定)
  □ □ ユーザー入力を取得して変数inputに代入
  □ □ if文でinputnullまたは空かどうかを判定
  □ □ □ trueの場合「プログラムを終了します。」を出力し、ループを終了
  □ □ try-catch文を使用して例外処理を設定
  □ □ □ tryブロック内で入力を整数型に変換し、変数numberに代入
  □ □ □ if文でisEven関数を呼び出してnumberが偶数かどうかを判定
  □ □ □ □ trueの場合、「{number} は偶数です。」を出力
  □ □ □ □ falseの場合、「{number} は奇数です。」を出力
  □ □ □ catchブロックでNumberFormatException例外を処理し、「無効な入力です。数値を入力してください。」を出力
2:isEven関数の定義
  □ 引数numberが2で割り切れる場合にtrueを返す

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

// メイン関数の開始
fun main() {
    // 数値を入力して偶数か奇数かを判定するプログラム
    println("数値を入力してください(終了するには空白でEnterを押してください):")

    while (true) {
        // 入力を受け取る
        val input = readLine()

        // 入力がnullまたは空の場合、プログラムを終了
        if (input.isNullOrEmpty()) {
            println("プログラムを終了します。")
            break
        }

        try {
            // 入力を数値に変換
            val number = input.toInt()

            /*【穴埋め問題1】
            ここで偶数かどうかを判定する関数を呼び出し、
            numberが偶数であれば「〇〇は偶数です。」と表示し、
            奇数であれば「〇〇は奇数です。」と表示するif文を書いてください。
            */
        } catch (e: NumberFormatException) {
            // 数値以外の入力があった場合のエラーメッセージ
            println("無効な入力です。数値を入力してください。")
        }
    }
}

/*【穴埋め問題2】
ここでnumberが偶数かどうかを判定する関数を定義してください。
関数名はisEvenで、戻り値はBoolean型にしてください。
また、偶数の場合はtrue、奇数の場合はfalseを返すようにしてください。
*/

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

この問題の解答と解説

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

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

Q
正解コード
// メイン関数の開始
fun main() {
    // 数値を入力して偶数か奇数かを判定するプログラム
    println("数値を入力してください(終了するには空白でEnterを押してください):")

    while (true) {
        // 入力を受け取る
        val input = readLine()

        // 入力がnullまたは空の場合、プログラムを終了
        if (input.isNullOrEmpty()) {
            println("プログラムを終了します。")
            break
        }

        try {
            // 入力を数値に変換
            val number = input.toInt()

            // 偶数かどうかを判定する関数を呼び出す
            if (isEven(number)) {
                println("$number は偶数です。")
            } else {
                println("$number は奇数です。")
            }
        } catch (e: NumberFormatException) {
            // 数値以外の入力があった場合のエラーメッセージ
            println("無効な入力です。数値を入力してください。")
        }
    }
}

// 偶数かどうかを判定する関数
// 入力された整数が偶数の場合は true、奇数の場合は false を返します
fun isEven(number: Int): Boolean {
    return number % 2 == 0
}
Q
正解コードの解説

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

メイン関数の開始

fun main() {
    println("数値を入力してください(終了するには空白でEnterを押してください):")
  • fun main():Kotlinプログラムのエントリーポイント。ここからプログラムが開始されます。
  • println:文字列を画面に出力する関数です。ここではユーザーにプログラムの使い方を説明するメッセージを表示します。

繰り返し処理と入力の処理

while (true) {
    val input = readLine()
    if (input.isNullOrEmpty()) {
        println("プログラムを終了します。")
        break
    }
  • while (true):無限ループを作成します。このループは特定の条件(ここでは空白入力)が満たされるまで続きます。
  • readLine():ユーザーの入力を取得します。
  • isNullOrEmpty():入力が空かどうかを確認するための便利な関数です。空の入力があるとループが終了します。

入力を数値に変換し判定

    try {
        val number = input.toInt()
  • toInt():文字列を整数に変換します。入力が数字でない場合には例外が発生します。
  • try:例外処理を行うための構文。安全に数値変換を行うために使用します。
        if (isEven(number)) {
            println("$number は偶数です。")
        } else {
            println("$number は奇数です。")
        }
  • isEven(number):後述する「真偽値を返す関数」を利用して、数値が偶数かどうかを判定します。
  • if-else:条件分岐処理を行います。trueの場合は「偶数です」と表示し、falseの場合は「奇数です」と表示します。

無効な入力への対応

    } catch (e: NumberFormatException) {
        println("無効な入力です。数値を入力してください。")
    }

catch:例外が発生した場合の処理。ユーザーが数値以外を入力したときにエラーメッセージを表示します。

偶数判定を行う関数

fun isEven(number: Int): Boolean {
    return number % 2 == 0
}
  1. fun isEven(number: Int): Boolean:この関数は、与えられた数値が偶数かどうかを判定します。
    • 引数 number は整数型。
    • 戻り値の型は Boolean で、true(偶数)または false(奇数)を返します。
  2. return number % 2 == 0
    • number % 2 は、数値を2で割った余りを計算します。
    • 余りが0であれば偶数なので true を返し、そうでなければ false を返します。
Q
サイト改善アンケート & ご指摘/ご質問

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

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

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

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました