前回は Optional型 について書きました。
今回は while文 について書いていこうと思います。
while文とは
while文 とはループ処理をすることができる構文です。
前の記事で書いた for文 もループ処理をすることができる構文ですが、
for文 はループさせる回数を指定するのに対し、while文 は条件から外れるまでループさせる構文で、条件式が true の間はループさせ続けることができます。
何回繰り返すか未定のときなどに使います。
for文 についてはこちらの記事で紹介しています。
while文の書式
while 条件式(Bool値) {
処理
}
while文 は頭に while キーワードを付けます。
条件式( Bool値 )のところには、論理演算子や比較演算子などを使って条件式を書いて { } の中にループさせたい処理を書きます。
条件式が true の間はループし続けるので、処理のところにループを抜ける処理を書くか、条件式にループが終わるように指定しないと無限にループしてしまうので注意が必要です。
論理演算子についてはこちらの記事で紹介しています。
比較演算子についてはこちらの記事で紹介しています。
while文を使った例
0 ~ 9 回目まで同じ処理をループさせる例
var a = 0
while a < 10 {
print(a)
a += 1
}
//実行結果
/*
0
1
2
3
4
5
6
7
8
9
*/
0 を代入した 変数 a を準備して、a の値が 10 より小さければ( 10 は含まない ) a の値を print して、a をインクリメントします。
a の値が 10 より大きくなったら( 10 を含む ) while文 を抜けるようにしました。
0 ~ 9 回目までは true なので 9 回目まではループされますが、10 回目は条件式から外れてfalse となるので、while文を抜けます。
※ ループから抜けるように条件式や処理を書かないと無限にループしてしまいます。
同じ処理を for文 で書いてみる
上の while文 と同じ処理を for文 で書くと、
for i in 0 ..< 10 {
print(i)
}
//実行結果
/*
0
1
2
3
4
5
6
7
8
9
*/
結果は同じですが、while文 は条件式が true の間はループし続けるのに対し、for文 は回数( 範囲 )を指定してループさせるというところに違いがあります。
repeat-while文
while文との違い
while文 は条件式を先に判定してから true であれば false になるまで処理がループされますが、
repeat-while文 は、先に処理を実行した後に、条件式を判定する。という違いがあります。
後に条件式が判定されるので、判定が true だろうが false だろうが最低でも 1 回は処理が実行されます。
repeat-while文の書式
repeat {
処理
} while 条件式(Bool値)
repeat-while文 は頭に repeat キーワードを付けます。
{ } の中に処理を書いて、閉じかっこ } の後に while キーワードを書いて条件式を書きます。
先に処理、その後条件式の判定なので最低でも 1 回は処理が実行されます。
repeat-while文を使った例
条件式が true だった場合の例
var t = 0
repeat {
print(t)
t += 1
} while t < 10
//実行結果
/*
0
1
2
3
4
5
6
7
9
*/
repeat文 の処理が実行された後に、while文の条件式が判定されます。
条件式が false になるまでループします。
条件式が false だった場合の例
var f = 0
repeat {
print(f)
f += 1
} while f > 10
//実行結果
/*
0
*/
これは while文 の条件式が false なのでループはしませんが、条件式の判定よりも先に repeat文 の処理が実行されます。
その後に、条件式の判定で false となりrepeat-while文 から抜けます。
なので処理は最初の 1 回目だけ実行されてループから抜けます。
ループ処理といえば for文 を使うことが多いと思いますが、ループ処理したいけど何回ループさせるか未定の場合は while文 が適していると思います。
以上 while文 についてでした。
次回は 辞書型 について書いていこうと思います。
実行環境
version |
---|
Xcode 14.2 (14C18) |
Swift 5.2.4 |
公式ドキュメント
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/