こんにちは。takaです。
前回は条件分岐をやりましたが、今回は繰り返し処理をやってみます。
前回の続きから行いますので、この記事から読み始めた方は前回の記事もご覧ください。
→「【第3回】MacBookProを買ったらXcodeでiPhoneアプリを作ろう〜条件分岐処理〜」
for文
繰り返し処理は、条件を満たす場合に複数回処理を行いたい場合に使用します。
たとえば100回メッセージを出したい時に100行print()を書くことでも実現できますが、繰り返し処理を行えば、数行書く程度で100回メッセージを出すことができます。
以下に文法イメージを載せていますが、「変数 in 開始値…終了値」の形式で記載することができます。
文法イメージ
for 変数 in 開始値...終了値 { 処理 }
例えば1〜5まで処理したい場合は以下のように記述します。
for i in 1...5 { 〜実装したい処理〜; }
ちなみにですが、Swift3.0では従来のC言語タイプのfor文は使えなくなったようです。
以下のような形のfor文です。
for var i = 0; i < length; i++ { 処理 }
while文
Swiftではfor文の他にwhile文という構文を使っての繰り返し処理も行うことができます。
while 条件 { 処理 }
こちらは1〜5まで処理したい場合は以下のように記述します。
let count = 0; while count < 6 { 〜実装したい処理〜; count += 1; }
サンプルコーディング
それでは前回作成したアプリに繰り返し処理を組み込んでみます。
今回は10以下の値が入力された場合にfor文で、1〜入力された値を加算して表示します。
10以上20未満の場合はwhile文で、1〜入力された値を加算して表示します。
計算した値を表示する「label2」は今回のサンプル用に追加しています。
ラベルの追加方法は「【第2回】MacBookProを買ったらXcodeでiPhoneアプリを作ろう〜入力処理〜」をご覧ください。
butoonClickメソッドに以下のようなコードになりました。
@IBAction func buttonClick(_ sender: Any) { label.text = inputText.text; let intValue:Int = Int(inputText.text!)! var sum:Int = 0 if (intValue < 10) { for count in 1...intValue { sum += count; } // ラベルにメッセージをセットします。 label.text = String("10未満の値が入力されました。"); label2.text = String("1〜\(intValue)までの合計は\(sum)"); } else if (10 <= intValue && intValue < 20) { var count = 1; while count < intValue { sum += count; count += 1; } // ラベルにメッセージをセットします。 label.text = "10以上20未満の値が入力されました。"; label2.text = String("1〜\(intValue)までの合計は\(sum)"); } else { // ラベルにそのまま入力された文字列を入れます label.text = inputText.text; } }
動作確認
では、動作確認してみます。
まず、10未満の4を入力してみます。
for文で1〜4を加算した値(1+2+3+4=10)である「10」が表示されます。
続いて、10以上20未満の12を入力してみます。
while文で1〜12を加算した値(1+2+3+4…12=78)である「78」が表示されます。
表示内容からは分かりにくいですが、2つの繰り返し処理で1から指定した値までの加算値を出力することができました。
まとめ
HelloWorldから始まり、チュートリアル形式で入力→分岐→繰り返し→出力と基礎の基礎を扱ってきました。
簡単なものであればもうアプリが作れると思います。
次回以降では、端折ってきた変数の型や変換処理といった部分を記載したいと思います。