Βαγγϋλησ Οικονόμου Διϊλεξη 4 Δομ. Προγραμ. - Διϊλεξη 4 1
Περιεχόμενα Προτϊςεισ επανϊληψησ Προτϊςεισ Διακλϊδωςησ Δομ. Προγραμ. - Διϊλεξη 4 2
Προτάςεισ επανάληψησ Οι προτϊςεισ επανϊληψησ (iterative ό loop statements) διακρύνονται ςε δύο κατηγορύεσ ανϊλογα με το αν γνωρύζουμε τον αριθμό των επαναλόψεων ό όχι. Μια πρόταςη ό ϋνα ςύνολο προτϊςεων μπορεύ να εκτελεύται όςο μια ςυνθόκη εύναι αληθόσ (conditional loop) ό για προκαθοριςμϋνο αριθμό επαναλόψεων (counting loop). Μια πρόταςη επανϊληψησ αποτελεύται ςυνόθωσ από δύο μϋρη. Το ϋνα εύναι μύα πρόταςη, απλό ό ςύνθετη, που ονομϊζεται ςώμα τησ επανϊληψησ (loop body). Το δεύτερο εύναι μια ϋκφραςη που προςδιορύζει πότε η επανϊληψη θα τερματιςτεύ. Δομ. Προγραμ. - Διϊλεξη 4 3
Δομζσ/Εντολζσ επανάληψησ Σε μια αορύςτων επαναλόψεων πρόταςη (indefinite iterations), όπωσ διαφορετικϊ ονομϊζεται η υπό ςυνθόκη επανϊληψη, ο αριθμόσ των επαναλόψεων δεν εύναι γνωςτόσ τη ςτιγμό που ο ϋλεγχοσ φτϊνει ςτην πρόταςη. Η πρόταςη αναφϋρεται και ςαν ςυνθήκησ ειςόδου. Ο έλεγχοσ μπορεί να φύγει από την πρόταςη χωρύσ το ςώμα τησ να εκτελεςτεύ ϋςτω για μύα φορϊ, ςε αντύθεςη με την αντύςτοιχη ςυνθήκησ εξόδου, η οποία διαςφαλίζει την εκτϋλεςη του ςώματοσ τησ πρόταςησ τουλϊχιςτον για μύα φορϊ. Δομ. Προγραμ. - Διϊλεξη 4 4
Δομζσ/Εντολζσ επανάληψησ Σε μια πρόταςη προκαθοριςμϋνου αριθμού επαναλόψεων, ο αριθμόσ των επαναλόψεων ελϋγχεται ςυνόθωσ από μια μεταβλητή ελέγχου (control variable). Η μεταβλητό ςυνόθωσ παύρνει μια αρχικό τιμό, ςε κϊθε επανϊληψη παύρνει την επόμενη από μια προκαθοριςμϋνη ακολουθύα τιμών (control sequence) και το ςώμα επαναλαμβϊνεται ϋωσ ότου η μεταβλητό ελϋγχου φτϊςει ςτο όριο τησ ακολουθύασ τιμών. Δομ. Προγραμ. - Διϊλεξη 4 5
Πρόταςη επανάληψησ while Η while ανόκει ςτην κατηγορύα των υπό ςυνθόκη προτϊςεων επανϊληψησ και αποτελεύ την πιο ςυχνϊ χρηςιμοποιούμενη πρόταςη αυτόσ τησ κατηγορύασ. Η εκτϋλεςη του ςώματοσ του βρόχου εξαρτϊται από την τιμό μιασ ϋκφραςησ που υπολογύζεται πριν από την εκτϋλεςη του ςώματοσ. Δομ. Προγραμ. - Διϊλεξη 4 6
Πρόταςη επανάληψησ while Σύνταξη: while ( έκφραςη ) { Πρόταςη; } Υπολογύζεται η τιμό τησ ϋκφραςησ και, αν εύναι αληθόσ, εκτελεύται η πρόταςη (απλό ό ςύνθετη). Στη ςυνϋχεια, ο ϋλεγχοσ μεταφϋρεται πϊλι ςτην αρχό τησ while, δηλαδό ςτον υπολογιςμό τησ τιμόσ τησ ϋκφραςησ. Αυτό ςυνεχύζεται ϋωσ ότου η ϋκφραςη τελικϊ δώςει τιμό ψευδό, οπότε ο ϋλεγχοσ μεταφϋρεται ςτην πρόταςη που ακολουθεύ την while. Δομ. Προγραμ. - Διϊλεξη 4 7
Πρόταςη επανάληψησ while Παρϊδειγμα Δομ. Προγραμ. - Διϊλεξη 4 8
Πρόταςη επανάληψησ do while H πρόταςη do while, ςε αντύθεςη με την while, υπολογύζει την ϋκφραςη και αποφαςύζει για την επανϊληψη ό όχι του βρόχου, μετϊ την εκτϋλεςη του ςώματόσ τησ. Αυτό ςημαύνει πωσ ϋχουμε μια τουλϊχιςτον εκτϋλεςη του ςώματοσ, ανεξϊρτητα από την τιμό τησ ςυνθόκησ. Το ςτοιχεύο αυτό αποτελεύ και τη μόνη διαφορϊ από την πρόταςη while. Σύνταξη: do { πρόταςη; } while ( έκφραςη ); Δομ. Προγραμ. - Διϊλεξη 4 9
Πρόταςη επανάληψησ do while Παρϊδειγμα Δομ. Προγραμ. - Διϊλεξη 4 10
Πρόταςη επανάληψησ for Η πρόταςη for ανόκει ςτην κατηγορύα των προτϊςεων όπου ϋχουμε (ό χρειαζόμαςτε) προκαθοριςμϋνο αριθμο επαναλόψεων. Απαιτεύται αρχικοπούηςη μιασ ό περιςςοτϋρων μεταβλητών πριν την εύςοδο ςτο βρόχο και, επιπλϋον, αλλαγό τησ τιμόσ αυτών των μεταβλητών μετϊ από κϊθε εκτϋλεςη του ςώματοσ του βρόχου. Σύνταξη : for (αρχικοποίηςη; έλεγχοσ ; ανανέωςη ) { Π πρόταςη; } Δομ. Προγραμ. - Διϊλεξη 4 11
Πρόταςη επανάληψησ for Παρϊδειγμα Δομ. Προγραμ. - Διϊλεξη 4 12
Επιλογή πρόταςησ επανάληψησ Γενικϋσ αρχϋσ (όχι δεςμευτικϋσ): Προτιμόςτε το βρόχο ςυνθόκησ ειςόδου (while) από τον αντύςτοιχο εξόδου (do-while), χρηςιμοποιόςτε το δεύτερο μόνο όταν η φύςη του προβλόματοσ το επιβϊλει, υπϊρχει δηλαδό ανϊγκη εκτϋλεςησ του ςώματοσ πριν από τον ϋλεγχο τησ ςυνθόκησ. Η επιλογό μεταξύ while και for κρύνεται κυρύωσ από την ύπαρξη απαριθμητό επαναλόψεων που, ςυνόθωσ, ςυνοδεύεται από αρχικοπούηςη και ανανϋωςη τησ τιμόσ του O,τιδόποτε εκφρϊζεται με τη μια πρόταςη μπορεύ να εκφραςτεύ και με την ϊλλη. Δομ. Προγραμ. - Διϊλεξη 4 13
Προτάςεισ Διακλάδωςησ Δύο κατηγορύεσ: Προτϊςεισ Διακλϊδωςησ υπό ςυνθόκη και Προτϊςεισ Άμεςησ μεταφορϊσ ελϋγχου. Μια πρόταςη διακλϊδωςησ υπό ςυνθόκη, περιϋχει ϋναν αριθμό εντολών, από τισ οπούεσ επιλϋγεται και εκτελεύται μόνο μύα. Προτϊςεισ Άμεςησ μεταφορϊσ ελϋγχου: ο ϋλεγχοσ του προγρϊμματοσ μασ μεταφϋρεται ςε ςημϋιο του προγρϊμματοσ ϊμεςα, χωρύσ να εξετϊζουμε αν ιςχύει μια ςυνθόκη. Δομ. Προγραμ. - Διϊλεξη 4 14
Πρόταςη διακλάδωςησ if Σύνταξη: if (ϋκφραςη1) { } πρόταςη1; Η ϋκφραςη, που τισ περιςςότερεσ φορϋσ εύναι ςυςχετιςτικό, υπολογύζεται και αν η τιμό τησ εύναι εκτελεύται η πρόταςη πρόταςη1, αλλιώσ ο έλεγχοσ μεταφϋρεται ςτην επόμενη πρόταςη. Δομ. Προγραμ. - Διϊλεξη 4 15
Πρόταςη διακλάδωςησ switch H πρόταςη switch επιτρϋπει τον προςδιοριςμό απεριόριςτου αριθμού διαδρομών ανϊλογα με την τιμό μιασ ϋκφραςησ. Δομ. Προγραμ. - Διϊλεξη 4 16
Πρόταςη διακλάδωςησ switch Υπολογύζεται η έκφραςη, και η τιμή τησ ςυγκρίνεται διαδοχικά με τισ ςταθερϋσ εκφρϊςεισ (ςταθ εκφρ1, ςταθ εκφρ2, ςταθ εκφρ3, ). Ο έλεγχοσ μεταφϋρεται κϊτω από την ςταθερϊ ϋκφραςη με την οπούα η τιμό τησ ϋκφραςησ ιςούται, δηλαδό ςε μύα εκ των πρόταςη1, πρόταςη2,. Αν δεν ιςούται με καμύα από τισ ςταθερϋσ εκφρϊςεισ, ο ϋλεγχοσ μεταφϋρεται ςτην πρόταςη που ακολουθεύ την ετικϋτα default, εϊν βϋβαια αυτό υπϊρχει, αλλιώσ ςτην πρόταςη μετϊ την ολοκλόρωςη του ςώματοσ τησ switch. Ένα ςημαντικό ςτοιχεύο εύναι ότι η ροό του προγρϊμματοσ ςυνεχύζει από την επιλεχθεύςα case ετικϋτα μϋχρι το τϋλοσ τησ πρόταςησ switch ό μϋχρι να ςυναντηθεύ μια πρόταςη ϊμεςησ μεταφορϊσ ελϋγχου. Αυτό ςημαύνει πωσ το ςύςτημα εκτελεύ τισ προτϊςεισ κϊτω από την επιλεχθεύςα ετικϋτα ϋωσ ότου ςυναντόςει πρόταςη break, goto ό return. Δομ. Προγραμ. - Διϊλεξη 4 17
Πρόταςη διακλάδωςησ switch Δομ. Προγραμ. - Διϊλεξη 4 18
Προτάςεισ Άμεςησ μεταφοράσ ελζγχου Οι προτϊςεισ break και continue διευκολύνουν τη διαχεύριςη ειδικών περιπτώςεων μϋςα ςε βρόχουσ επανϊληψησ. Η εντολό break μεταφϋρει τον ϋλεγχο ϋξω από τον βρόχο ςτον οπούο εμπεριϋχεται και, πιο ςυγκεκριμϋνα, ςτην πρόταςη που ακολουθεύ το βρόχο. Χρηςιμοποιεύται, επύςησ, και ςτην πρόταςη switch, για να μεταφϋρει τον ϋλεγχο ςτην πρόταςη που ακολουθεύ την switch. Δομ. Προγραμ. - Διϊλεξη 4 19
Προτάςεισ Άμεςησ μεταφοράσ ελζγχου Δομ. Προγραμ. - Διϊλεξη 4 20
Προτάςεισ Άμεςησ μεταφοράσ ελζγχου Η εντολό continue μεταφϋρει τον ϋλεγχο ςτην αρχό του βρόχου. Χρηςιμοποιεύται, ςυνόθωσ, όταν θϋλουμε να μεταφϋρουμε τον ϋλεγχο ςτην επόμενη επανϊληψη του βρόχου παραλεύποντασ την εκτϋλεςη του υπόλοιπου τμόματοσ του ςώματοσ του βρόχου. Δομ. Προγραμ. - Διϊλεξη 4 21
Προτάςεισ Άμεςησ μεταφοράσ ελζγχου Δομ. Προγραμ. - Διϊλεξη 4 22
Τζλοσ!!!!!!!!! Δομ. Προγραμ. - Διϊλεξη 4 23