【Swift】while文

while文とはループ処理をすることができる構文です。
前の記事で書いたfor文もループ処理をすることができる構文ですが、
for文はループさせる回数を指定するのに対し、while文は条件から外れるまでループさせる構文で、条件式がtrueの間はループさせ続けることができます。
何回繰り返すか未定のときなどに使います。

前回は 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文 は回数( 範囲 )を指定してループさせるというところに違いがあります。

whileコードimg

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 回目だけ実行されてループから抜けます。

whileコードimg2

ループ処理といえば for文 を使うことが多いと思いますが、ループ処理したいけど何回ループさせるか未定の場合は while文 が適していると思います。
以上 while文 についてでした。

次回は 辞書型 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/