![見出し画像](https://assets.st-note.com/production/uploads/images/53002875/rectangle_large_type_2_3fac02845cd24173418995ac74cde5da.jpeg?width=1200)
この世でいちばんわかりやすいiPhoneアプリ開発のおはなし【If条件分岐とは】
ここでは、降水確率に基づいて適切なアドバイスを行うプログラムを考えましょう。
降水確率は、0.0~1.0の少数点数で示すことにします。 降水確率が90%なら、この変数probabilityOfRainに0.9を設定します。
var probabilityOfRain: Double
probabilityOfRain = 0.9
ある条件に基づいて、実行するコードを分岐したい場合はIfステートメントを使用します。 Ifステートメントは、条件を評価した結果がtrueだった場合のみ、一連のコードを実行することができます。
下のコードは、「降水確率が80%以上である」場合に、傘を持っていくように促すメッセージを出力します。
if probabilityOfRain >= 0.8 {
print("Take your umbrella.")
}
// Prints "Take your umbrella."
実行すると、「傘を持って行きましょう」というメッセージが出力されます。
降水確率を50%に変更すると、先ほどのIfステートメントを実行してもメッセージは出力されなくなります。
probabilityOfRain = 0.5
if probabilityOfRain >= 0.8 {
print("Take your umbrella.")
}
// Nothing Prints
「降水確率が80%以上ではない」場合は、折り畳み傘を提案するメッセージを出力しましょう。 「それ以外の条件」を評価するためには、Ifステートメントにelse節を追加します。
if probabilityOfRain >= 0.8 {
print("Take your umbrella.")
} else {
print("A folding umbrella is best.")
}
// Prints A folding umbrella is best.
現在の降水確率は50%です。 つまり、「降水確率は80%以上ではない」ので、このIfステートメントを実行すると「折り畳み傘が最適です。」というメッセージが出力されます。
降水確率が30%未満なら、折り畳み傘すらも不要かもしれません。 「雨が降らないように祈る」ことにしましょう。
else-if節を追加することで、より詳細に条件を分岐させることができます。 なお、else節は常に最後の条件として記述される必要があります。
probabilityOfRain = 0.29
if probabilityOfRain >= 0.8 {
print("Take your umbrella.")
} else if probabilityOfRain < 0.3 {
print("Hope it will be fine.")
} else {
print("A folding umbrella is best.")
}
// Prints "Hope it will be fine."
降水確率を29%に変更したうえで、このIfステートメントを実行しましょう。 すると、「雨が降りませんように」というお祈りメッセージが出力されます。 降水確率ゼロ%から100%の間で、適切なメッセージを出力できるようになりました。
このIfステートメントにおいて、出力するメッセージは以下のように分岐します。
降水確率が「80%以上」なら、「傘を持っていくように」勧める。
降水確率が「30%未満」なら、「折り畳み傘が最適」と提案する。
降水確率が「80%以上でも30%未満でもない」なら、「雨が降らないように」お祈りする。
Ifステートメントは、このような条件を上から順に評価します。 そして、条件を上から評価して、いずれにも一致しなかった場合はelse節のコードが実行されます。 ただし、Ifステートメントにおいて、else節の存在は必須ではありません。
probabilityOfRain = 0.30
if probabilityOfRain >= 0.8 {
print("Take your umbrella.")
} else if probabilityOfRain < 0.3 {
print("Hope it will be fine.")
}
// Nothing prints.
降水確率を30%に変更した上で、このIfステートメントをするとメッセージは何も出力されません。 これは、Ifステートメントにおける「条件の網羅性」に問題があることを示しています。
この記事が気に入ったらサポートをしてみませんか?