Η δομή επανάληψης while
στη γλώσσα C++ επιτρέπει την εκτέλεση ενός μπλοκ κώδικα όσο η συνθήκη που προσδιορίζεται είναι αληθής. Αυτό σημαίνει ότι ο μπλοκ κώδικα εκτελείται επανειλημμένα μέχρι η συνθήκη να γίνει ψευδής.
Η σύνταξη της δομής while
είναι η εξής:
while (συνθήκη) { // Κώδικας που θα εκτελεστεί επαναληπτικά }
Κατά την εκτέλεση, αρχικά ελέγχεται η συνθήκη. Αν η συνθήκη είναι αληθής, τότε ο κώδικας που βρίσκεται μέσα στο μπλοκ εκτελείται. Αφού ολοκληρωθεί η εκτέλεση του μπλοκ, ελέγχεται ξανά η συνθήκη. Αυτή η διαδικασία επαναλαμβάνεται μέχρι η συνθήκη να γίνει ψευδής, οπότε η εκτέλεση της δομής while
διακόπτεται και η εκτέλεση συνεχίζει με τον επόμενο κώδικα μετά τη δομή while
.
Η δομή while
είναι χρήσιμη όταν δεν γνωρίζουμε εκ των προτέρων πόσες φορές θα επαναληφθεί ο κώδικας ή όταν θέλουμε να επαναλάβουμε έναν κώδικα μέχρι να επιτευχθεί μια συγκεκριμένη συνθήκη.
Ένα αναλυτικό παράδειγμα χρήσης της δομής while
στη γλώσσα C++ μπορεί να είναι η εκτύπωση των αριθμών από το 1 έως το 5. Ας δούμε τον παρακάτω κώδικα:
#include <iostream> int main() { int number = 1; // Επανάληψη μέχρι η μεταβλητή number να γίνει μεγαλύτερη ή ίση του 5 while (number <= 5) { std::cout << number << " "; // Εκτύπωση της τρέχουσας τιμής της μεταβλητής number number++; // Αύξηση της μεταβλητής number κατά 1 } return 0; }
Σε αυτό το παράδειγμα, η μεταβλητή number
αρχικοποιείται με την τιμή 1. Η δομή while
ελέγχει αν η τιμή της number
είναι μικρότερη ή ίση του 5. Αν αυτή η συνθήκη είναι αληθής, τότε ο κώδικας μέσα στο μπλοκ εκτελείται.
Στο μπλοκ, ο αριθμός number
εκτυπώνεται στην οθόνη με τη χρήση της συνάρτησης std::cout
. Έπειτα, η τιμή της number
αυξάνεται κατά ένα με την εντολή number++
.
Η διαδικασία αυτή επαναλαμβάνεται μέχρι η συνθήκη number <= 5
να γίνει ψευδής. Σε αυτό το σημείο, η εκτέλεση της δομής while
διακόπτεται και η εκτέλεση του προγράμματος συνεχίζεται μετά τον κώδικα που ακολουθεί τη δομή while
.
Έτσι, το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι:
1 2 3 4 5
Κάθε αριθμός εκτυπώνεται ξεχωριστά και διαχωρίζεται από ένα κενό διάστημα.
Το do/while loop είναι μια εκδοχή του while loop. Η σύνταξή του είναι η εξής:
do { // Κώδικας που θα εκτελεστεί τουλάχιστον μία φορά } while (συνθήκη);
Αρχικά, το block κώδικα εκτελείται μία φορά χωρίς να ελεγχθεί η συνθήκη. Έπειτα, ελέγχεται η συνθήκη. Αν η συνθήκη είναι αληθής, το loop επαναλαμβάνεται και εκτελείται ξανά ολόκληρο το block κώδικα. Αυτή η διαδικασία επαναλαμβάνεται μέχρι η συνθήκη να γίνει ψευδής, οπότε το loop τερματίζει και η εκτέλεση συνεχίζεται με την επόμενη εντολή μετά το do/while loop.
Το do/while loop είναι χρήσιμο όταν θέλουμε να εκτελέσουμε το block κώδικα τουλάχιστον μία φορά, ανεξαρτήτως της αρχικής τιμής της συνθήκης. Επίσης, επιτρέπει την εκτέλεση ενός block κώδικα πριν από τον έλεγχο της συνθήκης, καθώς στο while loop ο έλεγχος γίνεται πριν την εκτέλεση του block κώδικα.
Ας δούμε ένα αναλυτικό παράδειγμα με το do/while loop στη γλώσσα C:
#include <stdio.h> int main() { int number = 1; // Αρχικοποίηση της μεταβλητής number με την τιμή 1 do { printf("%d ", number); // Εκτύπωση της τιμής της μεταβλητής number number++; // Αύξηση της τιμής της μεταβλητής number κατά 1 } while (number <= 5); // Επανάληψη μέχρι η τιμή της μεταβλητής number να είναι μικρότερη ή ίση με 5 return 0; }
Σε αυτό το παράδειγμα, η μεταβλητή number
αρχικοποιείται στην τιμή 1. Στη συνέχεια, έχουμε το do/while loop. Αρχικά, το block κώδικα μέσα στο do εκτελείται χωρίς να ελεγχθεί η συνθήκη.
Μέσα στο block κώδικα, εκτυπώνεται η τιμή της μεταβλητής number
και η μεταβλητή number
αυξάνεται κατά ένα (με την εντολή number++
).
Στη συνέχεια, γίνεται ο έλεγχος της συνθήκης number <= 5
. Αν η συνθήκη είναι αληθής, το loop συνεχίζει και επαναλαμβάνεται το block κώδικα. Αν η συνθήκη γίνει ψευδής, το loop τερματίζει και η εκτέλεση συνεχίζεται με την επόμενη εντολή μετά το do/while loop.
Στο παράδειγμά μας, το loop θα εκτυπώσει τους αριθμούς από 1 έως 5. Ακόμη και αν η αρχική τιμή της μεταβλητής number
ήταν μεγαλύτερη από 5, το block κώδικα θα εκτελούνταν τουλάχιστον μία φορά, λόγω της φύσης του do/while loop.