You are on page 1of 13

http://www.zioulas.

gr

ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ


ΚΕΦ. 8

ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ (ΚΑΘΗΓΗΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ)


ΠΕΡΙΕΧΟΜΕΝΑ
 Δομές εντολών
 Εντολές επιλογής
 ΑΝ .. ΤΟΤΕ
 ΑΝ .. ΤΟΤΕ .. ΑΛΛΙΩΣ
 ΑΝ .. ΑΛΛΙΩΣ_ΑΝ
 Εντολές επανάληψης
 ΟΣΟ .. ΕΠΑΝΑΛΑΒΕ
 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ .. ΜΕΧΡΙΣ_ΟΤΟΥ
 ΓΙΑ .. ΑΠΟ .. ΜΕΧΡΙ
 Γενικές παρατηρήσεις
 Ιδιότητες βρόχων

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 2


ΔΟΜΕΣ ΕΝΤΟΛΩΝ
 Η «ΓΛΩΣΣΑ» χρησιμοποιεί ακριβώς τις ίδιες δομές εντολών με
τους αλγορίθμους

 Δομή Ακολουθίας
 Δομή Επιλογής (3 δομές εντολών)
 Δομή Επανάληψης (3 δομές εντολών)
 Ο μόνος περιορισμός σε σχέση με τους αλγορίθμους, είναι ότι
οι δεσμευμένες λέξεις των εντολών της «ΓΛΩΣΣΑΣ» γράφονται
με κεφαλαία γράμματα.

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 3


ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ
απλή πολλαπλή

σύνθετη

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 4


ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 5


ΓΕΝΙΚΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ
 Οι συνθήκες μπορούν να περιέχουν συγκρίσεις ανάμεσα σε
αριθμητικές αλλά και αλφαριθμητικές τιμές (αλφαβητικά)

 Όταν οι αριθμητικοί, οι συγκριτικοί και οι λογικοί τελεστές


συνδυάζονται σε μια έκφραση, οι αριθμητικές πράξεις
εκτελούνται πρώτες, ακολουθούν οι συγκρίσεις και τέλος
γίνονται οι λογικές πράξεις

π.χ. ΑΝ (α + β * 5 >= κ / 2) ΤΟΤΕ


ΑΝ (α + 2 < 10) ΚΑΙ (γ <> 0) ΤΟΤΕ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 6


 Αν σε μία δομή επιλογής μπορούν να χρησιμοποιηθούν
εναλλακτικά είτε εμφωλευμένα ΑΝ είτε λογικοί τελεστές
(ΚΑΙ, Η, ΟΧΙ), τότε προτιμάται το δεύτερο λόγω ταχύτητας

ΔΙΑΒΑΣΕ Βάρος, Ύψος


ΑΝ Βάρος < 80 ΤΟΤΕ
ΑΝ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ ′Ελαφρύς, κοντός′
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

ΔΙΑΒΑΣΕ Βάρος, Ύψος


ΑΝ Βάρος < 80 ΚΑΙ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ ′ Ελαφρύς, κοντός ′
ΤΕΛΟΣ_ΑΝ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 7


 Η χρήση εμφωλευμένων ΑΝ οδηγεί σε πολύπλοκες
δομές που αυξάνουν την πιθανότητα σφάλματος

ΑΝ Ποσότητα <= 50 ΤΟΤΕ


Κόστος  Ποσότητα * 200000
ΑΛΛΙΩΣ ΑΝ Ποσότητα <= 50 ΤΟΤΕ
ΑΝ Ποσότητα <= 100 ΤΟΤΕ Κόστος  Ποσότητα * 200000
Κόστος  Ποσότητα * 180000 ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 100 ΤΟΤΕ
ΑΛΛΙΩΣ Κόστος  Ποσότητα * 180000
ΑΝ Ποσότητα <= 200 ΤΟΤΕ ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 200 ΤΟΤΕ
Κόστος  Ποσότητα * 160000 Κόστος  Ποσότητα * 160000
ΑΛΛΙΩΣ ΑΛΛΙΩΣ
Κόστος  Ποσότητα * 150000 Κόστος  Ποσότητα * 150000
ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 8


 Ο έλεγχος περιττών συνθηκών μέσα στις εντολές επιλογής,
αυξάνει την πολυπλοκότητα του προγράμματος.
ΑΝ Ποσότητα <= 50 ΤΟΤΕ
Κόστος  Ποσότητα * 200000
ΑΛΛΙΩΣ_ΑΝ Ποσότητα >50 ΚΑΙ Ποσότητα <= 100 ΤΟΤΕ
Κόστος  Ποσότητα * 180000
ΑΛΛΙΩΣ_ΑΝ Ποσότητα >100 ΚΑΙ Ποσότητα <=200 ΤΟΤΕ
Κόστος  Ποσότητα * 160000
ΑΛΛΙΩΣ
Κόστος  Ποσότητα * 150000
ΤΕΛΟΣ_ΑΝ ΑΝ Ποσότητα <= 50 ΤΟΤΕ
Κόστος  Ποσότητα * 200000
ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 100 ΤΟΤΕ
Κόστος  Ποσότητα * 180000
ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 200 ΤΟΤΕ
Κόστος  Ποσότητα * 160000
ΑΛΛΙΩΣ
Κόστος  Ποσότητα * 150000
ΤΕΛΟΣ_ΑΝ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 9


 Στις εντολές επανάληψης πρέπει υποχρεωτικά να υπάρχει
μέσα στο βρόχο μία εντολή που να μεταβάλλει την τιμή της
μεταβλητής που ελέγχεται με την συνθήκη. Διαφορετικά
έχουμε άπειρη ανακύκλωση.

Α1 Α  100
ΟΣΟ Α <= 100 ΕΠΑΝΑΛΑΒΕ ΟΣΟ Α >= 1 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ Α ΓΡΑΨΕ Α
ΑΑ+1 ΑΑ-1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 10


 Όταν ο αριθμός των επαναλήψεων δεν είναι γνωστός, είναι
προσωπική επιλογή του προγραμματιστή για το ποια από τις
εντολές επανάληψης θα χρησιμοποιήσει (ΟΣΟ ή
ΜΕΧΡΙΣ_ΟΤΟΥ).
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Α
ΔΙΑΒΑΣΕ Α
ΟΣΟ Α <> 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ Α <> 0 ΤΟΤΕ
ΓΡΑΨΕ Α
ΓΡΑΨΕ Α
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΕΧΡΙΣ_ΟΤΟΥ Α = 0

Η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ θέλει προσοχή, αφού συνήθως


χρειάζεται στο εσωτερικό της μια επιπλέον δομή επιλογής,
προκειμένου να ελέγξει τις τιμές που χειρίζεται

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 11


 Κάθε εντολή επανάληψης ΓΙΑ μπορεί να υλοποιηθεί με
εντολές ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ

 Το αντίθετο δεν ισχύει πάντα


 αν ο αριθμός των επαναλήψεων είναι γνωστός τότε
μπορούμε άνετα να μετατρέψουμε μια ΟΣΟ ή
ΜΕΧΡΙΣ_ΟΤΟΥ σε ΓΙΑ.

 αν ο αριθμός των επαναλήψεων είναι άγνωστος, η


μετατροπή αυτή καθίσταται αδύνατη.

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 12


ΙΔΙΟΤΗΤΕΣ ΕΜΦΩΛΕΥΜΕΝΩΝ ΒΡΟΧΩΝ
 Ο εσωτερικός βρόχος πρέπει να βρίσκεται όλος μέσα στον
εξωτερικό
 Η είσοδος σε κάθε βρόχο γίνεται υποχρεωτικά από την αρχή
του
 Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως δείκτης
και στις δύο εντολές

ΣΩΣΤΟ ΛΑΘΟΣ

http://www.zioulas.gr Ε. Ζιούλας (Καθηγητής Πληροφορικής) 13

You might also like