Kotlinの初心者向け問題1-1:四則演算をさせよう
この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型、算術演算と論理演算、入力と出力、import文、配列、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、Null安全、スマートキャスト
<<前の問題 | 問題集Top |
次の問題>> |
Kotlinの文法「算術演算と論理演算」とは
ここでは算術演算と論理演算の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Kotlinにおける「算術演算」と「論理演算」について、簡単にわかりやすく解説します。
算術演算とは?
算術演算は、数値を操作するための基本的な演算です。Kotlinでも他の多くのプログラミング言語と同じく、よく使われる算術演算が提供されています。
Kotlinの主な算術演算子:
演算子 | 説明 | 例 |
+ | 足し算 | 5 + 3 = 8 |
– | 引き算 | 5 – 3 = 5 |
* | 掛け算 | 5 * 3 = 15 |
/ | 割り算(整数除算) | 5 / 3 = 1 |
% | 剰余(割り算の余り) | 5 % 3 = 2 |
例: 算術演算の使い方
fun main() { val a = 10 val b = 3 println("足し算: ${a + b}") // 出力: 13 println("引き算: ${a - b}") // 出力: 7 println("掛け算: ${a * b}") // 出力: 30 println("割り算: ${a / b}") // 出力: 3 println("剰余: ${a % b}") // 出力: 1 }
ポイントとして、/
を使用した割り算では、整数同士の演算では余りを無視した結果になります。
小数点以下も考慮したい場合は、少なくとも一方の値をFloat
やDouble
型にキャストする必要があります。
println("割り算: ${a.toDouble() / b}") // 出力: 3.3333333333333335
論理演算とは?
論理演算は、主に条件分岐や繰り返し処理の際に使われる、真(true
)または偽(false
)の値を扱う演算です。
Kotlinでも以下のような論理演算子が提供されています。
Kotlinの主な論理演算子:
演算子 | 説明 | 例 |
&& | 論理積(AND) | true && false = false |
! | 否定(NOT) | !true = false |
例: 論理演算の使い方
fun main() { val isAdult = true val hasTicket = false // AND演算 println("AND演算: ${isAdult && hasTicket}") // 出力: false // OR演算 println("OR演算: ${isAdult || hasTicket}") // 出力: true // NOT演算 println("NOT演算: ${!isAdult}") // 出力: false }
&&
は「両方がtrue
でなければfalse
」を返し、||
は「どちらか一方でもtrue
ならばtrue
」を返します。
!
は論理値を反転するため、true
がfalse
になり、false
がtrue
になります。
算術演算と論理演算の組み合わせ
実際のプログラムでは、算術演算と論理演算を組み合わせて使うことがよくあります。
特に条件付きの計算や、特定の状況下で異なる処理をしたい場合に役立ちます。
例: 算術と論理演算の組み合わせ
fun main() { val age = 20 val height = 180 // 20歳以上かつ身長が170cm以上の人は「合格」 val isQualified = (age >= 20) && (height >= 170) println("資格があるか?: $isQualified") // 出力: true }
fun main() { val age = 20 val height = 180 // 20歳以上かつ身長が170cm以上の人は「合格」 val isQualified = (age >= 20) && (height >= 170) println("資格があるか?: $isQualified") // 出力: true }
この例では、age
とheight
の条件を同時に満たす場合に「合格」とする判定を行っています。
まとめ
Kotlinの算術演算と論理演算は、日常的なプログラミングの中で頻繁に使われる基本的な機能です。
算術演算は数値を操作し、論理演算は条件を組み合わせたり反転したりするために使います。
この基本的な概念をしっかりと理解することで、今後のKotlinプログラミングをスムーズに進めることができるでしょう。
Kotlin練習問題1-1_四則演算をさせよう
ユーザーから2つの整数を入力してもらい、それらの合計、差、積、商を出力するプログラムを作成しましょう。
この問題の要件
以下の要件に従ってプログラムを作成してください。
readLine()
を使用してユーザーから入力を取得すること。- 入力された値を整数に変換できない場合、デフォルトで0を使用すること。
- 割り算を行う際には、2つ目の整数が0でないかを確認し、0であれば「2つ目の整数が0のため、割り算はできません」と表示すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
1つ目の整数を入力してください: 10 2つ目の整数を入力してください: 5 合計: 15 差: 5 積: 50 商: 2
1つ目の整数を入力してください: 10 2つ目の整数を入力してください: 0 合計: 10 差: 10 積: 0 2つ目の整数が0のため、割り算はできません
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.main関数の定義
1-1. 標準入力から整数を受け取るためのメッセージ表示
1-2. 整数を受け取るためのreadLineとtoIntOrNullを用いた入力処理
1-3. 受け取った整数の初期化(整数に変換できなかった場合は0を代入)
2.合計の計算と出力
2-1. 2つの整数の合計を計算する
2-2. 計算結果を「合計」として出力
3.差の計算と出力
3-1. 2つの整数の差を計算する
3-2. 計算結果を「差」として出力
4.積の計算と出力
4-1. 2つの整数の積を計算する
4-2. 計算結果を「積」として出力
5.商の計算と出力
5-1. 割り算の前にゼロ割りが発生しないかをチェック
5-2. ゼロ割りが発生しない場合に商を計算し、結果を出力
5-3. ゼロ割りが発生する場合にエラーメッセージを表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
fun main() { print("1つ目の整数を入力してください: ") /* ***【穴埋め問題1】*** ここにユーザーからの入力を受け取り、それを整数に変換してnum1に格納するコードを書いてください。 */ print("2つ目の整数を入力してください: ") /* ***【穴埋め問題2】*** ここにユーザーからの入力を受け取り、それを整数に変換してnum2に格納するコードを書いてください。 */ /* ***【穴埋め問題3】*** ここでnum1とnum2を使って、合計(sum)、差(difference)、積(product)、商(quotient)を計算し、それぞれの変数に格納するコードを書いてください。 */ println("合計: $sum") // 結果を出力 println("差: $difference") // 結果を出力 println("積: $product") // 結果を出力 println("商: $quotient") // 結果を出力 }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
fun main() { print("1つ目の整数を入力してください: ") val num1 = readLine()?.toIntOrNull() ?: 0 // ユーザーからの入力を受け取る print("2つ目の整数を入力してください: ") val num2 = readLine()?.toIntOrNull() ?: 0 // ユーザーからの入力を受け取る val sum = num1 + num2 // 合計を計算 val difference = num1 - num2 // 差を計算 val product = num1 * num2 // 積を計算 val quotient = num1 / num2 // 商を計算 println("合計: $sum") // 結果を出力 println("差: $difference") // 結果を出力 println("積: $product") // 結果を出力 println("商: $quotient") // 結果を出力 }
********************
コードの解説
このKotlinプログラムは、2つの整数をユーザーから入力し、それらを使って基本的な数学的操作(合計、差、積、商)を行うものです。
コードの各部分を初心者向けに解説します。
メイン関数の開始
fun main() {
Kotlinプログラムのエントリーポイントはmain
関数です。すべてのプログラムは、このmain
関数から実行が開始されます。
ユーザー入力の取得と整数への変換
print("1つ目の整数を入力してください: ") val num1 = readLine()?.toIntOrNull() ?: 0
まず、print
関数でユーザーにメッセージを表示し、readLine
を使ってユーザー入力を受け取ります。
この入力をtoIntOrNull
で整数に変換し、変換に失敗した場合には0
を代入します。このようにして、ユーザーが入力した値が整数でない場合にもプログラムがクラッシュしないようにしています。
同様に2つ目の整数も入力します。
print("2つ目の整数を入力してください: ") val num2 = readLine()?.toIntOrNull() ?: 0
合計、差、積、商の計算
val sum = num1 + num2 val difference = num1 - num2 val product = num1 * num2 val quotient = if (num2 != 0) { num1 / num2 } else { println("2つ目の整数が0のため、割り算はできません") null }
ここでは、ユーザーが入力した2つの整数を使って、いくつかの基本的な計算を行います。sum
は合計を、difference
は差を、product
は積を計算します。
また、quotient
では商を計算しますが、割る数が0
であった場合には、割り算ができないことを表示し、null
を代入します。これにより、プログラムがエラーを起こさないようにしています。
結果の表示
最後に、計算結果をprintln
を使って表示します。合計、差、積はそのまま表示され、商については、quotient
がnull
でない場合のみ結果を表示します。
let
関数を使って、null
チェックを簡潔に行っています。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。