こんにちは!リンコですピヨ!
この記事では自分の勉強の復習もかねて、Kotlinでのifを使った条件分岐について詳しく解説するピヨ!
この第7章では、プログラミング言語であるKotlinのifを使った条件分岐について、一緒に勉強していきましょう。
この記事を読めばプログラミング未経験の方も、Kotlin入門レベルのifを使った条件分岐について1つ1つ理解しながら勉強できると思うので、是非最後まで読んで頂ければと思います。
※この記事で出てくる「サンプルコード」は、記述が長く画面からはみ出ている場合がありますが、横にスライドすると表示されるのでご安心ください。
【Kotlin】ifとは?
まずKotlinでのifの使い方を勉強していく前に、そもそも「ifとは何か?」というところを簡単に説明します。
ifは、特定の条件が成立しているかどうかによって、ブログラムの動作を制御する文のことになります。
条件によって処理を変えるために「if」という命令文を使うのですが、このように条件によって処理を変更することを条件分岐と言います。
日本語でいうと「もし◯◯なら、◯◯する」や「もし◯◯なら、◯◯する。そうでなければ○○する。」などといった感じの言葉の処理になります。
ifを使うことで処理結果によって出力内容を変えることができるピヨ!
【Kotlin】条件が1つの場合のifの使い方
ifでは条件が1つの場合や2つの場合で少し記述の量が変わってくるのですが、まずは条件が1つの場合のifの使い方から勉強していきましょう。
条件が1つの場合のifは、日本語にすると「もし◯◯なら、◯◯する」というような言葉の処理になります。
条件が1つの場合のifの書式
条件が1つの場合のifの書式は以下のようになります。
if(条件){ 処理内容 }
このようにifの直後の「()」に条件を記述し、その後の「{}」に処理したい内容を記述します。
条件が1つの場合のコードを記述してみよう
実際に、条件が1つの場合のコードを記述してみましょう。
サンプルコード
以下のサンプルコードではifの条件に「2つの変数の値を比較演算子で比べている変数」を記述しています。
//変数num1に10を代入 val num1 = 10 //変数num2に20を代入 val num2 = 20 //変数answerに比較演算子の結果を代入 val answer = (num1< num2) //もしanswerの中身の比較演算子の結果がtrueなら、println関数を実行する if(answer){ println("num1よりもnum2のほうが大きい") }
出力
サンプルコードを実行すると、以下のように出力されます。
num1よりもnum2のほうが大きい
ifの直後にある「()」内の値はtrueかfalseのBooleanの値になるのですが、値がtrueの時だけ「{}」内に記述された処理が実行されます。
条件はBoolean型でtrueになった直後の{}内に記述された処理が実行されるピヨ!
()内に条件式を直接記述することもできる
上記のサンプルコードでは一度Boolean型の変数を宣言し、その変数を条件の()内に記述していましたが、条件をif文の()内に直接記述することができます。
サンプルコード
以下のサンプルコードで、条件をifの()内に直接記述してみましょう。
//変数num1に10を代入 val num1 = 10 //変数num2に20を代入 val num2 = 20 //もしnum1の値よりもnum2の値の方が大きければ、println関数を実行する if(num1< num2){ println("num1よりもnum2のほうが大きい") }
出力
サンプルコードを実行すると、以下のように出力されます。
num1よりもnum2のほうが大きい
さっきのサンプルコードよりも、今回のサンプルコードの方が記述が短いですが、同じ処理をできていることがわかります。
条件は()内に直接記述する方が簡潔になるピヨ!
【Kotlin】条件が2つの場合のifの使い方
続いて、条件が2つの場合のifの使い方を勉強していきましょう。
条件が2つの場合のifは、日本語にすると「もし◯◯なら、◯◯する。そうでなければ○○する。」というような言葉の処理になります。
条件が2つの場合の書式
条件が2つの場合のifの書式は以下のようになります。
if(条件){ 処理内容 } else { 処理内容 }
このように、最初の「{}」の後に続けて「else{処理内容}」と記述することで「そうでなければ〇〇する」という内容を表現することができます。
この「else」というキーワードが「そうでなければ」になります。
条件が2つの場合のコードを記述してみよう
実際に、条件が2つの場合のコードを記述してみましょう。
サンプルコード
以下のサンプルコードでは、num1とnum2の値の大きさを比べて、num2の値の方が大きければ1つ目のprintln関数が実行され、num1の値の方が大きければ2つ目のprintln関数が実行されます。
//変数num1に20を代入 val num1 = 20 //変数num2に10を代入 val num2 = 10 //num1の値よりもnum2の値の方が大きければ、1つ目のprintln関数を実行する //num1の値よりもnum2の値の方が小さければ、2つ目のprintln関数を実行する if(num1< num2){ println("num1よりもnum2のほうが大きい") } else { println("num1よりもnum2のほうが小さい") }
出力
サンプルコードを実行すると、以下のように出力されます。
num1よりもnum2のほうが小さい
num1の値は20でnum2の値は10とnum1の値の方が大きいので、2つ目のprintln関数が実行され「num1よりもnum2のほうが小さい」と出力されました。
条件が2つの場合のifではelseを使うピヨ!
【Kotlin】条件が3つ以上の場合のifの使い方
続いて、条件が3つ以上の場合のifの使い方を勉強していきましょう。
条件が3つ以上の場合のifは、日本語にすると「もし◯◯なら、◯◯する。そうでなくてもし○○なら○○する。そうでなければ○○する。」というような言葉の処理になります。
条件が3つ以上の場合の書式
条件が3つの以上のifの書式は以下のようになります。
if(条件){ 処理内容 } else if(条件) { 処理内容 } else { 処理内容 }
このように、最初の「{}」の後に続けて「else if(条件){処理内容}」と記述することで「そうでなくてもし〇〇なら〇〇する」という内容を表現することができます。
この「else if」というキーワードが「そうでなくてもし」になります。
条件が3つ以上の場合のコードを記述してみよう
実際に、条件が3つ以上の場合のコードを記述してみましょう。
サンプルコード
以下のサンプルコードでは、num1とnum2の値の大きさを比べて、num2の値の方が大きければ1つ目のprintln関数が実行され、num1の値の方が大きければ2つ目のprintln関数が実行され、どちらでもなければ3つ目のprintln関数が実行されます。
//変数num1に100を代入 val num1 = 100 //変数num2に100を代入 val num2 = 100 //num1の値よりもnum2の値の方が大きければ、1つ目のprintln関数を実行する //num1の値よりもnum2の値の方が小さければ、2つ目のprintln関数を実行する //どちらでもなければ3つ目のprintln関数を実行する if(num1< num2){ println("num1よりもnum2のほうが大きい") } else if(num1>num2) { println("num1よりもnum2のほうが小さい") } else { println("num1とnum2の値は同じ") }
出力
サンプルコードを実行すると、以下のように出力されます。
num1とnum2の値は同じ
このサンプルコードでは、変数num1と変数num2の両方の値が100だったため、3つ目のprintln関数が実行され「num1とnum2の値は同じ」と出力されました。
条件が3つ以上の場合のifではelse ifを使うピヨ!
【Kotlin】条件には比較演算子や論理演算や範囲(Range)を使うことができる
ここまでのifを使ったサンプルコードの条件には「<」という比較演算子を使ってきましたが、他の比較演算子はもちろん論理演算や範囲(Range)を条件に使うこともできます。
比較演算子
まずは比較演算子を条件に使ったifの勉強をしていきましょう。ここまでに「<」は使ったので「==」も使ってみましょう。
サンプルコード
val num1 = 100 val num2 = 100 if(num1==num2) { println("num1とnum2の値は同じ") } else if(num1< num2) { println("num1よりもnum2の方が大きい") } else { println("num1よりもnum2の方が小さい。") }
このサンプルコードでは、最初のifでnum1とnum2の値が同じなら1つ目のprintln関数が実行されるようになっています。その後からは、これまでと同様の処理になります。
出力
num1とnum2の値は同じ
num1の値もnum2の値も100なので、1つ目のprintln関数が実行され「num1とnum2の値は同じ」と出力されました。
論理演算
続いて論理演算を条件に使ったifの勉強をしていきましょう。ここでは論理演算の「AND(&&)」を使い、ある値が特定の範囲に入っているかどうかを判断する文を記述してみます。
サンプルコード
val age =17 if(16<=age && age<=18) { println("高校生です") } else { println("高校生ではありません") }
このサンプルコードでは、比較演算子の「<=」と論理演算の「&&」を使い「変数ageの値が16以上かつ18以下」という範囲の条件を作り、そうであれば1つ目のprintln関数が実行され、そうでなければ2つ目のprintln関数が実行されるようになっています。
出力
高校生です
変数ageの値は「17」で条件の範囲内に入るので、1つ目のprintln関数が実行され「高校生です」と出力されました。
比較演算子と論理演算を組み合わせることで、より複雑な処理を実行できるピヨ!
範囲(Range)
上記では比較演算子と論理演算を組み合わせて、値が特定の範囲に入っているかどうかを判断しましたが、6章で勉強した「Range」と使うことで、より簡単に条件を記述することができます。
サンプルコード
val age =17 if(age in 16..18) { println("高校生です") } else { println("高校生ではありません") }
このサンプルコードでは先ほどと比べRangeの、範囲内に値が存在するかを調べる「in」というキーワードと、範囲を表す「..」を使いコードを簡潔に記述して、同じ処理をすることができています。
出力
高校生です
コードが簡潔になっていますが、内容は同じなので出力結果も先ほどと同じように「高校生です」と出力されました。
ifの条件にRangeを使うことで、記述が簡潔になるピヨ!
【Kotlin】if文を式として値を返すこともできる
最後に、if文は条件分岐の処理を式として値を返すこともできます。具体的にどういうことかというと「条件分岐によって値が変わる変数を定義」することができます。
よくわからない方もいると思うので、実際にコードを見て深く理解していきましょう。
サンプルコード
//変数ageに17を代入 val age = 17 //ifの条件分岐の結果を変数msgに代入 val msg = if(age in 16..18) { "高校生です" } else { "高校生ではありません" } //変数msgの値を出力 println(msg)
このサンプルコードでは、ifによる条件分岐を式にして、式の結果を一度変数msgに代入するように記述しています。
出力
高校生です
ifによる条件分岐の結果が変数msgに代入され、その後のprintln関数で変数msgの値「高校生です」が出力されました。
ifを式して値を返すことで、値が変わる変数を定義できるピヨ!
まとめ
この記事では、プログラミング言語であるKotlinのifを使った条件分岐について勉強していきましたが、いかがでしたでしょうか?今回の記事をまとめると以下のようになります。
- 処理結果によって出力内容を変えることができるのが「if」
- if直後の「()」に条件を記述する
- ifの条件には「比較演算子」や「論理演算」や「範囲(Range)」が使える
- else{処理内容}と記述することで「そうでなければ〇〇する」と表現できる
- else if(条件){処理内容}と記述することで「そうでなくてもし〇〇なら〇〇する」と表現できる
- 式にすることでifの処理結果でそのまま変数の定義もできる
今回勉強した「ifによる条件分岐」はKotlinの入門レベルの知識になるので、何回も読み直してしっかり覚えておきましょう。
次回の記事では「whenを使った条件分岐」について勉強していくピヨ!
プログラミング未経験の方や入門レベルの方、Kotlinについて詳しくなりたい方は、また一緒に勉強するピヨ!
コメント