繰り返し構文
条件を満たすまで処理を繰り返す「繰り返し処理」を見ていきましょう。
for-in文
処理を繰り返す回数は、カウンタと呼ばれる変数に範囲を指定します。
1 2 3 |
for 変数名(カウンタ) in 範囲 { 繰り返したい処理 } |
このカウンタはあらかじめ宣言する必要はありません。for構文の中に置かれ、そこで宣言がなされます。
このカウンタに、「範囲」で指定した数字が順番に入れられ、全て入れ終わったら処理が終了します。
範囲にはレンジ演算子を使用します。
次の使用例コードを出力してみましょう。カウンタ変数indexの中身がどのようになるか確認してください。
1 2 3 4 |
// 0~9の繰り返し処理 for index in 0...9{ print("\(index)回目") } |
for-in文は、配列などの繰り返し項目の要素を、先頭から順に利用するのにも便利です。
1 2 3 4 |
let words = ["りんご","ごりら","らくだ"]; for x in words { print(x) } |
words配列の中身が順番にカウンタ変数xの中に入れられ、全て入れ終わったら処理が終了します。
またカウンタの数値を引用しない場合は「_(アンダーバー)」で省略して記述することもできます。
1 2 3 |
for _ in 0..<2 { print("予定の時間です。準備してください!") } |
while文
while文は「条件を満たしている間、繰り返し処理を行う」という書き方ができます。
あるデータをある状態にまで変化させたいときなどに利用します。
1 2 3 |
while 繰り返し処理を継続する条件 { 繰り返したい処理 } |
こちらは数を数えるカウンタ用変数は用意されませんので、あらかじめそのための変数を用意します。その変数を構文内で+1などして変化させ、いつか終わりがくるよう条件を設定します。
while文を使って、2の3乗(1に、×2を3回繰り返す)を行ってみましょう。
1 2 3 4 5 6 7 8 |
var count = 0 //回数カウント用の変数を用意 var result = 1 //この1に対して処理を行なっていきます while count <= 2 { //countの値が2以下(0,1,2)の時だけ処理を継続する result *= 2 //繰り返したい処理 count += 1 //countの値に加算する } print("合計は\(result)") |
結果を確認してみましょう。行われた動作を下記に順番に記載します。
countが0のとき:result = 1 × 2 resultに2が代入
countが1のとき:result = 2 × 2 resultに4が代入
countが2のとき:result = 4 × 2 resultに8が代入
countが3のとき:count <= 2 の条件に当てはまらないので、処理を外れる→print文が実行される
この繰り返しの処理は、慣れないと「実行してみると思っていた結果と違う!」となる場合が多いです。
条件の設定が間違っていないか、確認しましょう。
わからなくなったときは、上記のように言葉で書き出してみてください。
また、判定の位置を、処理が行われた後に書くこともできます。
1 2 3 |
repeat { 繰り返したい処理 } while 繰り返し処理を継続する条件 |
Playgroundで動かし、結果を確認しましょう。