Swift 2.0とオープンソース化が発表されたSwiftの制御構文――比較演算子、条件分岐(if、else、switch)、繰り返し(for、while)&Playgroundのグラフで確認初心者のためのSwiftで始めるプログラミング入門(4)(2/4 ページ)

» 2015年06月10日 05時00分 公開
[諏訪悠紀アンダースコア]

if文で「もし◯◯◯だったら」を制御しよう

 if(イフ)文はある条件を満たすときだけ処理を実行する制御構文です。「もし◯◯◯だったら□□□を実行する」といったようにプログラムの流れを制御することができます。

if文の制御の流れ

 if文は次のように書きます。「if」の後に条件式を書き、続けて「{」と「}」の間に条件を満たしたときに実行する処理を書きます。

if 条件式 {
    条件を満たしたときに実行する処理
}

 プログラムを実際に書いてみましょう。次のプログラムでは、「キャベツ」と「レタス」の値が同じ場合のみ、「println("値段が同じ")」というプログラムが実行されます。

let キャベツ = 100
let レタス = 100
if キャベツ == レタス {
    println("値段が同じ")
}
if文の条件を満たしているプログラムの例

 次に、「レタス」を違う値に書き換えてみましょう。この場合if文の条件式は正しくないと判定されるため、「println("値段が同じ")」というプログラムは実行されません。

let キャベツ = 100
let レタス = 200
if キャベツ == レタス {
    println("値段が同じ")
}
if文の条件を満たしていないプログラムの例

 さらに今度は、条件式の「==」を「!=」に、「println("値段が同じ")」を「println("値段が異なる")」に書き換えてみましょう。こうすると「キャベツ」と「レタス」の値が異なっているかどうかを判定する条件式になるため、正しいと判定されます。つまり、今までの条件式とは全く反対の条件式になります。

let キャベツ = 100
let レタス = 200
if キャベツ != レタス {
    println("値段が異なる")
}
if文の条件式が「!=」のプログラムの例

elseを使うと「そうではない場合」を制御できる

 これまで解説してきたif文では、ある1つの条件を満たしているか・満たしていないかのみを判定していました。if文では「else」(エルス)というキーワードを組み合わせることで「もし◯◯◯だったら□□□を実行し、そうでなければ△△△を実行する」といったようにプログラムの流れを制御できます。

ifとelseの制御の流れ

 「else」は次のように組み合わせます。「if」の構文の「}」の後に「else」を書き、続けて「{」と「}」の間に条件を満たさなかったときに実行する処理を書きます。

if 条件式 {
    条件を満たしたときに実行する処理
} else {
    条件を満たさなかったときに実行する処理
}

 プログラムを書いてみましょう。次のプログラムは「ピーマン」と「パプリカ」の値が同じときには「println("値段が同じ")」が実行され、値が異なるときには「println("値段が異なる")」が実行されます。「ピーマン」と「パプリカ」の値をいろいろな値に変えてみて、どういう結果になるか確認してみてください。

let ピーマン = 100
let パプリカ = 120
if ピーマン == パプリカ {
    println("値段が同じ")
} else {
    println("値段が異なる")
}
ifとelseを組み合わせたプログラムの例

else ifを使うと「もし」を付け足すことができる

 if文では「else」よりも複雑な表現が可能です。「else if」(エルスイフ)というキーワードを組み合わせることで「もし◯◯◯だったら□□□を実行し、もし●●●だったら■■■を実行する」といったようにプログラムの流れを制御することができます。

ifと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("トマトが高い")
}
ifとelse ifを組み合わせたプログラムの例

 「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を使ったプログラムの例

 「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文の誤った判定順

 このように、if文に「else if」を組み合わせるときは条件式の順番に注意して作る必要があります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。