W tym artykule nauczysz się tworzyć pętle while i powtarzać… while w programowaniu w języku Swift.
W poprzednim artykule dowiedzieliśmy się o pętli for-in służącej do uruchamiania zestawu zadań określoną liczbę razy. W tym artykule dowiesz się, jak używać pętli for-in while
i repeat… while
jako alternatywy dla niej, gdy liczba iteracji jest nieznana.
Pętla while wykonuje zestaw instrukcji, dopóki nie zostanie spełniony warunek false
. Tego rodzaju pętle najlepiej stosować, gdy liczba iteracji nie jest znana przed rozpoczęciem pierwszej iteracji. Swift udostępnia dwa rodzaje pętli while:
1. Swift while Loop
Ta pętla ocenia swój stan na początku każdego przejścia przez pętlę.
Składnia pętli while jest następująca:
while (TestExpression) ( // statements )
Jak działa pętla while?
Jest TestExpression
to wyrażenie boolowskie.
Jeśli TestExpression
jest oceniany jako true
,
- wykonywane są instrukcje wewnątrz pętli while.
- i
TestExpression
jest ponownie oceniany.
Ten proces trwa do momentu TestExpression
oceny false
. Jeśli TestExpression
wynikiem jest false
, pętla while jest przerywana.
Schemat blokowy while Loop
Przykład 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")
Po uruchomieniu programu wynik będzie następujący:
Przekroczyłeś poziom 0 Zdałeś poziom 1 Zdałeś poziom 2 Przekroczyłeś 3 poziom Przekroczyłeś 4 poziom Przekroczyłeś 5 poziom poza pętlą while
W powyższym programie zmienne currentLevel i finalLevel są inicjowane na 0, a stała gameCompleted jest inicjowana na true
.
W każdej iteracji pętli while sprawdza warunek currentLevel <= finalLevel
. Jeśli warunek powróci true
, wykonywane są instrukcje wewnątrz while pętla, w przeciwnym razie pętla się kończy.
Iteracja | Warunek (currentLevel <= finalLevel) | Wynik |
---|---|---|
1 | 0 <= 5 (prawda) | Przekroczyłeś poziom 0 |
2 | 1 <= 5 (prawda) | Uzyskałeś poziom 1 |
3 | 2 <= 5 (prawda) | Przekroczyłeś poziom 2 |
4 | 3 <= 5 (prawda) | Uzyskałeś poziom 3 |
5 | 4 <= 5 (prawda) | Uzyskałeś poziom 4 |
6 | 5 <= 5 (prawda) | Uzyskałeś poziom 5 |
7 | 6 <= 5 (fałsz) | poza pętlą while |
2. Powtórz podczas gdy pętla
Ta pętla ocenia swój stan na końcu każdego przejścia przez pętlę. Pętla repeat… while jest podobna do pętli while z jedną kluczową różnicą. Treść powtórzenia… while pętla jest wykonywana raz przed sprawdzeniem wyrażenia testowego.
Składnia powtórzeń… while pętla to:
repeat ( // statements… ) while (testExpression)
Jak działa pętla Repeat… while?
Ciało powtórzenia… while pętla jest wykonywana raz (przed sprawdzeniem wyrażenia testowego). Dopiero wtedy sprawdzany jest testExpression.
Jeśli testExpression ma wartość true, wykonywane są instrukcje wewnątrz treści pętli, a testExpression jest ponownie oceniany. Ten proces trwa do momentu, gdy testExpression zostanie oceniony na false
.
Gdy testExpression jest false
, pętla repeat… while zostaje zakończona.
Schemat blokowy powtórzeń… while Loop
Przykład 2: Powtórz podczas pętli
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")
Po uruchomieniu programu wynik będzie następujący:
Zdałeś poziom 0 Zdałeś poziom 1 Zdałeś poziom 2 Przekroczyłeś 3 poziom Przekroczyłeś 4 poziom Przekroczyłeś 5 poziom poza pętlą powtarzania while
W powyższym przykładzie po raz pierwszy wykonywane są instrukcje wewnątrz pętli. A dla następnej iteracji sprawdza warunek currentLevel <= finalLevel
.
Jeśli warunek powróci true
, wykonywane są instrukcje wewnątrz while pętla, w przeciwnym razie pętla się kończy.
Iteracja | Warunek (currentLevel <= finalLevel) | Wynik |
---|---|---|
1 | 0 <= 5 (prawda) | Przekroczyłeś poziom 0 |
2 | 1 <= 5 (prawda) | Uzyskałeś poziom 1 |
3 | 2 <= 5 (prawda) | Przekroczyłeś poziom 2 |
4 | 3 <= 5 (prawda) | Uzyskałeś poziom 3 |
5 | 4 <= 5 (prawda) | Uzyskałeś poziom 4 |
6 | 5 <= 5 (prawda) | Uzyskałeś poziom 5 |
7 | 6 <= 5 (fałsz) | poza pętlą powtarzania while |
Mimo, że oba while
i repeat while
pętla mają same czynności egzekucyjnych, stan currentLevel <= finalLevel
na repeat while
pętli jest wykonywany dopiero po wykonaniu sprawozdania wewnątrz niego.
Ale w while
programie warunek jest sprawdzany na początku przed wykonaniem zawartych w nim instrukcji.
3. Nieskończona pętla podczas gdy
Jeśli wyrażenie badanie nigdy nie ocenia się false
, ciało while
i repeat… while
pętla jest wykonywana nieskończoną ilość razy.
Przykład 3: nieskończona pętla while
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Po uruchomieniu programu wynik będzie następujący:
Witaj świecie! Witaj świecie!…
Po uruchomieniu programu obie pętle wykonują print("Hello, World!")
instrukcję nieskończoną liczbę razy. Możesz więc zobaczyć ciągłe dane wyjściowe Hello, World! w konsoli.