【Swift】初心者必見!whileで繰り返し処理を行う!
(*このページは2021年3月1日に更新されました。)
Swiftで繰り返し処理を行うにはwhileを使用します。
whileは繰り返し処理を行う構文であり、条件式がtrueの状態である限りずっと繰り返し処理を行うことができます。
つまり、回数指定があるforと比べて用途が異なりますので同じものと認識しないことをオススメします。
また、whileには「無限ループ」発生する可能性がありますので注意しながら使用してください。
今回はSwiftのwhileで繰り返し処理を行う方法について以下の内容を解説していきます。
⚫︎ whileとは
⚫︎ 繰り返し処理を正常に行う場合
⚫︎ 繰り返し処理を途中で抜ける場合
⚫︎ 繰り返し処理をスキップする場合
⚫︎ whileで最低でも一回だけ処理を行う方法
⚫︎ forとwhileの違い
目次
whileとは
whileとは条件式がtrueの状態である限りずっと繰り返し処理を行う構文となります。
そして、条件式がfalseと判定されると繰り返し処理が終了します。
whileの書き方
whileの構文は下記のようになります。
1 2 3 |
while(条件式){ 処理内容 } |
whileの後ろにある条件式がtrueと判断されると、whileの括弧内({})の処理が行われるようになります。
そして、条件式がfalseと判断されると、whileの括弧内({})の処理から抜け出します。
whileを使用する際に注意すべきこと
whileを使用する際に注意すべきことがあります。
⚫︎ 無限ループにならないようにする
for文の場合は、決まった回数分の繰り返し処理を行いますが、whileは条件式次第で繰り返して処理を行うか行わないかが決まります。
つまり、条件式でずっとtrueと判断されると、whileの括弧内({})の処理から抜けだせなくなり、無限ループとなってしまいます。
例えば、下記のコードを見てください。
無限ループの例
1 2 3 4 |
var i = 1 while(i<4){ print("繰り返し処理が発動") } |
この場合、変数iは「1」で「i < 4」となるのでずっとtrueと判断され、無限ループが発生します。
無限ループは処理が終わらないことから、PCが重くなったり、アプリが落ちたりすることがあるのでwhileを使用する際には注意するようにしましょう。
whileの基本的な使い方
whileの基本的な使い方を紹介します。
繰り返し処理を正常に行う場合
whileの条件式でtrueからfalseに判定させることで、繰り返し処理を正常に行うことができます。
例
1 2 3 4 5 |
var i = 1 while(i <= 10){ print("繰り返し処理が発動: " + "\(i)" + "回目") i = i + 1 } |
出力結果
繰り返し処理が発動: 1回目
繰り返し処理が発動: 2回目
繰り返し処理が発動: 3回目
繰り返し処理が発動: 4回目
繰り返し処理が発動: 5回目
繰り返し処理が発動: 6回目
繰り返し処理が発動: 7回目
繰り返し処理が発動: 8回目
繰り返し処理が発動: 9回目
繰り返し処理が発動: 10回目
インデックス変数のみを使用することで、インデックスを取得しています。
繰り返し処理を途中で抜ける場合
whileにbreakを使用することで、繰り返し処理を途中で抜けることができます。
例
1 2 3 4 5 6 7 8 |
var i = 1 while(i <= 10){ print("繰り返し処理が発動: " + "\(i)" + "回目") if(i == 8) { break } i = i + 1 } |
出力結果
繰り返し処理が発動: 1回目
繰り返し処理が発動: 2回目
繰り返し処理が発動: 3回目
繰り返し処理が発動: 4回目
繰り返し処理が発動: 5回目
繰り返し処理が発動: 6回目
繰り返し処理が発動: 7回目
繰り返し処理が発動: 8回目
breakによってwhileの繰り返し処理を途中で抜け出しています。
その為、条件式は通常だと10回まで繰り返して処理が行われますが、8回までしか繰り返して処理が行われていません。
繰り返し処理をスキップする場合
whileにcontinueを使用することで、繰り返し処理をスキップすることができます。
例
1 2 3 4 5 6 7 8 9 10 |
var i = 1 while(i <= 10){ if(i % 2 == 0) { i = i + 1 continue } print("繰り返し処理が発動: " + "\(i)" + "回目") i = i + 1 } |
出力結果
繰り返し処理が発動: 1回目
繰り返し処理が発動: 3回目
繰り返し処理が発動: 5回目
繰り返し処理が発動: 7回目
繰り返し処理が発動: 9回目
continueによってwhileの繰り返し処理をスキップしています。
その為、奇数回数のみ表示されています。
whileで最低でも一回だけ処理を行う方法
whileで最低でも一回だけ処理を行うにはrepeat whileを使用します。
repeat whileとは条件式の前に先に処理を行う構文となります。
whileは「条件 → 処理」という流れでしたが、それに比べrepeat whileは「処理 → 条件」という流れで処理を行うようになります。
つまり、一回目の条件式でfalseと判断されても必ず一回は処理が行われるようになるということです。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var count1 = 1 repeat { print("繰り返し処理が発動1: " + "\(count1)" + "回目") count1 += 1 } while(count1 < 0) var count2 = 1 repeat { print("繰り返し処理が発動2: " + "\(count2)" + "回目") count2 += 1 } while(count2 < 10) } |
出力結果
繰り返し処理が発動1: 1回目
繰り返し処理が発動2: 1回目
繰り返し処理が発動2: 2回目
繰り返し処理が発動2: 3回目
繰り返し処理が発動2: 4回目
繰り返し処理が発動2: 5回目
繰り返し処理が発動2: 6回目
繰り返し処理が発動2: 7回目
繰り返し処理が発動2: 8回目
繰り返し処理が発動2: 9回目
repeat whileによって条件よりも前に処理が行われています。
その為、「繰り返し処理が発動1」は条件式ではいきなりfalseと判断されるので、処理が1回だけ行われています。
また、「繰り返し処理が発動2」はcount2が10になるとfalseと判断されるので、処理が9回行われています。
forとwhileの違い
繰り返し処理にはこのページで紹介しているwhile以外にもforがあります。
どちらも繰り返し処理を行う際に使用しますが、用途によって違いがあります。
それは、「繰り返す回数を把握しているかしていないか」です。
例えば、観光地おすすめランキング第5位までを表示する場合に、表示する処理は5回だと把握できるのでその際はforを使用します。
しかし、「東京都」というキーワードを含む観光地を表示する場合、何件あるのか把握できないのでその際はwhileを使用します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var arr1 = [3, 2, 5, 1, 4, 0, 10, 34, 45, 70] arr1.sort { $0 > $1 } for k in arr1 { while(k > 2){ print(k) break } } var arr2: [Int] = [] for i in arr1 { print(i) arr2.append(i) if (arr2.count == 5) { break } } |
出力結果
70
45
34
10
5
4
3
70
45
34
10
5
whileの場合は配列から2より大きい数字を全て取り出しています。
しかし、forは配列から大きい数字第5位を取り出しています。
まとめ
whileで繰り返し処理を行う
Swiftで条件よって繰り返し処理を行うにはwhileを使用する。
⚫︎ whileとは条件式がtrueの状態である限りずっと繰り返し処理を行う構文である
⚫︎ whileを使用する際に「無限ループ」にならないよう注意する
⚫︎ 繰り返し処理を正常に行うにはwhileの条件式でtrueからfalseに判定させる
⚫︎ whileで繰り返し処理を途中で抜けるにはbreakを使用する
⚫︎ whileで繰り返し処理をスキップするにはcontinueを使用する
⚫︎ whileで最低でも一回だけ処理を行うにはrepeat whileを使用する
⚫︎ forとwhileの違いは、「繰り返す回数を把握しているかしていないか」である
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。