English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá a criar loops while e repeat...while no Swift.
No artigo anterior, aprendemosFor-Loop inPara executar um conjunto de tarefas uma quantidade determinada de vezes. Neste artigo, você aprenderá a usar while e repeat..while como substituto para o loop in, quando o número de iterações é desconhecido.-Método alternativo para loop in
O loop while executa um conjunto de instruções até que a condição se torne false. Quando o número de iterações é desconhecido antes do início da primeira iteração, é melhor usar esse tipo de loop. O Swift oferece dois tipos de loops while:
Este loop avalia sua condição no início de cada iteração do loop.
A sintaxe do loop while é:
while (TestExpression) { // Instruções }
TestExpression é uma expressão booleana.
Se o TestExpression for calculado como true,
As instruções dentro do loop while serão executadas.
E o TestExpression será calculado novamente.
Continue com este processo até que o TestExpression seja calculado como false. Se o resultado do cálculo do TestExpression for false, o loop while será interrompido.
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) { //Jogue o jogo if (gameCompleted) print("Você passou de nível (currentLevel)") currentLevel += 1 } } print("Fora do loop while")
Quando você executar o programa, a saída será:
print("Fora do loop repeat while") Você passou de nível 1 Você passou de nível 2 Você passou de nível 3 Você passou de nível 4 Você passou de nível 5 Fora do loop while
Neste programa, as variáveis currentLevel e finalLevel são inicializadas como 0 e a constante gameCompleted como true.
Em cada iteração do loop while, ele verifica a condição de decisão currentLevel <= finalLevel. Se a condição retornar true, continuará a executar as instruções dentro do loop while; caso contrário, o loop será interrompido.
Iteração | Condição (currentLevel <= finalLevel) | Saída |
---|---|---|
1 | 0 <= 5 (verdadeiro) | Você passou de nível 0 |
2 | 1 <= 5 (verdadeiro) | Você passou de nível 1 |
3 | 2 <= 5 (verdadeiro) | Você passou de nível 2 |
4 | 3 <= 5 (verdadeiro) | Você passou de nível 3 |
5 | 4 <= 5 (verdadeiro) | Você passou de nível 4 |
6 | 5 <= 5 (verdadeiro) | Você passou de nível 5 |
7 | 6 <= 5 (falso) | Fora do loop while |
Este loop avalia sua condição no final de cada iteração. O loop repeat ... while é semelhante ao loop while, mas há uma diferença crucial. Antes de verificar a expressão de teste calculada (testExpression), o corpo do loop repeat ... while é executado uma vez.
A sintaxe do loop repeat..while é:
repeat { // instruções ... }
O corpo do loop repeat... while é executado uma vez (antes de verificar a expressão de teste). Apenas assim, a expressão de teste é verificada.
Se testExpression for calculado como true, execute as instruções dentro do loop e, em seguida, recalcule testExpression. Continue até que testExpression seja calculado como false.
Quando testExpression é falso, o loop repeat... while termina.
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true repeat { //Jogue o jogo if (gameCompleted) print("Você passou de nível (currentLevel)") currentLevel += 1 } while (currentLevel <= finalLevel) }
Quando você executar o programa, a saída será:
print("Fora do loop repeat while") Você passou de nível 1 Você passou de nível 2 Você passou de nível 3 Você passou de nível 4 Você passou de nível 5 Você passou de nível 0
Fora do loop repeat while
No exemplo acima, a primeira instrução dentro do loop é executada. Para a próxima iteração, ele verifica a condição currentLevel <= finalLevel.
Iteração | Condição (currentLevel <= finalLevel) | Saída |
---|---|---|
1 | 0 <= 5 (verdadeiro) | Você passou de nível 0 |
2 | 1 <= 5 (verdadeiro) | Você passou de nível 1 |
3 | 2 <= 5 (verdadeiro) | Você passou de nível 2 |
4 | 3 <= 5 (verdadeiro) | Você passou de nível 3 |
5 | 4 <= 5 (verdadeiro) | Você passou de nível 4 |
6 | 5 <= 5 (verdadeiro) | Você passou de nível 5 |
7 | 6 <= 5 (falso) | Fora do loop repeat while |
Embora os loops repeat e repeat while tenham os mesmos passos de execução, a condição currentLevel <= finalLevel é calculada apenas após a execução das instruções dentro do loop repeat... while.
Mas no while, a condição currentLevel <= finalLevel é verificada antes de executar a condição.
Se a expressão de teste nunca for calculada como false, o corpo do while e do loop repeat..while será executado infinitamente.
while (true) { print("Hello, World!") }
repeat { print("Hello, World!") } while (true)
Quando você executar o programa, a saída será:
Hello, World! Hello, World! . . .
Quando você executar o programa, os dois loops executarão a sentença print("Hello, World!") infinitamente. Portanto, você pode ver que no console, a saída consecutiva