English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift while 和 repeat...while 循環

この記事では、Swiftプログラミングでwhileとrepeat... whileループを作成する方法を学びます。

前の記事では、for-inループ特定の回数を実行するタスクのセットを動かします。この記事では、反復回数が未知の場合にwhileとrepeat..whileをforループの代わりに使用する方法を学びます。-inループの代わりに

whileループは、条件がfalseになるまで一連の文を実行します。未知の反復回数がある場合、この種のループを使用するのが最適です。Swiftはwhileループを2種類提供しています:

1. Swift Whileループ

このループは、ループの始めに条件を評価します。

whileループの構文は:

while (TestExpression) {
    // 文
}

whileループはどう働きますか?

TestExpressionは布尔値の表現です。

TestExpressionがtrueと計算された場合、

  • whileループ内の文が実行されます。

  • そしてTestExpressionが再び計算されます。

TestExpressionがfalseと計算されるまで、このプロセスを続けます。TestExpressionがfalseと計算された場合、whileループが終了します。

Whileループのフローチャート

例1Whileループ

var currentLevel: Int = 0, finalLevel: Int = 5
let gameCompleted = true
while (currentLevel <= finalLevel) {
    //ゲームをプレイする
    if (gameCompleted) {
        print("あなたはステージ\(currentLevel)をクリアしました")
        currentLevel += 1
    }
}
print("whileループの外")

このプログラムを実行するとき、出力は以下のようになります:

あなたはステージ0をクリアしました
あなたはステージをクリアしました 1
あなたはステージをクリアしました 2
あなたはステージをクリアしました 3
あなたはステージをクリアしました 4
あなたはステージをクリアしました 5
whileループの外に

上記のプログラムでは、変数currentLevelとfinalLevelが0に初期化され、常量gameCompletedがtrueに初期化されています。

whileループの各反復で、currentLevel <= finalLevelという判断条件をチェックします。条件がtrueを返した場合、whileループ内の文を続行し、そうでない場合、ループを終了します。

実行ステップ
反復条件(currentLevel <= finalLevel)出力
10 <= 5 (true)あなたはステージ0をクリアしました
21 <= 5 (true)あなたはステージをクリアしました 1
32 <= 5 (true)あなたはステージをクリアしました 2
43 <= 5 (true)あなたはステージをクリアしました 3
54 <= 5 (true)あなたはステージをクリアしました 4
65 <= 5 (true)あなたはステージをクリアしました 5
76 <= 5 (false)whileループの外に

2ループを繰り返します。

このループは、各ループの終わりに条件を評価します。repeat ... whileループはwhileループと似ていますが、一つの重要な違いがあります。testExpression(テスト表現)を計算する前に、repeat ... whileループの主体を実行します。

repeat..whileループの構文は以下の通りです:

repeat {
    // ステートメント
    ...
} while (testExpression)

repeat ... whileループはどのように動作しますか?

repeat ... whileループの主体は一度だけ実行されます(テスト式をチェックする前に)。そうすることで、testExpressionがチェックされます。

testExpressionがtrueと評価された場合、ループ内のステートメントを実行し、その後再度testExpressionを評価します。testExpressionがfalseと評価されるまでこれを繰り返します。

testExpressionがfalseの場合、repeat..whileループは終了します。

repeat ... whileループのフローチャート

例2:repeat ... whileループ

var currentLevel: Int = 0, finalLevel: Int = 5
let gameCompleted = true
repeat {
    //ゲームをプレイする
    if (gameCompleted) {
        print("あなたはステージ\(currentLevel)をクリアしました")
        currentLevel += 1
    }
} while (currentLevel <= finalLevel)
print("repeat whileループの外")

このプログラムを実行するとき、出力は以下のようになります:

あなたはステージ0をクリアしました
あなたはステージをクリアしました 1
あなたはステージをクリアしました 2
あなたはステージをクリアしました 3
あなたはステージをクリアしました 4
あなたはステージをクリアしました 5
repeat whileループの外

上記の例では、ループ内のステートメントが最初に実行されます。次の反復では、条件 currentLevel <= finalLevel をチェックします。

条件がtrueを返した場合、whileループ内のステートメントを実行し、そうでない場合、ループは終了します。

実行ステップ
反復条件 (currentLevel <= finalLevel)出力
10 <= 5 (true)あなたはステージ0をクリアしました
21 <= 5 (true)あなたはステージをクリアしました 1
32 <= 5 (true)あなたはステージをクリアしました 2
43 <= 5 (true)あなたはステージをクリアしました 3
54 <= 5 (true)あなたはステージをクリアしました 4
65 <= 5 (true)あなたはステージをクリアしました 5
76 <= 5 (false)

repeat whileループの外

repeat と repeat whileループは同じ実行ステップを持っていますが、repeat... whileループでは、条件 currentLevel <= finalLevel はその中のステートメントが実行された後にのみその計算が行われます。

しかし中のwhileでは、currentLevel <= finalLevel 条件が実行される前にチェックされます。

3.無限whileループ

テスト式がfalseに評価されることがない場合、whileの本体とrepeat..whileループが無限に実行されます。

例3:無限whileループ

}
   print("Hello, World!")
}

 

repeat {
   print("Hello, World!")
}

このプログラムを実行するとき、出力は以下のようになります:

Hello, World!
Hello, World!
.
.
.

プログラムを実行するとき、二つのループが print("Hello, World!") 语句を無限に実行します。したがって、コントロールタブで連続的な出力が見られます。「Hello, World!」