Kotlinの初心者向け問題1-3:分岐処理と繰り返し処理
この問題を解くために必要な知識:
基礎文法、四則演算と論理演算、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、配列、Null安全、List、ArrayList
<<前の問題 | 問題集Top |
次の問題>> |
Kotlinの文法「分岐処理と繰り返し処理」とは
ここでは分岐処理と繰り返し処理の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
分岐処理と繰り返し処理はプログラムの流れを制御するための基本的な構造であり、条件に応じた処理や、同じ処理を繰り返す場合に使用されます。
この記事では、Kotlinにおける分岐処理と繰り返し処理の使い方について詳しく解説します。
分岐処理とは?
分岐処理は、プログラムが条件に基づいて異なる処理を実行する仕組みです。Kotlinでは、代表的な分岐処理としてif
文とwhen
文があります。
if文
if
文は、条件がtrue
の場合に特定の処理を実行し、false
の場合に別の処理を実行します。
例: if文の使い方
fun main() { val score = 85 if (score >= 90) { println("Excellent!") } else if (score >= 70) { println("Good job!") } else { println("Keep trying!") } }
この例では、score
の値に応じてメッセージが変わります。score
が90以上なら「Excellent!」、70以上なら「Good job!」、それ以下なら「Keep trying!」と出力されます。
when文
when
文は、複数の条件に対して簡潔に分岐処理を行う際に便利です。switch
文に似ていますが、Kotlinではwhen
文がより柔軟です。
when文の詳細は次の記事で紹介します。
繰り返し処理とは?
繰り返し処理は、特定の条件が満たされるまで同じ処理を繰り返す仕組みです。Kotlinでは、主にfor
ループとwhile
ループが使用されます。
forループ
for
ループは、指定された範囲やコレクション内の要素を順番に処理します。
例: forループの使い方
fun main() { val numbers = arrayOf(1, 2, 3, 4, 5) for (number in numbers) { println(number) } }
この例では、配列numbers
内の各要素を順に取り出し、出力しています。for
ループは配列やリストの要素を処理する際に頻繁に使われます。
whileループ
while
ループは、条件がtrue
である間、処理を繰り返します。条件が満たされなくなるとループが終了します。
例: whileループの使い方
fun main() { var count = 5 while (count > 0) { println(count) count-- } }
この例では、count
が0になるまで、ループ内でcount
の値が出力され、ループが終了します。
do-whileループ
do-while
ループは、少なくとも1回は必ず処理を実行した後に条件を評価します。while
とは異なり、条件がfalse
であっても最初の1回は処理されます。
例: do-whileループの使い方
fun main() { var count = 5 do { println(count) count-- } while (count > 0) }
この例でも、count
が0になるまでループを繰り返しますが、do-while
ループは必ず1回は実行される点に注意してください。
分岐処理と繰り返し処理の組み合わせ
実際のプログラムでは、分岐処理と繰り返し処理を組み合わせることがよくあります。
特定の条件を満たすまでループを回し、その中でさらに条件によって処理を分ける場合などに役立ちます。
例: 分岐と繰り返しの組み合わせ
fun main() { val numbers = arrayOf(1, 2, 3, 4, 5) for (number in numbers) { if (number % 2 == 0) { println("$number は偶数です") } else { println("$number は奇数です") } } }
この例では、for
ループで配列内の各要素を確認し、if
文で偶数か奇数かを判定しています。
まとめ
Kotlinにおける分岐処理と繰り返し処理は、プログラムの流れを柔軟に制御するための基本的な構造です。
分岐処理を使って条件に応じた異なる処理を行い、繰り返し処理で同じ処理を何度も行うことができます。
これらの概念をしっかりと理解することで、より複雑なプログラムを書くことができるようになります。
Kotlin練習問題1-3_分岐処理と繰り返し処理
ユーザーに0から100までの整数を1つ入力してもらい、その整数が偶数か奇数かを判定して、結果を表示するプログラムを10回繰り返してください。
この問題の要件
以下の要件に従ったプログラムを作成してください。
for
ループを使用して、10回繰り返し処理を行うこと。if
文を使って、入力された整数が偶数か奇数かを判定し、それに応じたメッセージを表示すること。- ユーザーの入力は
readLine()
を使用し、整数に変換して処理すること。 - 各入力ごとに、入力された整数が偶数であれば「○○は偶数です」、奇数であれば「○○は奇数です」と表示してください。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
0から100までの整数を入力してください: 4 4 は偶数です。 0から100までの整数を入力してください: 7 7 は奇数です。 0から100までの整数を入力してください: 10 10 は偶数です。 0から100までの整数を入力してください: 25 25 は奇数です。 0から100までの整数を入力してください: 36 36 は偶数です。 0から100までの整数を入力してください: 49 49 は奇数です。 0から100までの整数を入力してください: 50 50 は偶数です。 0から100までの整数を入力してください: 63 63 は奇数です。 0から100までの整数を入力してください: 88 88 は偶数です。 0から100までの整数を入力してください: 91 91 は奇数です。
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.main関数の定義
1-1. 10回の繰り返し処理を行うためのfor
ループの開始
1-1-1. ユーザーに整数の入力を求めるためのメッセージ表示
1-1-2. ユーザーからの入力を受け取り、整数に変換して変数number
に格納
1-2. 分岐処理で入力された数が偶数か奇数かを判定
1-2-1. 偶数の場合、「偶数です」と表示
1-2-2. 奇数の場合、「奇数です」と表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
fun main() { for (i in 1..10) { // 10回繰り返す print("0から100までの整数を入力してください(${i}回目): ") /* ***【穴埋め問題1】*** ここにユーザーの入力を整数として受け取り、それを変数numberに格納するコードを書いてください。 */ // 偶数か奇数かを判定して結果を表示 /* ***【穴埋め問題2】*** ここにif文を使って、numberが偶数か奇数かを判定し、それに応じたメッセージを表示するコードを書いてください。 */ } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
fun main() { for (i in 0 until 10) { // 繰り返し処理を10回行う print("0から100までの整数を入力してください: ") val input = readLine() val number = input?.toIntOrNull() if (number == null) { println("有効な整数を入力してください。") continue // 入力が無効の場合は次の繰り返しに進む } // 分岐処理で偶数か奇数かを判定する if (number % 2 == 0) { println("$number は偶数です。") } else { println("$number は奇数です。") } } }
********************
正解コードの解説
このKotlinプログラムは、0から100までの整数をユーザーに入力してもらい、その整数が偶数か奇数かを判定する処理を10回繰り返すものです。
以下に、各部分について詳しく説明します。
メイン関数の開始
fun main() {
Kotlinプログラムのエントリーポイントはmain
関数です。すべてのプログラムはこのmain
関数から実行が開始されます。
繰り返し処理の開始
for (i in 1..10) { // 10回繰り返す
for
ループを使用して、同じ処理を10回繰り返します。i in 1..10
は、i
が1から10までの値を順にとることを意味します。
このループにより、10回分の入力と判定が行われます。
ユーザー入力の取得
print("0から100までの整数を入力してください(${i}回目): ") val number = readLine()?.toIntOrNull() ?: 0
print
関数でメッセージを表示し、ユーザーに0から100までの整数を入力してもらいます。readLine()
で入力を取得し、それを整数に変換します。
toIntOrNull()
は、入力が整数に変換できない場合にnull
を返し、?: 0
はその場合のデフォルト値として0を使用することを示します。
偶数・奇数の判定
if (number % 2 == 0) { println("$number は偶数です") } else { println("$number は奇数です") }
if
文を使って、ユーザーが入力した数が偶数か奇数かを判定します。
number % 2 == 0
は、number
を2で割った余りが0であれば偶数であることを意味します。
余りが0でない場合は奇数です。これにより、それぞれのケースに応じてメッセージが表示されます。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。