Εντολές Επανάληψης Πολλές φορές χρειάζεται να επαναλάβουμε τις ίδιες εντολές Πχ. Έστω ότι θέλουμε να υπολογίσουμε το άθροισμα όρων μιας ακολουθίας διαδοχικών ακεραίων. Δηλαδή αν ο χρήστης δώσει τον αριθμό Ν, να υπολογιστεί το Ν + (Ν-1) + (Ν-2) + 2 + 1
Εντολές Επανάληψης int sum = 0, i=1; sum += i++ ; sum += i++ ; sum += i++ ;.. To sum είναι 1 (0 +1), το i γίνεται 2 μετά την καταχώρηση στο sum To sum είναι 3 (1 +2), το i γίνεται 3 μετά την καταχώρηση στο sum To sum είναι 6 (3 +3), το i γίνεται 4 μετά την καταχώρηση στο sum Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!
Εντολές Επανάληψης - For Η σύνταξη της for: for ( Παράσταση1; Παράσταση2; Παράσταση3 ) εντολή; Αρχικοποίηση μεταβλητής ελέγχου Έλεγχος Αλλαγή της τιμής μεταβλητής ελέγχου
Εντολές Επανάληψης - For Βήμα 1: Αρχικοποίηση μεταβλητής ελέγχου (παράσταση 1) Βήμα 2: Αν η παράσταση 2 είναι μη μηδενική εκτελείται η εντολή μεταβάλλεται η τιμή της μεταβλητής ελέγχου σύμφωνα με την παράσταση 3 Επιστροφή στην αρχή του βήματος 2 Αν η παράσταση 2 είναι 0, έξοδος από τη for
Εντολές Επανάληψης - For Για ένα σώμα εντολών for (Παράσταση1; Παράσταση2; Παράσταση3) { Εντολή1; Εντολή2; }
Διάγραμμα Ροής Παράσταση_1 Παράσταση_3 Παράσταση_2 Μη μηδενική (αληθής) εντολή 0 (ψευδής) Επόμενη εντολή
Παράδειγμα int i; for ( i=0; i<3; i++) printf( Repeat printing \n ); i = i + 1 (Βήμα μεταβολής) Η εντολή αυτή θα εκτυπώσει 3 φορές τη συμβολοσειρά Repeat printing
Παράδειγμα i=0 -> Παράσταση 1 (i<3); -> Παράσταση 2 αληθής (μη μηδενική) printf( Repeat printing \n ); i++ -> Παράσταση 3 (το i γίνεται 1) (i<3); -> Παράσταση 2 αληθής (μη μηδενική) printf( Repeat printing \n ); i++ -> Παράσταση 3 (το i γίνεται 2)
Παράδειγμα (i<3); -> Παράσταση 2 αληθής (μη μηδενική) printf( Repeat printing \n ); i++ -> Παράσταση 3 (το i γίνεται 3) (i<3); -> Παράσταση 2 ψευδής (μηδενική) Έξοδος από τη for
Παράδειγμα Για τους διαδοχικούς όρους της ακολουθίας int i, sum=0; for ( i=1; i<=ν; i++) sum += i;
Εντολές Επανάληψης - For 1) Γνωρίζουμε ακριβώς τον αριθμό επαναλήψεων (η μεταβλητή λειτουργεί ως μετρητής). - Καταχώρηση αρχικής τιμής στη μεταβλητή ελέγχου επανάληψης - Σύγκριση της μεταβλητής ελέγχου με μια τελική τιμή - Αύξηση ή μείωση της μεταβλητής ελέγχου
Εντολές Επανάληψης - For 2) Οι επαναλήψεις σταματούν όταν η μεταβλητή ελέγχου λάβει χαρακτηριστική τιμή - Καταχώρηση αρχικής τιμής στη μεταβλητή ελέγχου - Σχεδιασμός ελέγχου παράστασης τιμών (συνθήκη τερματισμού) - Μεταβολή της τιμής μεταβλητής ελέγχου
Παράδειγμα Υπολογίστε το άθροισμα ενός πλήθους ακεραίων, η επανάληψη να τερματίσει όταν ο χρήστης εισάγει τον αριθμό 0.
Παράδειγμα int sum = 0, a; Μεταβλητή ελέγχου for ( scanf( %d,&a); a!=0; scanf( %d,&a)) Αρχικοποίηση sum += a; Συνθήκη ελέγχου Βήμα μεταβολής printf( Sum = %d\n,sum);
Εντολές Επανάληψης - While Η σύνταξη της while: while( Παράσταση ) Εντολή; Για ένα σώμα εντολών while (Παράσταση) { Εντολή1; Εντολή2; }
Εντολές Επανάληψης - While Βήμα: Αν η Παράσταση είναι μη μηδενική εκτελείται το σώμα εντολών της while. Αν η Παράσταση είναι μηδενική έξοδος από τη while.
Διάγραμμα ροής Παράσταση Μη μηδενική (αληθής) Εντολή 0 (ψευδής) Επόμενη εντολή
Παράδειγμα - υπολογισμός Ν! N! = 1*2*3 *N 0! = 1
Παράδειγμα int par=1, metritis=2; Αρχικοποίηση μεταβλητής ελέγχου while ( metritis <=Ν ) { par *=metritis; // ισοδύναμο με par=par*metritis; metritis++; } Συνθήκη ελέγχου Αύξηση μεταβλητής ελέγχου
Ποιο είναι το αποτέλεσμα; int a; scanf( %d,&a); while( a=0 ){ printf( Repeat printing\n ); a =1; } printf( Value of a is%d\n,a); Η συνθήκη είναι πάντα 0 (ψευδής). Το σώμα εντολών της while δεν εκτελείται ποτέ Γίνεται καταχώρηση! int a; scanf( %d,&a); while( a=3 ){ printf( Repeat printing\n ); a =1; } printf( Value of a is%d\n,a); Η συνθήκη είναι πάντα διάφορη του 0 (αληθής). Το σώμα εντολών της while εκτελείται συνεχώς!
Εντολές Επανάληψης do While Η σύνταξη της do while do Εντολή; while( Παράσταση ); Για ένα σώμα εντολών do { Εντολή1; Εντολή2; } while( Παράσταση );
Εντολές Επανάληψης do While Βήμα 1: Εκτελείται το σώμα εντολών Βήμα 2: Αν η Παράσταση είναι μη μηδενική επιστρέφουμε στο Βήμα 1. Αν η Παράσταση είναι μηδενική έξοδος από τη do while.
Διάγραμμα Ροής do while εντολή Παράσταση Μη μηδενική (αληθής) 0 (ψευδής) Επόμενη εντολή
Παράδειγμα do { printf( Input a positive integer\n ); scanf( %d, &arithmos); } while(arithmos>=0);
Φωλιασμένες εντολές επανάληψης Μπορεί να γραφεί for (i=1; i<=4; i++) //Εξωτερικήεπανάληψη for (j=1; j<=3; j++) //Εσωτερική επανάληψη printf( Repeat print\n ); Η printf θα εκτελεστεί 12 φορές
Έξοδος από το βρόχο Εντολή break Έξοδος μόνο από τον «εσωτερικό» βρόχο Εντολή continue Επιστρέφει στην εντολή ελέγχου της ανακύκλωσης (και αυξάνει το μετρητή στη for)
Παράδειγμα for (int i=0; i<=3; i++){ printf("before contιnue\n"); continue; printf("after continue\n"); } Η 2 η printf δε θα εκτελεστεί σε καμία από τις 4 επαναλήψεις!
Παράδειγμα for (int i=0; i<=3; i++){ printf("before break\n"); break; printf("after break\n"); } Θα εκτυπωθεί μόνο η 1 η printf 1 φορά. Η επανάληψη θα διακοπεί
Όλα τα προγράμματα γράφονται χρησιμοποιώντας 3 είδη εντολών Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if-else, switch) Εντολές επανάληψης (for, while, do-while)