Kotlin入門講座~条件分岐~

プログラムは基本的に上から順番に実行されますが、制御構文を使うと、途中で処理を分岐させたり、処理を繰り返したりすることができます。

今回は、条件分岐の制御構文「if」「when」について学んでいきましょう。

if

「条件に合致する時だけ処理を実行する」というプログラムを書く場合は、「if」を使います。

if( 条件式 ){
条件式を満たす時に実行する処理
}

「条件式」の部分は前回に学んだ「比較演算子」を使って書き、左辺と右辺の値を比べた結果をtrueかfalseかで判断し、true=条件式を満たす、false=条件式を満たさないということになります。

以下は、変数aの値が10未満の場合に、処理を実行するプログラムの例です。
もし、aの値が10以上の場合は、何も表示されません。

fun main(args : Array<String>){
val a = 5
if(a < 10){
println(“aは10より小さいです。”)
}
}
———————————————————————————————-
実行結果
aは10より小さいです。

else

「if」は、条件に合致する時しか処理を実行しません。もし条件に合致しない時も何かしらの処理を実行したい場合は「else」を使います。
つまり「条件に応じて必ずどちらかの処理を実行する」ということになります。

if( 条件式 ){
条件式を満たす時に実行する処理
}else{
条件式を満たさない時に実行する処理
}

以下は、elseの利用例です。a < 10 の条件式を満たさない為、elseの処理を実行しています。

fun main(args : Array<String>){
val a = 10
if(a < 10){
println(“aは10より小さいです。”)
}else{
println(“aは10以上です。”)
}
}
———————————————————————————————-
実行結果
aは10以上です。

else if

複数の条件で処理を分岐したい場合は「else if」を使います。

if( 条件式1 ){
条件式1を満たす時に実行する処理
}else if( 条件式2 ){
条件式1は満たさないが、条件式2を満たす時に実行する処理
}

else if の利用例です。1つ目の条件には合致しませんが、2つ目の条件に合致しているので処理を実行しています。

fun main(args : Array<String>){
val a = 15
if(a < 10){
println(“aは10より小さいです。”)
}else if(a < 20) {
println(” aは20より小さいです。”)
}
}
———————————————————————————————-
実行結果
aは20より小さいです。

「else if」を使う時は、2つ目以降の条件はそれより前の条件と被らないことが大事です。もし条件が被っている場合、先に条件が合致したほうしか実行されません。

例えば、下記のプログラムは、aの値が10未満の場合、1つ目の条件で合致してしまうため、2つ目の条件式が意味のないものになっています。

fun main(args : Array<String>){
val a = 5
if(a < 20){
println(“aは20より小さいです。”)
}else if(a < 10){ // 1つ目の条件に合致するため、絶対に通らない
println(“aは10より小さいです。”)
}
}
———————————————————————————————-
実行結果
aは20より小さいです。

条件の数だけ「else if」を複数繋げて使うこともできます。

fun main(args : Array<String>){
val a = 15
if(a < 10){
println(“aは10より小さいです。”)
}else if(a < 20){ // aが10以上20未満の場合に実行
println(“aは20より小さいです。”)
}else if(a < 30){ // aが20以上30未満の場合に実行
println(“aは30より小さいです “)
}
}
———————————————————————————————-
実行結果
aは20より小さい です。

elseと組み合わせて書くこともできます。

fun main(args : Array<String>){
val a = 15
if(a < 10){
println(“aは10より小さいです。”)
}else if(a < 20){ // aが10以上20未満の場合に実行
println(“aは20より小さいです。”)
}else{ // 上記のどの条件にも合致しない場合に実行
println(“aは20以上です “)
}
}
———————————————————————————————-
実行結果
aは20より小さいです。

また、kotlinでは、ifの結果をtrue/falseだけではなく、任意の値で受け取ることができます。

下記は、ifの結果を任意の値で受け取り、変数resultに代入する例です。

fun main(args : Array<String>){
val a = 10
var result = if(a < 10){
“aは10より小さいです。”
}else{
“aは10以上です。”
}
print(result)
}
———————————————————————————————-
実行結果
aは10以上です。

when

whenもifと同じ条件分岐の構文です。

when{
条件式1 -> 条件式1を満たす場合に実行する処理
条件式2 -> 条件式2を満たす場合に実行する処理
else -> 上記のいずれも満たさない場合に実行する処理
}

変数aの値が10と等しいか、20と等しいか、それ以外かを比較して条件分岐する例です。

fun main(args : Array<String>){
val a = 20
when{
a == 10 -> println(“aは10です。”)
a == 20 -> println(“aは20です。” )
else -> println(“合致する数値がありません。” )
}
}
———————————————————————————————-
実行結果
aは20です。

上記のように「値が一致するかどうか」というような条件式の場合は 、
「引数」を使って書くこともできます。
引数とは、「処理を実行するために必要な情報を受け取るためのもの」です。
引数を使う時は、「when(引数)」のように記述します。

上記のサンプルコードを、引数を使って書き替えると下記のようになります。
引数を使う場合は、「==」を使った条件式を省略して書きます。

fun main(args : Array<String>){
val a = 20
when(a){ // 変数aを引数で受け取る
10 -> println(“aは10です。”) // 「a == 」の記述は省略する
20 -> println(“aは20です。” ) // 「a == 」の記述は省略する
else -> println(“合致する数値がありません。” )
}
}
———————————————————————————————-
実行結果
aは20です。

「if」と同様に、whenの結果を任意の値で受け取ることができます。

fun main(args : Array<String>){
val a = 20
var result = when(a){
10 -> “aは10です。”
20 -> “aは20です。”
else -> “合致する数値がありません。”
}
println(result)
}
———————————————————————————————-
実行結果
aは20です。

次回は、制御構文(繰り返し)について学んでいきたいと思います。

この記事の著者

, 」カテゴリの記事