In questo articolo imparerai a creare cicli while e a ripetere … while nella programmazione Swift.
Nell'articolo precedente, abbiamo appreso del ciclo for-in per eseguire una serie di attività per un certo numero di volte. In questo articolo imparerai a usare while
e repeat… while
come alternativa al ciclo for-in quando il numero di iterazioni è sconosciuto.
Un ciclo while esegue un insieme di istruzioni finché non diventa una condizione false
. Questi tipi di cicli vengono utilizzati al meglio quando il numero di iterazioni non è noto prima dell'inizio della prima iterazione. Swift fornisce due tipi di cicli while:
1. Swift while Loop
Questo ciclo valuta la sua condizione all'inizio di ogni passaggio attraverso il ciclo.
La sintassi del ciclo while è:
while (TestExpression) ( // statements )
Come funziona il ciclo while?
È TestExpression
un'espressione booleana.
Se TestExpression
viene valutato a true
,
- vengono eseguite le istruzioni all'interno del ciclo while.
- e il
TestExpression
viene rivalutato.
Questo processo continua finché non TestExpression
viene valutato a false
. Se TestExpression
restituisce false
, il ciclo while viene terminato.
Diagramma di flusso del ciclo while
Esempio 1: While Loop
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")
Quando esegui il programma, l'output sarà:
Hai superato il livello 0 Hai superato il livello 1 Hai superato il livello 2 Hai superato il livello 3 Hai superato il livello 4 Hai superato il livello 5 al di fuori del ciclo while
Nel programma precedente, le variabili currentLevel e finalLevel vengono inizializzate a 0 e la costante gameCompleted viene inizializzata a true
.
In ogni iterazione del ciclo while, controlla la condizione currentLevel <= finalLevel
. Se la condizione ritorna true
, le istruzioni all'interno del ciclo while vengono eseguite altrimenti il ciclo termina.
Iterazione | Condizione (currentLevel <= finalLevel) | Produzione |
---|---|---|
1 | 0 <= 5 (vero) | Hai superato il livello 0 |
2 | 1 <= 5 (vero) | Hai superato il livello 1 |
3 | 2 <= 5 (vero) | Hai superato il livello 2 |
4 | 3 <= 5 (vero) | Hai superato il livello 3 |
5 | 4 <= 5 (vero) | Hai superato il livello 4 |
6 | 5 <= 5 (vero) | Hai superato il livello 5 |
7 | 6 <= 5 (falso) | al di fuori del ciclo while |
2. Ripeti durante il ciclo
Questo ciclo valuta la sua condizione alla fine di ogni passaggio attraverso il ciclo. La ripetizione… ciclo while è simile al ciclo while con una differenza chiave. Il corpo del ciclo repeat … while viene eseguito una volta prima che l'espressione di test venga controllata.
La sintassi di repeat … while loop è:
repeat ( // statements… ) while (testExpression)
Come funziona la ripetizione … while loop?
Il corpo del ciclo repeat … while viene eseguito una volta (prima di controllare l'espressione di test). Solo allora viene controllato testExpression.
Se testExpression viene valutato su true, vengono eseguite le istruzioni all'interno del corpo del ciclo e testExpression viene valutato di nuovo. Questo processo continua finché non viene valutato testExpression false
.
Quando testExpression è false
, il ciclo repeat … while termina.
Diagramma di flusso della ripetizione … durante il ciclo
Esempio 2: Ripeti durante il ciclo
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")
Quando esegui il programma, l'output sarà:
Hai superato il livello 0 Hai superato il livello 1 Hai superato il livello 2 Hai superato il livello 3 Hai superato il livello 4 Hai superato il livello 5 al di fuori del ciclo di ripetizione durante
Nell'esempio precedente, per la prima volta vengono eseguite le istruzioni all'interno del ciclo. E per la successiva iterazione, controlla le condizioni currentLevel <= finalLevel
.
Se la condizione ritorna true
, le istruzioni all'interno del ciclo while vengono eseguite altrimenti il ciclo termina.
Iterazione | Condizione (currentLevel <= finalLevel) | Produzione |
---|---|---|
1 | 0 <= 5 (vero) | Hai superato il livello 0 |
2 | 1 <= 5 (vero) | Hai superato il livello 1 |
3 | 2 <= 5 (vero) | Hai superato il livello 2 |
4 | 3 <= 5 (vero) | Hai superato il livello 3 |
5 | 4 <= 5 (vero) | Hai superato il livello 4 |
6 | 5 <= 5 (vero) | Hai superato il livello 5 |
7 | 6 <= 5 (falso) | al di fuori della ripetizione del ciclo |
Sebbene entrambi while
e il repeat while
ciclo abbiano gli stessi passaggi di esecuzione, la condizione currentLevel <= finalLevel
su repeat while
ciclo viene eseguita solo dopo aver eseguito le istruzioni al suo interno.
Ma in while
, la condizione viene verificata all'inizio prima di eseguire le istruzioni al suo interno.
3. Infinito mentre Loop
Se l'espressione di test non restituisce mai false
, il corpo di while
and repeat… while
loop viene eseguito un numero infinito di volte.
Esempio 3: Infinite while Loop
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Quando esegui il programma, l'output sarà:
Ciao mondo! Ciao mondo!…
Quando si esegue il programma, entrambi i cicli eseguono l' print("Hello, World!")
istruzione per un numero infinito di volte. Quindi, puoi vedere l'output continuo Hello, World! nella console.