Δομές Επανάληψης Εισαγωγή στη C++
Επαναληπτικές δηλώσεις Οι βρόγχοι (loops) αναγκάζουν ένα τμήμα κώδικα να επαναλαμβάνεται. Η επανάληψη συνεχίζεται για όσο μία λογική συνθήκη είναι αληθής. Όταν η συνθήκη είναι ψευδής, ο βρόγχος τελειώνει και ο έλεγχος του προγράμματος συνεχίζεται παρακάτω. Στη C++ υπάρχουν τρία είδη βρόχων: ο βρόγχος for, ο βρόγχος while και ο βρόγχος do.
Ο βρόγχος for Θέλουμε να εμφανίσουμε τους αριθμούς από το 1 μέχρι το 10 στην οθόνη. for (int i = 1; i <= 10; i++) cout << i << endl; Θέλουμε να εμφανίσουμε τους χαρακτήρες από το A μέχρι το Z στην οθόνη. char let; for (let = 'A'; let <= 'Z'; let++){ cout << let;
Παρατηρήσεις Ο μετρητής μας μπορεί να είναι ακέραιος, χαρακτήρας ή δεκαδικός αριθμός. Μπορούμε να δηλώσουμε και ταυτόχρονα να αρχικοποιήσουμε μια μεταβλητή-μετρητή μέσα στο βρόγχο. Τα άγκιστρα μπορούν να παραλείπονται αν έχουμε μόνο μία εντολή.
Παράδειγμα 1 Να γράψετε ένα πρόγραμμα που να εμφανίζει στην οθόνη τα πολλαπλάσια του 7, ξεκινώντας από τον αριθμό 21 μέχρι τον αριθμό 777.
Παράδειγμα 1 #include<iostream> using namespace std; int main(){ for (int i = 21; i <= 777; i+=7){ cout << i << endl; return 0;
Παράδειγμα 2 Να γράψετε ένα πρόγραμμα που να διαβάζει τη βάση και τον εκθέτη μιας δύναμης και να επιστρέφει σαν αποτέλεσμα τη βάση υψωμένη στον εκθέτη. Π.χ. 2 3 = 8.
#include<iostream> using namespace std; Παράδειγμα 2 int main(){ int b, e, result = 1; cin >> b >> e; for(int i = 1; i <= e; i++) { result = result * b; cout << result << endl; return 0;
Φωλιασμένες εντολές for (Nested for loops) Σε πολλές περιπτώσεις μπορούμε να χρησιμοποιήσουμε επαναληπτικές εντολές μέσα σε άλλες επαναληπτικές εντολές. Στην περίπτωση αυτή, για κάθε επανάληψη της εξωτερικής εντολής, η εσωτερική θα εκτελέσει όλες τις δικές τις επαναλήψεις. Ποιο θα είναι το αποτέλεσμα του πιο κάτω κώδικα: for (int i=1; i<=3; i++) for (int j=4; j<=5; j++) cout << i << " " << j << endl;
Ο βρόγχος while Όταν θέλουμε να επαναλαμβάνονται κάποιες εντολές, χωρίς να ξέρουμε από πριν το πλήθος των επαναλήψεων χρησιμοποιούμε το βρόγχο while. Όσο η λογική συνθήκη ελέγχου παραμένει αληθής ο βρόγχος θα επαναλαμβάνεται. Όταν η λογική συνθήκη γίνει ψευδής τότε ο έλεγχος του προγράμματος θα συνεχίσει με το υπόλοιπο πρόγραμμα μετά από αυτόν.
Ο βρόγχος while Θέλουμε να εμφανίσουμε τους αριθμούς από το 1 μέχρι το 10 στην οθόνη. int i = 1; // αρχική τιμή μετρητή while(i<=10){ // λογική συνθήκη ελέγχου cout << i << endl; i++; // μεταβολή τιμής μετρητή
Παράδειγμα 3 Να γράψετε πρόγραμμα που να διαβάζει και να καταμετρά τους ακέραιους αριθμούς που θα δοθούν μέχρι να δοθεί ο αριθμός μηδέν.
#include<iostream> using namespace std; Παράδειγμα 3 int main(){ int n, p=0; cin >> n; while (n!= 0){ p++; cin >> n; // διαβάζουμε το n πριν το loop // ή και while(n){ cout << p; return 0;
Παράδειγμα 4 Η αμοιβάδα αναπαράγεται διπλασιάζοντας το γενετικό της υλικό και στη συνέχεια χωρίζεται και δημιουργούνται δύο νέες όμοιες αμοιβάδες. Αυτό συμβαίνει κάθε 30 λεπτά. Να βρείτε μετά από πόσα λεπτά, από μια μόνο αμοιβάδα, μπορούν να δημιουργηθούν περισσότερες από 1000.
#include<iostream> using namespace std; int main(){ int n = 1, mins = 0; while (n <=1000){ mins+=30; n*=2; cout << mins << endl; return 0; Παράδειγμα 4
Ο βρόγχος do Σε μερικές περιπτώσεις θέλουμε να εξασφαλίσουμε ότι οι εντολές του βρόγχου θα εκτελεστούν έστω και μία φορά, ανεξάρτητα από την τιμή της λογικής συνθήκης. Σε αυτή την περίπτωση χρησιμοποιούμε τον βρόγχο do, ο οποίος κάνει τον έλεγχο της λογικής συνθήκης στο τέλος του βρόγχου. Η διαφορά δηλαδή έγκειται στο ότι ο βρόγχος while κάνει τον έλεγχο πριν ξεκινήσει να εκτελεί τις εντολές, ενώ ο βρόγχος do στο τέλος.
Ο βρόγχος do Θέλουμε να εμφανίσουμε τους αριθμούς από το 1 μέχρι το 10 στην οθόνη. int i = 1; // αρχική τιμή μετρητή do { cout << i << endl; i++; // μεταβολή τιμής μετρητή while (i<=10); // λογική συνθήκη ελέγχου
Παράδειγμα 5 Έχουμε τρία ρολόγια που δείχνουν όλα την ώρα 12.00. Πατώντας ένα κουμπί το ρολόι Α προχωρά μπροστά τρεις ώρες, το ρολόι Β προχωρά μπροστά πέντε ώρες ενώ το ρολόι Γ προχωρά μπροστά εφτά ώρες. Μετά από πόσα πατήματα του κουμπιού τα ρολόγια θα δείχνουν όλα την ώρα 12.00 ξανά.
Παράδειγμα 5 int a=12, b=12, c=12, ans=0; do { a+=3; b+=5; c+=7; if (a>12) a-=12; if (b>12) b-=12; if (c>12) c-=12; ans++; while (a!=12 b!=12 c!=12); cout << ans << endl;