ΗΥ-150. Προγραμματισμός

Σχετικά έγγραφα
ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο : Επαναλήψεις (for, do-while)

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

9. Εντολές επανάληψηςκαι η εντολή

Διάλεξη 5η: Εντολές Επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης

Προγραμματισμό για ΗΜΥ

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Β7.1.4 Δομές Επανάληψης. Β Λυκείου Κατεύθυνσης

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Υπολογισμός - Εντολές Ελέγχου

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εντολές ελέγχου ροής if, for, while, do-while

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δομές Επανάληψης. Εισαγωγή στη C++

Ηλεκτρονικοί Υπολογιστές

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

Δομές ελέγχου ροής προγράμματος

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

10. Εντολές επανάληψηςκαι οι εντολές

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομές ελέγχου & επανάληψης

Η γλώσσα προγραμματισμού C

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στην πληροφορική

Δομημένος Προγραμματισμός

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Εισαγωγή στον Προγραμματισμό με C++

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός Ι (HY120)

Η γλώσσα προγραμματισμού C

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 5 Εντολές Επανάληψης for while do while. Λαμπρινίδης Γεώργιος

Γλώσσα Προγραμματισμού C

Η γλώσσα προγραμματισμού C

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Η γλώσσα προγραμματισμού C

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Επανάληψη. Εντολές while, for, do-while

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

4. Επιλογή και Επανάληψη

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Θέματα Προγραμματισμού Η/Υ

Εισαγωγή στη γλώσσα προγραμματισμού C++

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος lantzos@teiser.gr

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διαδικασιακός Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

for for for for( . */

ιαδικαστικός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

8. Συνθήκες ελέγχου, λογικοί τελεστές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

Transcript:

ΗΥ-150 Προγραμματισμός Επανάληψη Προγραμματισμός

Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη ροής εντολών: Σειριακή Σε διακλάδωση if, if/else, switch Επαναληψηπτικά for, while, do-while Προγραμματισμός 2

Εντολές επανάληψης Οι εντολές επανάληψης μας επιτρέπουν να προσδιορίσουμε ένα block εντολών που θα επαναλαμβάνεται όσο μία συνθήκη παραμένει αληθής Το block εντολων μπορεί να περιέχει και μία μόνο εντολή και, σηνήθως, εκτελείται περισσότερο από μια φορά Προγραμματισμός 3

Σειριακή εκτέλεση Θέλουμε να τυπώσουμε τους αριθμούς από το μηδέν έως τρία στην οθόνη int main() cout << 0 ; cout << 1 ; cout << 2 ; cout << 3 ; return 0; Πως θα τυπώσω τους αριθμούς ως το 10000; Προγραμματισμός 4

Επαναληπτική εκτέλεση int a = 0; while (a<4) cout << a; a = a+1; Συνθήκη Condition (conditional statement) Eπαναλμβανόμενη ενέργεια block εντολών. Κατά τα γνωστά: εάν η εντολή είναι μία, τότε τα μπορούν να παραληφθούν. Tυπώνει 0,1,2,3. Προγραμματισμός 5

Εικονικό «τρέξιμο» του προγράμματος a a<4 0 1 0 1 1 1 2 1 2 3 1 3 4 0 output int a=0; while (α<4) cout << a; a = a+1; Προγραμματισμός 6

Επανάληψη σε αντίστροφη σειρά int a = 4; while (a>0) a = a-1; cout << a; Τυπώνει 3,2,1,0. Προγραμματισμός 7

Διακλάδωση - Επανάληψη Επανάληψη Διακλάδωση int a = 0; while (α<4) cout << a; a = a+1; int a = 4; if (α>0) a = a-1; cout << a; Τυπώνει 0,1,2,3. Τυπώνει 3. Προγραμματισμός 8

H τιμή της έκφρασης (συνθήκης) είναι αληθής, ή ισοδύναμα, η αποτίμηση της είναι διάφορη του μηδενός Που είναι το πρόβλημα παρακάτω; while (a<6); f = 3 ; Προγραμματισμός 9

Κατηγορίες Βρόχων Επανάληψης Με μετρητή: ρητά προσδιορισμένος αριθμός επαναλήψεων επανέλαβε όσο ο μετρητής <> από μια τιμή Με σημαία (flag): μηπροσδιορισμένος αριθμός επαναλήψεων. η συνθήκη τερματισμού εξαρτάται από τιμές μεταβλητών που μεταβάλλονται κατα την επανάληψη Συνδυασμοί με χρήση λογικών τελεστών int c =0; while (c<2) cout << Hello ; c = c+1; int a =0; while (a!=-1) cin >> a; cout << a^2= << a*a; while ((c<2) (a!=-1)) Προγραμματισμός 10

Προγραμματισμός while

Επαναληπτικές Εντολές - while while (έκφραση) εντολή / block εντολών, statement while: Υπολόγισε την έκφραση Αν αληθής εκτέλεσε την εντολή ψευδής τερμάτισε Επέστρεψε στο while Προγραμματισμός 12

Πίνακας μετατροπής F o C o int main() int a = 0; while (a <= 100) cout << a << deg F = << (a - 32) * 5 / 9 << deg C ; a = a + 10; return 0; Προγραμματισμός 13

0 degrees F = -17 degrees C 10 degrees F = -12 degrees C 20 degrees F = -6 degrees C 30 degrees F = -1 degrees C 40 degrees F = 4 degrees C 50 degrees F = 10 degrees C 60 degrees F = 15 degrees C 70 degrees F = 21 degrees C 80 degrees F = 26 degrees C 90 degrees F = 32 degrees C 100 degrees F = 37 degrees C Προγραμματισμός 14

Άσκηση Γράψτε ένα τμήμα προγράμματος που τυπώνει τους ακέραιους αριθμούς από το 1 μέχρι το 12. Κάθε αριθμός που διαιρείται με το 3 να τυπώνεται ένα * δίπλα του. Ο κάθε αριθμός να τυπώνεται σε ξεχωριστή γραμμή. 1 2 3* 4 5 6* Προγραμματισμός 15

Λύση int i; /* loop counter */ i = 1; while (i <= 12) cout << i; if((i%3) == 0) cout << * ; cout << \n ; i = i + 1; Προγραμματισμός 16

Υπολογισμός των τετραγώνων των πρώτων 100 φυσικών αριθμών και του αθροίσματός τους 1*1+2*2+3*3+ +10*100 int c=1,sum=0; while (c<=100) cout << C is << c <<, square of C is << c*c << endl; sum = sum + c*c; c=c+1; cout << sum is << sum; Προγραμματισμός 17

Άθροισμα Σειράς int number; /* κρατάει δεδομένο εισόδου κάθε φορά*/ int sum; /* υφιστάμενη τιμή αθροίσματος */ cin>>number; /* διάβασε πρώτο στοιχείο */ sum = 0; /* αρχικοποίηση αθροίσματος*/ while(number!= 0) sum = sum + number; /* άθροισμα με υφιστάμενο sum*/ cin >> number; cout >> To athroisma tis seiras einai >> sum; Προγραμματισμός 18

Παραδείγματα Bρόχων /*Εκτυπώνει τουs 10 πρώτους αριθμούς του Ν που το άθροισμα των ψηφίων τους είναι 7 και την μέση τους τιμή*/ #define N 10 int x = 1; int cnt = 0; float mean = 0; /*metablhth gia enan tyxaio ari8mo*/ /*metablhth gia to # tvn ari8mwn*/ /*metablhth gia th mesh timh*/ while (cnt < N) if (sumofdigits(x) == 7) mean = x+mean; cnt = cnt + 1; cout << O << cnt << ari8mos einai o << x; x = x + 1; mean = mean/n; cout << H mesh tous timh einai << mean; Προγραμματισμός 19

Παραδείγματα Bρόχων /*Υπολογισμός του αθροίσματος των ψηφίων του αριθμού n*/ int sumofdigits(int n) int pn,x,sum; pn = n; sum = 0; while (pn > 0) x = pn % 10; pn = pn/10; sum += x; return sum; Προγραμματισμός 20

Επαναληπτικές Εντολές - while Π.χ., Υπολογισμός των τετραγώνων των πρώτων 10 φυσικών αριθμών που είναι πολλαπλάσια του 7 ή του 9 και του αθροίσματός τους int c=1,sum=0,pl = 0; while (pl<=10) if (c % 7 == 0 c % 9 == 0) cout << C is << c <<, square of C is << c*c; sum = sum + c*c; pl++; c++; cout << Sum = << sum; Προγραμματισμός 21

Εύρεση Μέγιστου Γράψτε ένα πρόγραμμα που αναγνωρίζει τον πιο μεγάλο αριθμό σε μια, απροσδιορίστου μεγέθους, σειρά ακέραιων αριθμών. Η σειρά εισάγεται από μονάδα εισόδου και τερματίζεται με την τιμή 0. π.χ. Enter series: 2 4 5236 6 31 978 5555 23 0 >> 5555 Προγραμματισμός 22

Εύρεση Μέγιστου int number; /* κρατάει δεδομένο εισόδου κάθε φορά*/ int maximum; /* υφιστάμενη τιμή μεγίστου αριθμού */ cin >> number; /* διάβασε πρώτο στοιχείο */ maximum = number; /* αρχικοποίηση μεγίστου */ while(number!= 0) cin >> number; /* διάβασε επόμενο στοιχείο */ if (number > maximum) /* επεξεργασία */ maximum = number; cout << To megisto stoixeio tis seiras einai << maximum; Προγραμματισμός 23

Γράψτε ένα πρόγραμμα το οποίο υπολογίζει το άθροισμα μιας απροσδιορίστου μεγέθους σειράς ακέραιων αριθμών. 2 4 236 6 31 23 3 549 33 29 12 190 2398 99 19 1 Τη στιγμή μέταφρασης του κώδικα Η σειρά εισάγεται από μονάδα εισόδου και τερματίζεται με την τιμή 0. π.χ. Enter series: 2 4 236 6 31 23 0 >> 302 Προγραμματισμός 24

Σειριακή είσοδος χαρακτήρων char c; while( (cin.get(c)) ) cout.put(c); Προγραμματισμός 25

cin.get() /* letter_count.c A program to count letters in input. */ main() int c ; int count = 0; while ( cin.get(c)) if ( ( c >= 'A' ) && ( c <= 'Z' ) ( c >= 'a' ) && ( c <= 'z' ) ) count ++ ; cout << count << letters ; Προγραμματισμός 26

Προγραμματισμός Increment operators

Τελεστές Αύξησης/Μείωσης Συχνά θέλουμε να αυξάνουμε/μειώνουμε μετρητές κατά 1. Prefix Operator (προ-σημειογραφική) ++i; i = i + 1; --i; i = i - 1; Εκτελούμε την πράξη πρώτα και μετά χρησιμοποιούμε την νέα τιμή της μεταβλητής Postfix Operator (μετά-σημειογραφική) i++; i = i + 1; i--; i = i - 1; Χρησιμοποιούμε την υφιστάμενη τιμή της μεταβλητής και μετά εκτελούμε την πράξη. Και οι δυο τελεστές εκτελούν την ίδια πράξη (αφαίρεση / πρόσθεση) αλλά με διαφορετική σειρά. Προγραμματισμός 28

Prefix vs Postfix Τελεστές i = 5; x = ++i; Πρώτα αύξησε και μετά ανάθεσε y = i++; Πρώτα ανάθεσε και μετά αύξησε x είναι 6, y είναι 6 και το i είναι 7 int my_int = 3; cout << my_int++; cout << my_int++; cout << my_int; Εκτυπώνει: 3,4,5 int my_int = 3; cout << ++my_int; cout << ++my_int; cout << my_int; Εκτυπώνει: 4,5,5 Προγραμματισμός 29

Σύνθετοι Τελεστές Ανάθεσης Συχνά θέλουμε να αυξάνουμε / μειώνουμε μετρητές κατά κάποιο Κ (>1). Πρόσθεση: i+=k; i = i + k; Πολλαπλασιασμός: i*=k; i = i * k; Διαίρεση: i/=k; i = i / k; Υπόλοιπο: i%=k; i = i%k; Π.χ. i-= k + z; i = i (k+z); Προγραμματισμός 30

Increment and Decrement Operators int c,n; n = 0; while( (cin.get(c)) ) if( c == '\n' ) n++; cout >> n >> lines ; Προγραμματισμός 31

Προγραμματισμός for

Επαναληπτικές Εντολές - for Συντακτικό: for ( έκφραση1 ; έκφραση2 ; έκφραση3) εντολή Σημασιολογία: Υπολόγισε την τιμή της έκφραση1 Υπολόγισε την τιμή της έκφραση2 Αν η έκφραση2 είναι αληθής (μη μηδενική τιμή) τότε Εκτέλεση την εντολή Υπολόγισε την τιμή της έκφραση3 Πήγαινε στο βήμα 2 Ειδάλλως, εξήλθε του βρόχου Ισοδύναμο με: έκφραση1; while (έκφραση2) εντολή έκφραση3; Προγραμματισμός 33

Σημασία for for (αρχικοποίηση; συνθήκη επανάληψης ; ενημέρωση) εντολή; Σειρά Εκτέλεσης: Αρχικοποίηση. Συνθήκη εντολή Ενημέρωση. Συνθήκη εντολή Ενημέρωση. Συνθήκη έξοδος Προγραμματισμός 34

Παράδειγμα int x; for (x=0; x<5; x++) cout << x; x x<5 έξοδος 0 1 0 1 1 1 2 1 2 3 1 3 4 1 4 5 0 Προγραμματισμός 35

Ροή Έλεγχου for int x,y; Αρχικοποίηση for (x=0; x<5; x++) Ενημέρωση cout << x; /* Εδώ το x=5 */ y = x*x + 10; cout << y; Συνθήκη /* επομένως εκτυπώνεται 35 */ Προγραμματισμός 36

for vs. while int x; for (int x=0; x<5; x++) cout << x; int x = 0; while (x < 5) cout << x; x++; Προγραμματισμός 37

Παραδείγματα Αντίστροφη μέτρηση Μέτρηση με βήμα (step increment) int x; for (x=5; x>0; x--) cout << x; Εκτυπώνει 5,4,3,2,1 int i; for (i = 0; i < 10; i += 2) cout << i; Εκτυπώνει 0,2,4,6,8, int i = 10; for (i = 10; i > 0; i /= 2) cout << i; Εκτυπώνει: 10,5,2,1 Προγραμματισμός 38

int i; int sum = 0; for (i = m; i <= n; i++) sum += f(i); int f(int i) int result = -1; result = i*i; return result; Προγραμματισμός 39

Επαναληπτικές Εντολές - for Συντακτικό: for ( έκφραση1 ; έκφραση2 ; έκφραση3) εντολή Συνήθως οι παραπάνω εκφράσεις αντιστοιχούν σε: for ( αρχικοποίηση μετρητών; συνθήκη ; μεταβολή μετρητών ) έτσι ώστε σε μια γραμμή να φαίνεται πόσες επαναλήψεις θα κάνει ο βρόχος Προγραμματισμός 40

Επαναληπτικές Εντολές - for Συγκρίνετε: int c; for (c=1; c<=10; c++) cout << C is << c <<, square of C is << c*c; με int c; c=1; while (c<=10) cout << C is << c <<, square of C is << c*c; c++; Είναι ισοδύναμα, αλλά το πρώτο προτιμάται από τους προγραμματιστές: μετά την for υπάρχουν όλες οι πληροφορίες μαζεμένες για να καταλάβουμε πως θα εκτελεστεί ο βρόχος Προγραμματισμός 41

Παραδείγματα Bρόχων /*Υπολογισμός Δύναμης*/ int power(int base, int n) int i, p; p =1; /*Υπολογισμός παραγοντικού n! = n*(n-1)! */ int parag(int n) int i, p; p =1; for (i = 1; i <= n; i++) p = p*base; for (i = 2; i <= n; i++) p = p*i; return p; return p; Προγραμματισμός 42

Επαναληπτικές Εντολές - for Η γλώσσα δεν υποχρεώνει η πρώτη έκφραση να αφορά αρχικοποίηση, η δεύτερη συνθήκη κτλ. Έτσι τα παρακάτω είναι συντακτικά σωστά: k=7; for (; k; ) cout << K is << k--; Προγραμματισμός 43

Προγραμματισμός do-while

Εισαγωγή Στις εντολές for και while, προτού εκτελεστεί κάποια εντολή στο σώμα του βρόχου, πρέπει να ελεγχθεί κάποια συνθήκη. π.χ. int a =0; while (a<2) /* σώμα */ a = a+1; π.χ. int for (a=0;a<2;a++) /*σώμα */ Προγραμματισμός 45

Εισαγωγή Θέλουμε να διαβάσουμε αριθμούς από το χρήστη και να τους αθροίσουμε. Όταν ο χρήστης δώσει 0 τότε τερματίζει το πρόγραμμα. cin >> a; while (a!=0) sum+=a; cin >> a; χρειάζομαι 2 cin Προγραμματισμός 46

Η Εντολή do-while do εντολή; while(συνθήκη); do cin >> a; sum+=a; while (a!=0); Πρώτα εκτελείται το σώμα της do /* σώμα */ while(); Ο έλεγχος της συνθήκης γίνεται μετά το while Προγραμματισμός 47

Ροη Ελέγχου Εκτέλεσε το σώμα Εφόσον η συνθήκη ισχύει επανέλαβε την εκτέλεση των εντολών στο σώμα του βρόχου Στο for και while το σώμα μπορεί να μην εκτελεστεί, ενώ στο do-while εκτελείται τουλάχιστο μια φορά ΠΡΟΣΟΧΗ: Να είμαστε σίγουροι ότι θέλουμε να εκτελεστεί το σώμα εντολών ΠΡΩΤΑ μια φορά και μετά να γίνει ο έλεγχος της συνθήκης Προγραμματισμός 48

Παράδειγμα int number; do cout << Enter a possitive value: ; cin >> number; while(number<= 0); int number; cout << Enter a possitive value: ; cin >> number; while(number<= 0) cout << Enter a possitive value: ; cin >> number; Προγραμματισμός 49

Επαναληπτικές Εντολές do/while int calculator(int a,int b) do εντολή while (έκφραση); int res = 0; char ch; cout << Add, Substract, Multiply, Divide ; do cout >> Enter first letter: ; cin.get(ch); while ( ch!= A && ch!= S && ch!= M && ch!= D ); if (ch== A ) res = a+b; else if (ch== S ) res = a-b; else if (ch== M ) res = a*b; else if (ch== D ) res = a/b; cout << a << ch << b << = << res; return res; Προγραμματισμός 50

Προγραμματισμός Έξοδος από βρόχο

Έξοδος από βρόχο Εντολή break Τερματισμός μόνο του πιο «μέσα» βρόγχου ή switch Ειδικές περιπτώσεις Π.χ., βγες από το μενού Εντολή continue Η ροή πηγαίνει απευθείας στην έκφραση3 παράσταση της for (αν πρόκειται για for) Κατόπιν η ροή πηγαίνει στην συνθήκη ελέγχου της ανακύκλωσης (για for, while, do) Π.χ., αγνόησε κάποιο στοιχείο του βρόχου Προγραμματισμός 52

break Η εντολή break μπορεί να χρησιμοποιηθεί σε βρόχο while, do-while και for για να προκαλέσει πρόωρη έξοδο από το βρόχο. int i; for (i = 1; i < 10; i++) if (i == 5) break; cout << i; cout << broke out of loop at i = << i; return 0; ΕΞΟΔΟΣ: 1 2 3 4 Έξοδος από βρόχο με i = 5 Προγραμματισμός 53

break Η εντολή break εξάγει την εκτέλεση από τον πλησιέστερο βρόχο στην εμβέλεια (scope) for (i = 1; i < 10; i++) for (j=0;j<5;j++) if (j == 2) break; Έξοδος από βρόχο του j Προγραμματισμός 54

continue H εντολή continue μπορεί να χρησιμοποιηθεί με for, while, do-while για να προκαλέσει τη ματαίωση της εκτέλεσης των επομένων εντολών του βρόχου, για την τρέχουσα επανάληψη. int i; for (i = 1; i < 10; i++) if (i == 5) continue; cout << i; Παράλειψη των υπολοίπων εντολών σε μια τρέχουσα επανάληψη και εκ νέου εκτέλεση του σώματος εντολών ΕΞΟΔΟΣ: 1 2 3 4 6 7 8 9 Έξοδος από βρόχο με i = 10 Προγραμματισμός

Παραδείγματα Bρόχων /*Υπολογισμός της μικρότερης δύναμης του 2 που είναι μεγαλύτερη από τον αριθμό n*/ int poweroftwo(int n) int p; p = 1; while (1) p = p*2; if (p > n) break; return p; Προγραμματισμός 56

break 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 int main() char key; cout<<"press any key or E to exit:\n <<endl; while(1) cin>>key; // if E or e, exit if (key == 'E' key == 'e') break; cout<<"goodbye!\n"; Προγραμματισμός 57

continue 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Προγραμματισμός int main() int haystack[size] = 1, 3, 2, 4, 7, 6, 9, 5, 8, 0; int needle; cout<<"enter a number (0-9) to see its position:"<<endl; cin>>needle; int i; for (i = 0; i < SIZE; i++) if (needle!= haystack[i]) cout<<"finding at position <<i<< : << haystack[i]<< endl; continue; cout<<"number needle << found at position <<i<<endl; break; return 0;

1/2 char c; while(true) cout << "MAIN MENU:" << endl; cout << "l: left, r: right, q: quit -> "; cin >> c; if(c == 'q') break; // Out of "while(1)" if(c == 'l') Προγραμματισμός cout << "LEFT MENU:" << endl << "select a or b: "; cin >> c; if(c == 'a') if(c == 'b') else cout << "you chose 'a'" << endl; continue; // Back to main menu cout << "you chose 'b'" << endl; continue; // Back to main menu cout << "you didn't choose a or b!" << endl; continue; // Back to main menu

2/2 if(c == 'r') cout << "RIGHT MENU:" << endl; cout << "select c or d: "; cin >> c; if(c == 'c') if(c == 'd') else cout << "you chose 'c'" << endl; continue; // Back to main menu cout << "you chose 'd'" << endl; continue; // Back to main menu cout << "you didn't choose c or d!" << endl; continue; // Back to main menu cout << "you must type l or r or q!" << endl; cout << "quitting menu..." << endl; Προγραμματισμός

Έξοδος από βρόχο #include <stdio.h> int main() /* Tameiakh mhxanh*/ float sum = 0, SUM = 0, product = 0; int plh8os, id = 1; cout << Give -1 for false, ; cout << -2 for next customer ; cout << and -3 for exit ;; while (1) cout ("Enter product price :"); cin >> product; if (product == -1) cout << Enter customer << id; SUM = SUM - sum; sum = 0; continue; else if (product == -2) cout << sum <<id<< = <<sum; id++; sum = 0; continue; else if (product == -3) cout << Balance of << id-1 << = << SUM; break; cout << "Enter item #:"; cin >> plh8os; sum += plh8os* product; SUM += plh8os* product; return 0; Προγραμματισμός

Που είναι το λάθος και πως διορθώνεται; Προγραμματισμός

Προγραμματισμός Προβλήματα

Πρόβλημα Εύρεσης Παραγοντικού Σχεδιάστε αλγόριθμο ο οποίος υπολογίζει το παραγοντικό ενός θετικού ακέραιου αριθμού (>0) που δίνει ο χρήστης. Δεδομένα εισόδου: αριθμός x Δεδομένα εξόδου : το παραγοντικό Π.χ. 1! = 1, 2! = 1.2 = 2, 3! = 1.2.3 = 6 4!=1.2.3.4=24, 5!=1.2.3.4.5=120,. Προγραμματισμός 64

Λύση 1: Εύρεσης Παραγοντικού με for loop int main() int i, factorial=1; int n; cout << "Enter Number (1-12):"; cin >> n; for (i=1; i<=n; i++) factorial *= i; cout << The factorial of << n << is << factorial; return 0; Προγραμματισμός 65

Λύση 2: Εύρεσης Παραγοντικού με έλεγχο δεδομένων εισόδου int main() int i, factorial=1; int n; do /* Έλεγχος ότι τα δεδομένα εισόδου είναι ορθά */ cout << "Enter Number (1-12):"; cin >> n; while (n<1 n>12); for (i=1; i<=n; i++) factorial *= i; cout << The factorial of n << is << factorial; return 0; Προγραμματισμός 66

Λύση 3: Εύρεσης Παραγοντικού με while loop int main() int i=1, factorial=1; int n; do cout << "Enter Number (1-12):"; cin >> n; while (n<1 n>12); while (i<=n) factorial *= i; i++; cout << The factorial of n << is << factorial; return 0; /*Έλεγχος ότι τα δεδομένα εισόδου είναι ορθά*/ Προγραμματισμός 67

Λύση 3: Εύρεσης Παραγοντικού με do while loop main() int i=1, factorial=1; int n; do cout << "Enter Number (1-12):"; cin >> n; while (n<1 n>12); Προγραμματισμός 68 /* Έλεγχος ότι τα δεδομένα εισόδου είναι ορθά*/ do factorial = factorial * i; i++; while (i<=n) cout << The factorial of n << is << factorial; return 0;

Εμφωλευμένοι (Nested) Βρόχοι : int i=0; while(i<5) int j=0; while(j<5) cout << i << - << j; j++; cout<<endl; i++; Προγραμματισμός 69 Αποτέλεσμα: 0-0 0-1 0-2 0-3 0-4 1-0 1-1 1-2 1-3 1-4 2-0 2-1 2-2 2-3 2-4 3-0 3-1 3-2 3-3 3-4 4-0 4-1 4-2 4-3 4-4

for (i=0; i <5; i++) for (j=0; j < i; j++) cout << i*j; cout.put( \n ); Πόσες φορές θα εκτελεστεί το 1ο cout; 0+1+2+3+4 = 10 Πόσες φορές θα εκτελεστεί το 2ο cout; 5 Ποια θα είναι η τελευταία τιμή που θα εκτυπωθεί; 4*3=12 Προγραμματισμός 70

Πόσες φορές θα εκτελεστει; for (i=0; i <= MAX1; i++) for (j=0; j < MAX2; j++) cout << **************** ; 1) MAX1*MAX2 2) (MAX1+1)*(MAX2+1) 3) (MAX1+1)*MAX2 4) MAX1*(MAX2+1) Προγραμματισμός 71

Example for (i=0;i<50;i++) for (j=0;j<50;j++) char c; double distance,dx,dy; dy = 25-i; dx = 25-j; distance = sqrt(dx*dx + dy*dy); if (distance < 25) c = * ; else c = ; cout.put(c); cout.put( \n ); Προγραμματισμός 72

τρίγωνο int i=0,j; while(i<5) j=0; while(j<=i) cout.put(i); cout.put( - ); cout.put(j); j++; cout.put( \n ); i++; Αποτέλεσμα: 0-0 1-0 1-1 2-0 2-1 2-2 3-0 3-1 3-2 3-3 4-0 4-1 4-2 4-3 4-4 Προγραμματισμός 73

Εμφωλευμένοι βρόχοι for (i=1; i<=8; i++) for (j = 1; j <= i; ++j) cout.put( * ); cout.put( \n ); Τι είναι μια «αναλογική» και «μη-αναλογική» γραμματισειρά; * ** *** **** ***** ****** ******* ******** Προγραμματισμός 74

Φωλιασμένοι βρόχοι /*Πως θα εκτυπώναμε το παρακάτω σχήμα;*/ * * ** ** *** *** **** **** ***** ***** ****** ****** ******* ******* **************** Προγραμματισμός 75

for (i = 0; i < 10; i++) /* loop body */ i = 0; for (; i < 10;) i++; i = 0; for (;; i++) if (i >= 10) break; Προγραμματισμός 76