Βρόχοι επανάληψης στη C με την εντολή do while
Είδαμε ότι ο βρόχος while και ο βρόχος for είναι και οι δύο βρόχοι συνθήκης εισόδου. Η C έχει και έναν βρόχο συνθήκης εξόδου, στον οποίο η συνθήκη ελέγχεται μετά από κάθε επανάληψη του βρόχου. Αυτός είναι ο βρόχος do while.
Η πρόταση do while δημιουργεί έναν βρόχο που επαναλαμβάνεται μέχρι η συνθήκη ελέγχου να γίνει ψευδής ή μηδέν.
Ο βρόχος do while είναι ένας βρόχος συνθήκης εξόδου, δηλ. η απόφαση για μια ακόμα επανάληψη παίρνεται μετά από κάθε εκτέλεση του βρόχου.
Έτσι, ο βρόχος πρέπει να εκτελεστεί τουλάχιστον μία φορά.
Το μέρος των προτάσεων μπορεί να αποτελείται είτε από μία απλή πρόταση ή από μία σύνθετη.
do{
scanf(“%d”, &number)
} while (number != 20);
Βρόχοι επανάληψης στη C με την εντολή do while – Παράδειγμα 1
/*βρόχος συνθήκης εξόδου */ #include <stdio.h> main(){ char ch; do{ scanf("%c", &ch); printf("%c", ch); }while (ch!=’#’); }
Βλέπουμε ότι το πρόγραμμα διαβάζει χαρακτήρες και τους τυπώνει μέχρι να εμφανιστεί ο χαρακτήρας #. Θα τυπώσει, όμως, και τον χαρακτήρα #, όταν αυτός εμφανιστεί. Για να αποφύγουμε αυτή την περίπτωση, μπορούμε να χρησιμοποιήσουμε την εντολή if, ως εξής :
if (ch<>’#’)
printf(“%c”, ch);
Η γενική μορφή του βρόχου do while είναι η εξής :
do
πρόταση
while (έκφραση);
Το μέρος πρόταση επαναλαμβάνεται μέχρι η έκφραση να γίνει ψευδής ή μηδέν.
Ένας βρόχος do while εκτελείται πάντα τουλάχιστον μία φορά, αφού ο έλεγχος γίνεται μετά την εκτέλεση του σώματος του βρόχου. Από την άλλη μεριά, ένας βρόχος for ή ένας βρόχος while μπορεί να μην εκτελεστεί καμία φορά, αφού ο έλεγχος γίνεται πριν από την εκτέλεση της εντολής.
Το φαινομενικό αυτό ελάττωμα που έχει ο βρόχος do while, ότι δηλ. εκτελείται τουλάχιστον μία φορά και ίσως και όταν δεν χρειάζεται, είδαμε ότι πολύ εύκολα μπορεί να διορθωθεί με χρήση της εντολής if μέσα στον βρόχο.
Βρόχοι επανάληψης στη C και Οι Εσωτερικοί Βρόχοι
Εσωτερικός βρόχος λέγεται αυτός που βρίσκεται στο εσωτερικό ενός άλλου βρόχου. Μια συνήθης χρήση των εσωτερικών βρόχων είναι για την απεικόνιση δεδομένων σε γραμμές και στήλες. Ο ένας βρόχος χειρίζεται όλες τις στήλες σε μια γραμμή και ο άλλος όλες τις γραμμές.
Βρόχοι επανάληψης στη C και οι Εσωτερικοί Βρόχοι – Παράδειγμα 1
/* χρήση εσωτερικών βρόχων */ #include <stdio.h> #define GRAMMES 5 #define STILES 5 main(){ int row; char ch; for (row=0; row<GRAMMES; row++){ for (ch=’A’; ch<’A’+STILES; ch++) printf(" %c", ch); printf("\n"); } }
Το αποτέλεσμα θα είναι :
ABCDE
ABCDE
ABCDE
ABCDE
ABCDE
Ο πρώτος βρόχος for λέγεται έξω βρόχος και ο άλλος βρόχος for λέγεται μέσα βρόχος. Ο έξω βρόχος αρχίζει με τη row να έχει τιμή 0 και τελειώνει όταν η row γίνει ίση και με το 4. Άρα, κάνει 5 επαναλήψεις. Η πρώτη πρόταση σε κάθε επανάληψη είναι ο άλλος βρόχος for. Αυτός ο βρόχος κάνει επίσης 5 κύκλους, τυπώνοντας τους χαρακτήρες από το Α μέχρι το E στην ίδια γραμμή.
Μόλις τελειώσει ο μέσα βρόχος, ακολουθεί μια πρόταση printf(“\n”), που όπως ξέρουμε αλλάζει γραμμή. Βλέπουμε συνεπώς, ότι ο μέσα βρόχος τυπώνει 5 χαρακτήρες σε μια γραμμή και ο έξω βρόχος δημιουργεί 5 γραμμές. Μπορεί, όμως, ο μέσα βρόχος να εξαρτάται από τον έξω βρόχο και να συμπεριφέρεται έτσι διαφορετικά σε κάθε επανάληψη.