プログラミング入門⑩ 制御構文

制御構文って何?

 アプリでは「このときには、こういう動作にしたい」「この動作を10回繰り返したい」といったように、プログラムに条件を付け加えたり、同じプログラムを繰り返し行わせたりすることが必要な場面が出てきます。こういった場合、どのようなプログラムを書けばいいのでしょうか?

条件によって変わるアプリの動作
 前回、プログラムは上から順番に実行されると説明しました。しかし「このときには、こういう動作にしたい」といった場合、プログラムの一部をある条件のときのみ実行されるようにしたり、同じ行を繰り返し実行されるようにしたりといったプログラムの流れを制御する必要があります。

プログラムの流れの制御
 そこで、Swiftではプログラムの流れを制御するための特別な構文が用意されています。この構文のことを「制御構文」と呼びます。制御構文は目的に応じていくつか用意されています。

制御構文 目的
if文 ある条件を満たすときだけ処理を実行する
switch文 値に応じて処理を分岐させる
for文 指定した回数だけ同じ処理を実行する
while文 ある条件を満たしている間、同じ処理をずっと繰り返す
 それぞれ、サンプルプログラムを通して学んでいきましょう。

制御構文で使う「条件式」と「比較演算子」

 制御構文を学ぶ前に、まずは条件式について理解しましょう。条件式とは2つの値を比較して、真偽(正しいかどうか)を判定する式のことです。制御構文の中では、この条件式で判定した結果によってプログラムの流れを変えていきます。

 まず、次のプログラムを書いてみましょう。

let ニンジン = 100
let タマネギ = 100
let 値段の比較 = ニンジン == タマネギ
println(値段の比較)

条件式を使った値の比較
 このプログラムの3行目では「ニンジン」と「タマネギ」の値を「==」を使って比較しています。「==」は右辺と左辺が同じ値であるかどうかを判別する演算子です。このような、2つの値を比較するための演算子を「比較演算子」と呼びます。条件式では、この比較演算子を使っていろいろな条件を組み立てていきます。

 条件式を使うと、2つの値を比較した結果をBool型の値として得ることができます(Bool型については、前回の記事を参照してください)。つまり上記のプログラムでは「ニンジン」と「タマネギ」が同じ値かどうかを判定した結果が、「値段の比較」という定数にBool型の値として代入されます。「ニンジン」と「タマネギ」はどちらも「100」で同じなので、結果は「true」(正しい)になります。

条件式のイメージ
 比較演算子は「==」だけではなく、次のようなものがあります。

比較演算子 意味
== 左辺と右辺が同じ値であるか
!= 左辺と右辺が異なる値であるか
> 左辺が右辺より大きい値であるか
>= 左辺が右辺より大きいまたは同じ値であるか
< 左辺が右辺より小さい値であるか
<= 左辺が右辺より小さいまたは同じ値であるか
 比較演算子で比較する2つの値は原則的に同じ型でなければいけません(※)。そのため、次のような条件式を書くとエラーになってしまいます。

※型の組み合わせによっては、評価できるように自動的に変換してくれる場合があります。特殊なケースになるので、今回は割愛させていただきます。

let 比較 = "100" == 100
タップで拡大
異なる型の値の比較
 「>」や「<」のような2つの値を大きいか小さいか比較する演算子は、数値の型(Int型、Double型、Float型)のみ利用できます。String型やBool型は利用できません。

let 大小の比較 = "100" > "90" // エラー
 条件式は制御構文の中では多用しますので、書き方を覚えておくようにしましょう。それでは、次の章から制御構文を使ったプログラムを試していきましょう。