if(イフ)文はある条件を満たすときだけ処理を実行する制御構文です。「もし◯◯◯だったら□□□を実行する」といったようにプログラムの流れを制御することができます。
if文は次のように書きます。「if」の後に条件式を書き、続けて「{」と「}」の間に条件を満たしたときに実行する処理を書きます。
if 条件式 { 条件を満たしたときに実行する処理 }
プログラムを実際に書いてみましょう。次のプログラムでは、「キャベツ」と「レタス」の値が同じ場合のみ、「println("値段が同じ")」というプログラムが実行されます。
let キャベツ = 100 let レタス = 100 if キャベツ == レタス { println("値段が同じ") }
次に、「レタス」を違う値に書き換えてみましょう。この場合if文の条件式は正しくないと判定されるため、「println("値段が同じ")」というプログラムは実行されません。
let キャベツ = 100 let レタス = 200 if キャベツ == レタス { println("値段が同じ") }
さらに今度は、条件式の「==」を「!=」に、「println("値段が同じ")」を「println("値段が異なる")」に書き換えてみましょう。こうすると「キャベツ」と「レタス」の値が異なっているかどうかを判定する条件式になるため、正しいと判定されます。つまり、今までの条件式とは全く反対の条件式になります。
let キャベツ = 100 let レタス = 200 if キャベツ != レタス { println("値段が異なる") }
これまで解説してきたif文では、ある1つの条件を満たしているか・満たしていないかのみを判定していました。if文では「else」(エルス)というキーワードを組み合わせることで「もし◯◯◯だったら□□□を実行し、そうでなければ△△△を実行する」といったようにプログラムの流れを制御できます。
「else」は次のように組み合わせます。「if」の構文の「}」の後に「else」を書き、続けて「{」と「}」の間に条件を満たさなかったときに実行する処理を書きます。
if 条件式 { 条件を満たしたときに実行する処理 } else { 条件を満たさなかったときに実行する処理 }
プログラムを書いてみましょう。次のプログラムは「ピーマン」と「パプリカ」の値が同じときには「println("値段が同じ")」が実行され、値が異なるときには「println("値段が異なる")」が実行されます。「ピーマン」と「パプリカ」の値をいろいろな値に変えてみて、どういう結果になるか確認してみてください。
let ピーマン = 100 let パプリカ = 120 if ピーマン == パプリカ { println("値段が同じ") } else { println("値段が異なる") }
if文では「else」よりも複雑な表現が可能です。「else if」(エルスイフ)というキーワードを組み合わせることで「もし◯◯◯だったら□□□を実行し、もし●●●だったら■■■を実行する」といったようにプログラムの流れを制御することができます。
「else if」は次のように組み合わせます。「if」のみの構文の「}」の後に「else if」を書き、続けてもう一つの条件式を書きます。そして「{」と「}」の間に条件を満たしたときに実行する処理を書きます。
if 条件式【1】 { 条件式【1】の条件を満たしたときに実行する処理 } else if 条件式【2】 { 条件式【2】の条件を満たしたときに実行する処理 }
プログラムを書いてみましょう。次のプログラムは「トマト」と「キュウリ」の値が同じときに「println("値段が同じ")」が実行され、「トマト」の方が「キュウリ」より高い場合は「println("トマトが高い")」が実行されます。
let トマト = 120 let キュウリ = 100 if トマト == キュウリ { println("値段が同じ") } else if トマト > キュウリ { println("トマトが高い") }
「else if」は複数付け加えることができます。また「else」も組み合わせることができます。「else」は全ての条件を満たさなかったときに実行されます。そのため、if文の最後に書く必要があります。
if 条件式【1】 { 条件式【1】の条件を満たしたときに実行する処理 } else if 条件式【2】 { 条件式【2】の条件を満たしたときに実行する処理 } else if 条件式【3】 { 条件式【3】の条件を満たしたときに実行する処理 } else { 全ての条件を満たさなかったときに実行する処理 }
「else if」と「else」を組み合わせたプログラムを書いてみましょう。次のプログラムはナスの値段を判定するプログラムです。100円以下の場合や200円以下の場合の条件式を作るために「<=」という演算子を使っています。「if」または「else if」の条件に当てはまらない場合は301円以上ということになります。
let ナスの値段 = 120 if ナスの値段 <= 100 { println("ナスは100円以下") } else if ナスの値段 <= 200 { println("ナスは200円以下") } else if ナスの値段 <= 300 { println("ナスは300円以下") } else { println("ナスは301円以上") }
「if」だけでは簡単な条件しか作れませんでしたが、「else if」や「else」を加えることで、1つのif文でいろいろな条件を表現できることが分かりました。便利な一方で、if文を作る上での注意点があります。それは条件を書いた順番に判定されるということです。
上記のプログラムをもう一度見てみましょう。数が小さい順番に判定を行っているのが分かると思います。では、数が大きい順番に判定を行うとどうなるでしょうか?
let ナスの値段 = 100 if ナスの値段 <= 300 { println("ナスは300円以下") } else if ナスの値段 <= 200 { println("ナスは200円以下") } else if ナスの値段 <= 100 { println("ナスは100円以下") } else { println("ナスは301円以上") }
if文は上から順番に判定されるため、このプログラムでは、はじめに「ナスの値段 <= 300」が判定されます。「ナスの値段」が300円以下の場合は条件を満たしていると判定されるので、100円でも200円でも「println("ナスは300円以下")」が実行されます。これでは「ナスの値段 <= 200」と「ナスの値段 <= 100」の条件式は判定されなくなってしまいます。
このように、if文に「else if」を組み合わせるときは条件式の順番に注意して作る必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.