Dans l’article précédent, nous avons appris à propos de la boucle for-in pour exécuter un ensemble de tâches un certain nombre de fois. Dans cet article, vous apprendrez à utiliser while
et repeat..while
comme alternative à la boucle for-in lorsque le nombre d’itérations est inconnu.
Une boucle while exécute un ensemble d’instructions jusqu’à ce qu’une condition devienne false
. Ces types de boucles sont mieux utilisés lorsque le nombre d’itérations n’est pas connu avant le début de la première itération. Swift propose deux types de boucles while:
1. Swift while Loop
Cette boucle évalue sa condition au début de chaque passage dans la boucle.
La syntaxe de la boucle while est:
while (TestExpression) {
// statements
}
Comment fonctionne la boucle while?
le TestExpression
est une expression booléenne.
Si la TestExpression
est évalué à true
,
- les instructions à l’intérieur de la boucle while sont exécutées.
- et le
TestExpression
est à nouveau évalué.
Ce processus se poursuit jusqu’à ce que TestExpression
est évalué à false
. Si la TestExpression
évalue à false
, tandis que la boucle est terminée.
Organigramme de la boucle while
Exemple 1: boucle While
var currentLevel:Int = 0, finalLevel:Int = 5
let gameCompleted = true
while (currentLevel <= finalLevel) {
//play game
if gameCompleted {
print("You have passed level \(currentLevel)")
currentLevel += 1
}
}
print("outside of while loop")
Lorsque vous exécutez le programme, la sortie sera:
Vous avez passé le niveau 0 Vous avez passé le niveau 1 Vous avez passé le niveau 2 Vous avez passé le niveau 3 Vous avez passé le niveau 4 Vous avez passé le niveau 5 en dehors de la boucle while
Dans le programme ci-dessus, la variableniveau actueletfinalLevelest initialisé à 0 et constantjeuComplétéest initialisé à true
.
À chaque itération de la boucle while, il vérifie la condition currentLevel <= finalLevel
. Si la condition revient true
, les instructions à l’intérieur de la boucle while sont exécutées sinon la boucle se termine.
Itération | Condition (currentLevel <= finalLevel) | Production |
---|---|---|
1 | 0 <= 5 (true) | Vous avez passé le niveau 0 |
2 | 1 <= 5 (true) | Vous avez passé le niveau 1 |
3 | 2 <= 5 (true) | Vous avez passé le niveau 2 |
4 | 3 <= 5 (true) | Vous avez passé le niveau 3 |
5 | 4 <= 5 (true) | Vous avez passé le niveau 4 |
6 | 5 <= 5 (true) | Vous avez passé le niveau 5 |
7 | 6 <= 5 (false) | en dehors de la boucle while |
2. Répéter tout en boucle
Cette boucle évalue sa condition à la fin de chaque passage dans la boucle. La boucle repeat … while est similaire à la boucle while avec une différence de clé. Le corps de la boucle repeat … while est exécuté une fois avant que l’expression de test ne soit vérifiée.
La syntaxe de la boucle repeat.. while est:
repeat {
// statements
...
} while (testExpression)
Comment répéter … pendant que la boucle fonctionne?
Le corps de la boucle repeat … while est exécuté une fois (avant de vérifier l’expression de test). Seulement à ce moment-là,testExpressionest vérifié.
SitestExpressionest évalué àvrai, les instructions à l’intérieur du corps de la boucle sont exécutées, ettestExpressionest à nouveau évalué. Ce processus se poursuit jusqu’à ce quetestExpressionest évalué à false
.
QuandtestExpressionest false
, la boucle repeat.. while se termine.
Organigramme de répétition … pendant la boucle
Exemple 2: Répéter en boucle
var currentLevel:Int = 0, finalLevel:Int = 5
let gameCompleted = true
repeat {
//play game
if gameCompleted {
print("You have passed level \(currentLevel)")
currentLevel += 1
}
} while (currentLevel <= finalLevel)
print("outside of repeat while loop")
Lorsque vous exécutez le programme, la sortie sera:
Vous avez passé le niveau 0 Vous avez passé le niveau 1 Vous avez passé le niveau 2 Vous avez passé le niveau 3 Vous avez passé le niveau 4 Vous avez passé le niveau 5 en dehors de la répétition en boucle
Dans l’exemple ci-dessus, pour la première fois, les instructions à l’intérieur de la boucle s’exécutent. Et pour la prochaine itération, il vérifie la condition currentLevel <= finalLevel
.
Si la condition revient true
, les instructions à l’intérieur de la boucle while sont exécutées sinon la boucle se termine.
Itération | Condition (currentLevel <= finalLevel) | Production |
---|---|---|
1 | 0 <= 5 (true) | Vous avez passé le niveau 0 |
2 | 1 <= 5 (true) | Vous avez passé le niveau 1 |
3 | 2 <= 5 (true) | Vous avez passé le niveau 2 |
4 | 3 <= 5 (true) | Vous avez passé le niveau 3 |
5 | 4 <= 5 (true) | Vous avez passé le niveau 4 |
6 | 5 <= 5 (true) | Vous avez passé le niveau 5 |
7 | 6 <= 5 (false) | en dehors de la répétition en boucle |
Bien que les deux while
et repeat while
boucle ont les mêmes étapes d’exécution, la condition currentLevel <= finalLevel
sur repeat while
loop n’est exécutée qu’après avoir exécuté les instructions qu’elle contient.
Mais en while
, la condition est vérifiée au début avant d’exécuter les instructions qu’elle contient.
3. Boucle while infinie
Si l’expression de test n’évalue jamais à false
, le corps de while
et repeat..while
loop est exécutée un nombre infini de fois.
Exemple 3: Boucle while infinie
while (true) {
print("Hello, World!")
}
repeat {
print("Hello, World!")
} while (true)
Lorsque vous exécutez le programme, la sortie sera:
Bonjour le monde! Bonjour le monde! . . .
Lorsque vous exécutez le programme, les deux boucles s’exécutent print("Hello, World!")