Swift 2.0とオープンソース化が発表されたSwiftの制御構文――比較演算子、条件分岐(if、else、switch)、繰り返し(for、while)&Playgroundのグラフで確認:初心者のためのSwiftで始めるプログラミング入門(4)(2/4 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、Swiftの制御構文として、比較演算子や条件分岐(if、else、switch)、繰り返し(for、while)について解説し、Playgroundのグラフで確認してみます。
if文で「もし◯◯◯だったら」を制御しよう
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("値段が異なる") }
elseを使うと「そうではない場合」を制御できる
これまで解説してきたif文では、ある1つの条件を満たしているか・満たしていないかのみを判定していました。if文では「else」(エルス)というキーワードを組み合わせることで「もし◯◯◯だったら□□□を実行し、そうでなければ△△△を実行する」といったようにプログラムの流れを制御できます。
「else」は次のように組み合わせます。「if」の構文の「}」の後に「else」を書き、続けて「{」と「}」の間に条件を満たさなかったときに実行する処理を書きます。
if 条件式 { 条件を満たしたときに実行する処理 } else { 条件を満たさなかったときに実行する処理 }
プログラムを書いてみましょう。次のプログラムは「ピーマン」と「パプリカ」の値が同じときには「println("値段が同じ")」が実行され、値が異なるときには「println("値段が異なる")」が実行されます。「ピーマン」と「パプリカ」の値をいろいろな値に変えてみて、どういう結果になるか確認してみてください。
let ピーマン = 100 let パプリカ = 120 if ピーマン == パプリカ { println("値段が同じ") } else { println("値段が異なる") }
else ifを使うと「もし」を付け足すことができる
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.
関連記事
- アップル、新プログラミング言語「Swift」「iOS 8 SDK」「Xcode 6」のベータ版を発表
米アップルが新しいプログラミング言語「Swift」と開発ツール「iOS 8 SDK」「Xcode 6」のベータ版を発表。その特徴と注目ポイントを紹介。 - iOS 8 SDK、Xcode 6、Swift 1.0がGMに。Apple Pay機能の組み込み、TestFlight Beta Testingも利用可能
米アップルが2014年9月9日に発表した内容の中から、iOS 8 SDK、Xcode 6、Apple Watch、Swift 1.0などに関する開発者向けの情報をまとめてみる。 - Swiftでの変数の定義、Xcodeでのアウトレット接続、iOSシミュレーターへの画像素材追加
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、Xcodeでアウトレットを接続する方法、Swiftでの変数定義の仕方、iOSシミュレーターへ画像素材を追加する方法などを解説します。 - OptionalなどSwiftとObjective-Cの違いを意識してPhotos Frameworkを使う
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した写真の情報を「Photos Framework」の機能を使用して取り出し、写真の情報にひも付いた座標にピンを表示します。また、その過程でOptionalなどSwiftとObjective-Cの違いについて解説します。 - Swiftのカスタムクラスの作り方――プロトコル、サブクラス、イニシャライザー、タイププロパティメソッドのオーバーライド、デリゲートについて注釈の作成で学ぶ
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した地図上の「注釈」を写真のサムネイルに差し替える課程でSwiftのカスタムクラスの作成手順について解説します。 - iOS 8アプリ開発のこれまで&Swift 1.2への対応、プロパティオブザーバーとwillSetの基本的な使い方、セグエを使った画面遷移
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。最終回は、これまでの連載を振り返り、これまで作成したPhotoKitを使ったサンプルアプリの仕上げとしてセグエを使った画面遷移を実装の仕方や、プロパティオブザーバーとwillSetの基本的な使い方を解説する。 - 外から見るWWDC 2014キーノート――Swiftに感じるAppleの本気
WWDC常連のドリキンが今年もキーノートを斬ります! 今回はメディアとエンジニアとで、反応が真っ二つに分かれる内容となりました。その理由をエンジニア視点で解き明かしていきたいと思います。 - Excelでプログラム作成を始めるメリットとマクロの基本
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。