Σε αυτό το άρθρο, θα μάθετε να δημιουργείτε και να επαναλαμβάνετε… ενώ κάνετε βρόχους στον προγραμματισμό Swift.
Στο προηγούμενο άρθρο, μάθαμε για το loop in-in για να εκτελέσουμε ένα σύνολο εργασιών για ορισμένες φορές. Σε αυτό το άρθρο, θα μάθετε να χρησιμοποιείτε while
και repeat… while
ως εναλλακτική λύση του for-in loop όταν ο αριθμός των επαναλήψεων είναι άγνωστος.
Λίγος βρόχος εκτελεί ένα σύνολο δηλώσεων έως ότου γίνει μια συνθήκη false
. Αυτά τα είδη βρόχων χρησιμοποιούνται καλύτερα όταν ο αριθμός των επαναλήψεων δεν είναι γνωστός πριν από την έναρξη της πρώτης επανάληψης. Το Swift παρέχει δύο είδη βρόχων ενώ:
1. Swift ενώ βρόχος
Αυτός ο βρόχος αξιολογεί την κατάστασή του στην αρχή κάθε διέλευσης του βρόχου.
Η σύνταξη του loop loop είναι:
while (TestExpression) ( // statements )
Πώς λειτουργεί ενώ ο βρόχος;
Η TestExpression
είναι μια boolean έκφραση.
Εάν το TestExpression
αξιολογηθεί true
,
- εκτελούνται δηλώσεις εντός του loop loop.
- και
TestExpression
αξιολογείται ξανά.
Αυτή η διαδικασία συνεχίζεται έως ότου TestExpression
αξιολογηθεί false
. Εάν το TestExpression
αξιολογηθεί false
, ενώ ο βρόχος τερματίζεται.
Διάγραμμα ροής του Loop
Παράδειγμα 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")
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Έχετε περάσει το επίπεδο 0 Έχετε περάσει το επίπεδο 1 Έχετε περάσει το επίπεδο 2 Έχετε περάσει το επίπεδο 3 Έχετε περάσει το επίπεδο 4 Έχετε περάσει το επίπεδο 5 εκτός του while loop
Στο παραπάνω πρόγραμμα, η μεταβλητή currentLevel και finalLevel αρχικοποιείται σε 0 και η σταθερή gameCompleted αρχικοποιείται σε true
.
Σε κάθε επανάληψη του loop loop, ελέγχει την κατάσταση currentLevel <= finalLevel
. Εάν η συνθήκη επιστρέψει true
, οι δηλώσεις μέσα ενώ ο βρόχος εκτελείται διαφορετικά ο βρόχος τερματίζεται.
Επανάληψη | Συνθήκη (currentLevel <= finalLevel) | Παραγωγή |
---|---|---|
1 | 0 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 0 |
2 | 1 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 1 |
3 | 2 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 2 |
4 | 3 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 3 |
5 | 4 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 4 |
6 | 5 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 5 |
7 | 6 <= 5 (ψευδές) | έξω από το while loop |
2. Επαναλάβετε ενώ βρόχος
Αυτός ο βρόχος αξιολογεί την κατάστασή του στο τέλος κάθε διέλευσης μέσω του βρόχου. Η επανάληψη… ενώ ο βρόχος είναι παρόμοιος με τον βρόχο ενώ με μια διαφορά κλειδιού. Το σώμα της επανάληψης… ενώ ο βρόχος εκτελείται μία φορά πριν ελεγχθεί η δοκιμαστική έκφραση.
Η σύνταξη της επανάληψης… ενώ ο βρόχος είναι:
repeat ( // statements… ) while (testExpression)
Πώς επαναλαμβάνω… ενώ λειτουργεί ο βρόχος;
Το σώμα της επανάληψης… ενώ ο βρόχος εκτελείται μία φορά (πριν από τον έλεγχο της έκφρασης δοκιμής). Μόνο τότε, ελέγχεται το testExpression.
Εάν το testExpression αξιολογηθεί ως αληθές, εκτελούνται δηλώσεις μέσα στο σώμα του βρόχου και το testExpression αξιολογείται ξανά. Αυτή η διαδικασία συνεχίζεται έως ότου αξιολογηθεί το testExpression false
.
Όταν είναι το testExpression false
, η επανάληψη… ενώ ο βρόχος τελειώνει.
Διάγραμμα ροής επανάληψης… ενώ Loop
Παράδειγμα 2: Επανάληψη ενώ βρόχος
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")
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Έχετε περάσει το επίπεδο 0 Έχετε περάσει το επίπεδο 1 Έχετε περάσει το επίπεδο 2 Έχετε περάσει το επίπεδο 3 Έχετε περάσει το επίπεδο 4 Έχετε περάσει το επίπεδο 5 εκτός της επανάληψης ενώ ο βρόχος
Στο παραπάνω παράδειγμα, για πρώτη φορά εκτελούνται οι δηλώσεις εντός του βρόχου. Και για την επόμενη επανάληψη, ελέγχει την κατάσταση currentLevel <= finalLevel
.
Εάν η συνθήκη επιστρέψει true
, οι δηλώσεις μέσα ενώ ο βρόχος εκτελείται διαφορετικά ο βρόχος τερματίζεται.
Επανάληψη | Συνθήκη (currentLevel <= finalLevel) | Παραγωγή |
---|---|---|
1 | 0 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 0 |
2 | 1 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 1 |
3 | 2 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 2 |
4 | 3 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 3 |
5 | 4 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 4 |
6 | 5 <= 5 (αληθινό) | Έχετε περάσει το επίπεδο 5 |
7 | 6 <= 5 (ψευδές) | εκτός της επανάληψης ενώ βρόχος |
Παρόλο που και τα δύο while
και τα repeat while
loop έχουν τα ίδια βήματα εκτέλεσης, η συνθήκη currentLevel <= finalLevel
στο repeat while
loop εκτελείται μόνο μετά την εκτέλεση των δηλώσεων μέσα σε αυτό.
Αλλά μέσα while
, η συνθήκη ελέγχεται στην αρχή πριν από την εκτέλεση των δηλώσεων μέσα σε αυτήν.
3. Απεριόριστο ενώ βρόχος
Εάν η δοκιμαστική έκφραση δεν αξιολογηθεί ποτέ false
, το σώμα while
και ο repeat… while
βρόχος εκτελούνται άπειρες φορές.
Παράδειγμα 3: Απεριόριστο ενώ βρόχος
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Γειά σου Κόσμε! Γειά σου Κόσμε!…
Όταν εκτελείτε το πρόγραμμα, και οι δύο βρόχοι εκτελούν print("Hello, World!")
δήλωση για απεριόριστες φορές. Έτσι, μπορείτε να δείτε τη συνεχή έξοδο Γεια, Κόσμος! στην κονσόλα.