Οι βρόχοι χρησιμοποιούνται για να εκτελείται κάποια λογική επανειλημμένα.
Οι δύο πιο συνηθισμένοι τύποι είναι ο while loop (αόριστη επανάληψη) και ο for loop (ορισμένη ή μετρημένη επανάληψη).
Υπάρχει επίσης ο βρόχος for each, που θα εμφανιστεί σε επόμενη ενότητα.
Ο for loop αποτελείται από μια κεφαλίδα και ένα μπλοκ κώδικα που περιέχει το σώμα του βρόχου μέσα σε άγκιστρα.
Η κεφαλίδα αποτελείται από 3 μέρη χωρισμένα με το σύμβολο ;: το init-statement, το condition και το expression.
Καθένα από αυτά μπορεί να είναι κενό.
for (init-statement; condition; expression) {
some_statement;
}
Ο while loop εκτελεί το σώμα του όσο ο έλεγχος της συνθήκης του είναι αληθής.
Το παρακάτω απόσπασμα κώδικα δείχνει πώς να μετατρέψεις έναν βρόχο for σε βρόχο while.
init-statement;
while(condition) {
some_statement;
expression;
}
Όταν δουλεύεις με βρόχους, συχνά χρειάζεται να προσθέσεις 1 ή να αφαιρέσεις 1 από μια μεταβλητή μετρητή.
Αυτό είναι τόσο συνηθισμένο, που η πράξη έχει δικούς της τελεστές: ++ και --.
Υπάρχουν σε προθεματική και σε μεταθεματική μορφή. Η προθεματική μορφή αλλάζει τη μεταβλητή πριν από τη χρήση της στην εντολή, ενώ η μεταθεματική μετά. Τις περισσότερες φορές μάλλον θέλεις την προθεματική μορφή.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
Το μέρος init συνήθως ορίζει μια μεταβλητή μετρητή, το condition ελέγχει αν ο βρόχος πρέπει να συνεχιστεί ή να σταματήσει και το μέρος post συνήθως αυξάνει τον μετρητή στο τέλος κάθε επανάληψης.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Αυτός ο βρόχος θα αθροίσει τους αριθμούς από το 1 έως το 9 (συμπεριλαμβανομένου του 9).
Μέσα στο σώμα ενός βρόχου, μπορείς να χρησιμοποιήσεις τη λέξη-κλειδί break για να σταματήσεις εντελώς την εκτέλεση του βρόχου:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
Αντίθετα, η λέξη-κλειδί continue σταματά μόνο την εκτέλεση της τρέχουσας επανάληψης και συνεχίζει με την επόμενη:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Σημείωση: συνήθως είναι πιο εύκολο να καταλάβεις τη λογική του βρόχου όταν η χρήση των
breakκαιcontinueπεριορίζεται στο ελάχιστο ή αποφεύγεται εντελώς.