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

Loops while e repeat...while no Swift

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:

1Loop while no Swift

Este loop avalia sua condição no início de cada iteração do loop.

A sintaxe do loop while é:

while (TestExpression) {
    // Instruções
}

Como funciona o loop while?

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.

Diagrama de fluxo do loop while

Exemplo1Loop while

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.

Se a condição retornar true, execute as instruções dentro do loop while; caso contrário, o loop termina.
IteraçãoCondição (currentLevel <= finalLevel)Saída
10 <= 5 (verdadeiro)Você passou de nível 0
21 <= 5 (verdadeiro)Você passou de nível 1
32 <= 5 (verdadeiro)Você passou de nível 2
43 <= 5 (verdadeiro)Você passou de nível 3
54 <= 5 (verdadeiro)Você passou de nível 4
65 <= 5 (verdadeiro)Você passou de nível 5
76 <= 5 (falso)Fora do loop while

2Loop while repetido

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
    ...
}

Como funciona o loop repeat... while?

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.

Diagrama de fluxo do loop repeat ... while

Exemplo2Loop repeat ... while

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.

Se a condição retornar true, execute as instruções dentro do loop while; caso contrário, o loop termina.
IteraçãoCondição (currentLevel <= finalLevel)Saída
10 <= 5 (verdadeiro)Você passou de nível 0
21 <= 5 (verdadeiro)Você passou de nível 1
32 <= 5 (verdadeiro)Você passou de nível 2
43 <= 5 (verdadeiro)Você passou de nível 3
54 <= 5 (verdadeiro)Você passou de nível 4
65 <= 5 (verdadeiro)Você passou de nível 5
76 <= 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.

3Loop while infinito

Se a expressão de teste nunca for calculada como false, o corpo do while e do loop repeat..while será executado infinitamente.

Exemplo3Loop while infinito

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"Hello, World!".