Τα τρία στάδια της αντιμετώπισης ενός προβλήματος είναι: ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα

Σχετικά έγγραφα
Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραµµατισµός Η/Υ. Μέρος2

Πληροφορική 2. Αλγόριθμοι

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

ΑΕΠΠ Ερωτήσεις θεωρίας

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Ψευδοκώδικας. November 7, 2011

Θεωρία Προγραμματισμού

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

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

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

Μαλούτα Θεανώ Σελίδα 1

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

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

Α. Ερωτήσεις Ανάπτυξης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

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

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

6. 1 Η έννοια του προγράμματος

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

6. Εισαγωγή στον προγραµµατισµό

Επιµέλεια Θοδωρής Πιερράτος

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

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

Επαναληπτικές Διαδικασίες

Προγραμματισμός και Εφαρμογές Υπολογιστών

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Πρόβλημα 37 / σελίδα 207

Υπολογιστικά Συστήματα

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

Ενδεικτικές Ερωτήσεις Θεωρίας

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Transcript:

1. ΠΡΟΒΛΗΜΑΤΑ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Η έννοια του προβληματος Ο όρος πρόβληµα υποδηλώνει µία µη αποδεκτή ως έχει, κατάσταση που χρήζει αντιµετώπισης, δηλαδή απαιτεί λύση ή απάντηση, που δεν είναι γνωστή ούτε προφανής. Λύση ή απάντηση ενός προβλήµατος αποτελούν µια σειρά από ενέργειες ή σκέψεις που «µετασχηµατίζουν» την αρχική κατάσταση σε µία ζητούµενη αποδεκτή κατάσταση. Σημαντικός παράγοντας στη σωστή αντιμετώπιση ενός προβλήματος είναι ο λόγος που ως μέσο επικοινωνίας και συνεννόησης πρέπει να χαρακτηρίζεται από σαφήνεια και η αποσαφήνιση του χώρου στο οποίο αναφέρεται. Η πληροφορία αυτή παρέχεται επίσης από την εκφώνηση του προβλήματος. Στάδια αντιμετώπισης του προβλήματος Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το πρόβλημα. Απαιτεί επίσης την λεπτομερειακή καταγραφή των ζητουμένων που αναμένονται ως αποτελέσματα της επίλυσης του προβλήματος. Τα τρία στάδια της αντιμετώπισης ενός προβλήματος είναι: κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσο της λύσης των επιμέρους προβλημάτων. Η έννοια του αλγόριθμου Για να λύσουμε κάποιο πρόβλημα με την βοήθεια του ηλεκτρονικού υπολογιστή χρειάζεται να κατασκευάσουμε και να τρέξουμε κάποιο πρόγραμμα. Ορισμένες φορές, το πρόγραμμα που χρειαζόμαστε είναι ήδη κατασκευασμένο (από κάποιον άλλο η και από εμάς τους ίδιους παλιότερα) οπότε απλώς το ξανατρέχουμε δίνοντάς του τα δεδομένα του νέου προβλήματος. Ας δώσουμε τώρα έναν πρώτο ορισμό για το τι είναι ένα πρόγραμμα (Ενας δευτερος καλύτερος- ορισμός δίνεται στο τέλος αυτής της παραγράφου). Ένα πρόγραμμα είναι μια ακολουθία εντολών (οδηγιών) που δίνουμε στον ηλεκτρονικό υπολογιστή για να του υποδείξουμε το πως θα λύσει ένα συγκεκριμένο πρόβλημα. Ο ηλεκτρονικός υπολογιστής ακολουθώντας κατά γράμμα και τελείως αυτόματα τις εντολές αυτές επεξεργάζεται τα δεδομένα του προβλήματος και παράγει τα αποτελέσματα που συνιστούν την λύση του προβλήματος. - 1 -

Αν οι εντολές του προγράμματος είναι σωστές (και σωστά διατυπωμένες) τότε θα πάρουμε την σωστή λύση για το πρόβλημά μας. (Είναι γνωστή και η έκφραση garbage-in / garbage-out δηλ. αν δώσεις σκουπίδια, σκουπίδια θα πάρεις). Το σύνολο των απλών εντολών που αποτελούν τη λύση ενός προβλήματος και η σειρά με την οποία θα πρέπει να εκτελεστούν (Βήμα 1, Βήμα 2 κλπ) ονομάζεται διαδικασία επίλυσης του προβλήματος. Η έννοια της διαδικασίας είναι αρκετά πλατιά και δεν περιορίζεται μόνο στους ηλεκτρονικούς υπολογιστές. Στη ζωή μας συναντάμε κάθε μέρα αρκετά παραδείγματα διαδικασιών. Μια συνταγή μαγειρικής, οι ενέργειες ενός ταμία μιας τράπεζας, ακόμα και ο τρόπος με τον οποίο περπατάμε είναι απλές διαδικασίες. Για να μπορέσουμε να εκτελέσουμε μια διαδικασία με την βοήθεια του ηλεκτρονικού υπολογιστή, θα πρέπει η διαδικασία αυτή να υπακούει σε κάποιους ειδικούς κανόνες, να είναι δηλαδή όπως λεμε ένας αλγόριθμος. Ο επόμενος ορισμός του αλγορίθμου οφείλεται στον D. Knuth: Αλγόριθμος είναι μια συγκεκριμένη, πεπερασμένη, εφικτή και σαφής διαδικασία με μια αρχή και ένα τέλος. Κάθε μια από τις υπογραμμισμένες λέξεις αποτελούν αναγκαίες συνθήκες (αν έστω και μια από αυτές δεν ισχύει, η διαδικασία δεν είναι αλγόριθμος). Ας δούμε τι σημαίνει η κάθε ιδιότητα: Μια διαδικασία ονομάζεται συγκεκριμένη όταν περιγράφεται με ένα μονοσήμαντα συγκεκριμένο τρόπο, έχει δηλαδή ένα συγκεκριμένο αριθμό βημάτων καθένα από τα οποία περιγράφει συγκεκριμένες εντολές. Μια διαδικασία ονομάζεται πεπερασμένη όταν αποτελείται από πεπερασμένο (δηλ όχι άπειρο) πλήθος βημάτων και εκτελείται σε πεπερασμένο χρόνο χρησιμοποιώντας πεπερασμένους υπολογιστικούς πόρους (πχ μνήμη). Μια διαδικασία ονομάζεται εφικτή όταν η εκτέλεσή της είναι εφικτή με την σημερινή τεχνολογία (ταχύτητας και μνήμης). Έτσι πχ μια διαδικασία που χρειάζεται 800 χρόνια για να τρέξει στον πιο γρήγορο ηλεκτρονικό υπολογιστή της εποχής μας, δεν είναι εφικτή παρόλο που είναι πεπερασμένη. Μια διαδικασία ονομάζεται σαφής όταν το κάθε βήμα της περιγράφεται με τρόπο που δεν αποδέχεται διαφορετικές ερμηνείες από διαφορετικούς ανθρώπους. Έτσι πχ όταν σε κάποια σημεία μιας συνταγής μαγειρικής διαβάζουμε φράσεις όπως λίγο αλάτι ή όσο αλεύρι χρειαστεί η διαδικασία αυτή δεν είναι σαφής. Η εξήγηση του γεγονότος ότι ένας αλγόριθμος είναι μια διαδικασία με μια μόνο αρχή και ένα μόνο τέλος είναι αρκετά προφανής: Σημαίνει ότι τόσο το πρώτο βήμα όσο και το τελευταίο βήμα της διαδικασίας είναι τα μόνα δυο σημεία από τα οποία ξεκινάμε και αντίστοιχα τελειώνουμε την εκτέλεση της διαδικασίας. Η διατύπωση ενός αλγορίθμου γίνεται στην απλούστερη μορφή με απλή αναγραφή των βημάτων από τα οποία αποτελείται (ας μην ξεχνάμε ότι κάθε αλγόριθμος είναι μια διαδικασία και επομένως αποτελείται από ένα διατεταγμένο πλήθος βημάτων). Παρακάτω - 2 -

θα δούμε και άλλους τρόπους διατύπωσης ενός αλγορίθμου, όμως για την ώρα ας δούμε δυο παραδείγματα αλγορίθμων για την επίλυση δυο απλών προβλημάτων. Παράδειγμα 1. Αλγόριθμος για την εύρεση µέσου Μ ενός ευθυγράµµου τµήµατος ΑΒ. 1. Τοποθέτησε την ακίδα του διαβήτη στο Α. 2. Άνοιξε τον διαβήτη µέχρι το Β. 3. Σχηµάτισε κύκλο. 4. Τοποθέτησε την ακίδα στο Β. 5. Άνοιξε το διαβήτη µέχρι το Α. 6. Σχηµάτισε κύκλο. 7. Φέρε ευθεία που ενώνει τα σηµεία τοµής των δύο κύκλων. 8. Ονόµασε Μ το σηµείο τοµής της προηγούµενης ευθείας και του ΑΒ. Α Μ Β Παράδειγμα 2. Αλγόριθμος για την εύρεση του μέγιστου από ένα πλήθος αριθμών: 1. Βάλε στην µεταβλητή ΜΕΓΙΣΤΟ τον πρώτο αριθµό. 2. Εξέτασε τον επόµενο αριθµό. 3. Κάνε σύγκριση αυτού µε την τιµή από το ΜΕΓΙΣΤΟ και αν ο αριθµός είναι µεγαλύτερος θέσε αυτή την τιµή στην µεταβλητή ΜΕΓΙΣΤΟ. 4. Αν υπάρχουν και άλλοι αριθµοί, πήγαινε στο δεύτερο βήµα για να συνεχίσεις την εκτέλεση αλλιώς εµφάνισε το ΜΕΓΙΣΤΟ Έτσι λοιπόν, μετά από τα παραπάνω θα μπορούσαμε να δώσουμε έναν καλύτερο ορισμό για την έννοια του προγράμματος, λέγοντας ότι πρόγραμμα είναι η υλοποίηση ενός αλγορίθμου σε τέτοια μορφή ώστε να γίνεται κατανοητός από τον ηλεκτρονικό υπολογιστή και κατά συνέπεια να είναι δυνατή η εκτέλεσή του από αυτόν. Τα Σημαντικότερα Βήματα στην Διαδικασία του Προγραμματισμού Από την στιγμή που αποφασίζει κάποιος να λύσει ένα πρόβλημα με τη βοήθεια του ηλεκτρονικού υπολογιστή μέχρι την στιγμή που παίρνει την λύση αυτού του προβλήματος μεσολαβούν μια σειρά βήματα τα οποία θα πρέπει να ακολουθηθούν. Κατ αυτήν την έννοια, η λύση ενός προβλήματος με τη βοήθεια του ηλεκτρονικού υπολογιστή αποτελεί μια διαδικασία, τα σημαντικότερα βήματα της οποίας είναι τα παρακάτω: 1. Ορισμός του προβλήματος. Το πρώτο πράγμα που πρέπει να γίνει είναι να ορίσουμε σωστά και με σαφήνεια το πρόβλημα που θέλουμε να λύσουμε. Παρόλο που κάτι τέτοιο φαίνεται αρκετά προφανές για απλά και μικρά προβλήματα, το βήμα αυτό είναι απαραίτητο όταν έχουμε να κάνουμε με μεγαλύτερα και πιο σύνθετα προβλήματα. 2. Γενική περιγραφή της λύσης. Το επόμενο βήμα μετά την διατύπωση του προβλήματος είναι η γενική περιγραφή της λύσης που θα χρησιμοποιήσουμε. Δεν πρέπει να ξεχνάμε ότι - 3 -

ο ηλεκτρονικός υπολογιστής δεν παίρνει καμία πρωτοβουλία και επομένως περιμένει από εμάς να του δώσουμε τις ακριβείς οδηγίες για τη λύση του συγκεκριμένου προβλήματος. 3. Επιλογή του κατάλληλου αλγορίθμου (και διατύπωσή του με κατάλληλο τρόπο). Σ αυτό το βήμα περνάμε από την γενική περιγραφή της λύσης στην διατύπωσή της σε μορφή αλγορίθμου. Σε αρκετές περιπτώσεις η συγκεκριμενοποίηση της διατύπωσης της λύσης μπορεί να γίνει με πολλούς εναλλακτικούς τρόπους και έτσι να καταλήξουμε σε πολλούς διαφορετικούς αλγόριθμους, από τους οποίους θα πρέπει να επιλέξουμε έναν (τον πιο κατάλληλο) για την περαιτέρω υλοποίησή του σε πρόγραμμα. Η διατύπωση του αλγορίθμου μπορεί να γίνει ακόμα και στην φυσική μας γλώσσα, όμως κατά κανόνα χρησιμοποιούμε άλλες πιο αυστηρές μορφές διατύπωσης όπως ο ψευδοκώδικας, τα διαγράμματα ροής (που θα δούμε παρακάτω) και ο τύπος. 4. Γράψιμο του κώδικα Τα τρία προηγούμενα βήματα μπορούν να θεωρηθούν και ως βήματα προετοιμασίας καθώς δεν είναι απαραίτητη η χρήση του ηλεκτρονικού υπολογιστή για την υλοποίησή τους. Η παρουσία του ηλεκτρονικού υπολογιστή γίνεται απαραίτητη στο βήμα τούτο κατά το οποίο πραγματοποιείται η μεταφορά (μετάφραση) από τον αλγόριθμο στο πρόγραμμα. Το γράψιμο του κώδικα εξαρτάται κυρίως από παράγοντες όπως η φύση του προβλήματος οι διαθέσιμες γλώσσες προγραμματισμού οι φυσικοί περιορισμοί (μνήμη, ταχύτητα κλπ) του ηλεκτρονικού υπολογιστή που πρόκειται να χρησιμοποιηθεί. 5. Διόρθωση συντακτικών λαθών (debugging). είναι λογικά το επόμενο βήμα στη διαδικασία του προγραμματισμού. Ο κώδικας ελέγχεται για την ορθότητα της διατύπωσης των εντολών του (έλεγχος σύνταξης). Ο έλεγχος αυτός είναι αρκετά εύκολος διότι τα λάθη εντοπίζονται αυτόματα από τον compiler (η λέξη εξηγείται παρακάτω) της γλώσσας προγραμματισμού που χρησιμοποιούμε και Έτσι το δικό μας καθήκον περιορίζεται απλώς στην διόρθωσή τους. 6. Έλεγχος ορθότητας (Διόρθωση λογικών λαθών). Στο βήμα τούτο το πρόγραμμα που είναι πλέον έτοιμο, ελέγχεται για την ορθότητα των αποτελεσμάτων που παράγει, δίνοντάς του να τρέξει προβλήματα τα αποτελέσματα των οποίων είναι γνωστά από πριν. Με τον τρόπο αυτό εντοπίζονται και διορθώνονται τα λογικά λάθη που πιθανόν να υπάρχουν στο πρόγραμμα και οφείλονται είτε σε λάθη του ίδιου του αλγορίθμου (garbage-in / garbageout) είτε σε λάθη που προέκυψαν κατά την διατύπωση του αλγορίθμου και την υλοποίησή του σε πρόγραμμα. Τόσο ο εντοπισμός όσο και η διόρθωση των λογικών λαθών είναι μια επίπονη διαδικασία (ιδιαίτερα σε μεγάλα προγράμματα), ενώ δεν μπορεί να δοθεί ποτέ εγγύηση για την απόλυτη ορθότητα ενός μεγάλου προγράμματος.η συνολική προσπάθεια που καταβάλλεται για τον έλεγχο της ορθότητας είναι ανάλογη της σπουδαιότητας της χρήσης του συγκεκριμένου προγράμματος (πχ προγράμματα ελέγχου πτήσης αεροσκαφών/διαστημοπολοίων κλπ). - 4 -

Αν το πρόγραμμα που κατασκευάζεται προορίζεται για επαγγελματική χρήση τότε θα πρέπει να ακολουθηθούν και τα επόμενα δυο βήματα: 7. Συγγραφή εγχειριδίων χρήσης (Manuals). Τα εγχειρίδια χρήσης είναι βιβλία που συνοδεύουν το πρόγραμμα και περιγράφουν τόσο τον τρόπο χρήσης του όσο και τις λειτουργίες του. Σε πολύ μεγάλα προγράμματα (η πακέτα προγραμμάτων) τα εγχειρίδια χρήσης χωρίζονται σε δυο κατηγορίες: Σε εκείνα που απευθύνονται στους τελικούς χρήστες του προγράμματος (User Level Manuals) και σε εκείνα που απευθύνονται στους διαχειριστές του υπολογιστικού συστήματος στον οποίο εγκαθίσταται το πρόγραμμα (System Level Manuals). 8. Συντήρηση Όπως είδαμε και παραπάνω είναι πρακτικά αδύνατο να διορθώσουμε όλα τα λογικά λάθη ενός προγράμματος πριν αποφασίσουμε ότι είναι έτοιμο για χρήση. Αυτό σημαίνει ότι κατά την χρήση του ενδέχεται να διαπιστωθούν κάποια λάθη, ή κάποιες αβλεψίες ή ακόμη και κάποια σημεία στα οποία θα μπορούσε να συμπεριφέρεται καλύτερα. Έτσι, με το πέρασμα του χρόνου δημιουργείται ένας κατάλογος με τις διορθώσεις ή/και βελτιώσεις που θα πρέπει να γίνουν στο πρόγραμμα. Η υλοποίηση αυτών των τροποποιήσεων ονομάζεται συντήρηση του προγράμματος. Κάθε νέα έκδοση (Version) ενός προγράμματος χαρακτηρίζεται συνήθως από το όνομα του προγράμματος και δίπλα του έναν αριθμό ( πχ Draw 1, Draw 2 κλπ). Ανάμεσα σε διαδοχικές εκδόσεις ενός προγράμματος είναι δυνατόν να γίνουν και κάποιες μικροαλλαγές. Το γεγονός αυτό επισημαίνεται με έναν δεύτερο αριθμό (Release) που ακολουθεί τον αριθμό της έκδοσης. (πχ DOS 6.22, Windows 3.1 κλπ). Διαγράμματα Ροής (flowcharts) Η διατύπωση ενός αλγορίθμου αποτελεί όπως είπαμε ένα ενδιάμεσο βήμα ανάμεσα στην γενική ιδέα που έχουμε στο μυαλό μας για την λύση ενός προβλήματος και στο πρόγραμμα που πραγματικά λύνει το πρόβλημα. Αν και η διατύπωση αυτή μπορεί να γίνει και στην φυσική μας γλώσσα (δηλ. με απλά Ελληνικα/Αγγλικά), συνήθως επιλέγουμε πιο αυστηρές μορφές διατύπωσης αφ ενός διότι η φυσική γλώσσα μπορεί να οδηγήσει σε ασαφείς διατυπώσεις και αφ εταίρου διότι Έτσι διευκολύνεται η κωδικοποίηση (γράψιμο του προγράμματος) που κατά κανόνα ακολουθεί.. Τα διαγράμματα ροής αποτελούν μαζί με την φυσική γλώσσα, τον ψευδοκώδικα και τον τύπο, τις τέσσερις εναλλακτικές μορφές διατύπωσης ενός αλγορίθμου ένα διάγραμμα ροής αποτελείται από μια σειρά σχημάτων που συνδέονται μεταξύ τους με συγκεκριμένο τρόπο. Τα διαφορετικά περιγράμματα των σχημάτων υποδηλώνουν διαφορετικά είδη εντολών / πράξεων, ενώ ο τρόπος διασύνδεσης υποδηλώνει την σειρά εκτέλεσης των συγκεκριμένων εντολών / πράξεων. Ένα διάγραμμα ροής μας δίνει μια συνολική εποπτεία του αλγορίθμου γιαυτό και δεν θα πρέπει να είναι αρκετά περίπλοκο ή μεγάλο σε έκταση. Γενικά δεν θα πρέπει να εκτείνεται σε περισσότερες από μια σελίδες, έτσι ώστε να μη χάνεται η συνολική εποπτεία. - 5 -

Ο επόμενος πίνακας παρουσιάζει τα πιο συνηθισμένα σχήματα και τι εντολές / πράξεις αντιπροσωπεύουν: Αρχή / Τέλος αλγορίθμου: Το σχήμα αυτό περιέχει είτε την λέξη ΑΡΧΗ είτε την λέξη ΤΕΛΟΣ και χρησιμοποιείται για να σηματοδοτήσει αντίστοιχα τα σημεία έναρξης και λήξης του διαγράμματος ροής Απλές πράξεις: Μέσα στο παραλληλόγραμμο αυτό αναγράφονται μια ή περισσότερες απλές πράξεις που εκτελούνται διαδοχικά Προκαθορισμένη διαδικασία: Μέσα στο παραλληλόγραμμο αυτό αναγράφεται το όνομα μιας διαδικασίας (συνήθως αρκετά σύνθετης) η οποία περιγράφεται αναλυτικά με δικό της ξεχωριστό διάγραμμα ροής Έλεγχος / Απόφαση: Μέσα στον ρόμβο αναγράφεται μια συνθήκη (π.χ. Α>Β ) η οποία μπορεί να πληρείται ή όχι ανάλογα με τις τιμές των δεδομένων. Η πορεία που θα ακολουθηθεί αποφασίζεται ανάλογα με την έκβαση του ελέγχου. Είσοδος (ανάγνωση) δεδομένων: Το σχήμα αυτό χρησιμοποιείται για να περιγράψει την είσοδο δεδομένων στον αλγόριθμο από μια εξωτερική πηγή δεδομένων του ηλεκτρονικού υπολογιστή όπως το πληκτρολόγιο Έξοδος (εμφάνιση) αποτελεσμάτων: Το σχήμα αυτό χρησιμοποιείται για να περιγράψει την έξοδο αποτελεσμάτων από τον αλγόριθμο σε μια συσκευή εξόδου του ηλεκτρονικού υπολογιστή όπως η οθόνη ή ο εκτυπωτής Επικοινωνία με αρχείο: Το σχήμα αυτό χρησιμοποιείται για να περιγράψει την ανάγνωση ή την γραφή δεδομένων από/προς ένα αρχείο. Σύνδεση με άλλο σημείο του διαγράμματος (στην ίδια ή σε άλλη σελίδα) Αν ο αλγόριθμος είναι περίπλοκος, μπορούμε να τον διασπάσουμε σε μικρότερα αυτόνομα λειτουργικά κομμάτια και να κατασκευάσουμε τα επί μέρους διαγράμματα ροής για το καθένα από αυτά, και ένα κεντρικό διάγραμμα ροής στο οποίο τα επί μέρους τμήματα θα προσδιορίζονται σαν προκαθορισμένες διαδικασίες. ( ). Δείτε τα επόμενα παραδείγματα - 6 -

Παράδειγμα 1: Εύρεση του μεγαλύτερου από δυο αριθμούς: ΑΡΧΗ Διάβασε τα Α και Β ΝΑΙ Α > Β ; ΟΧΙ Το Α είναι Μεγαλύτερο Το Β είναι Μεγαλύτερο ΤΕΛΟΣ Παράδειγμα 2: Εκτύπωση των αριθμών από το 1 ως το 10. (Δυο διαφορετικές εκδοχές) ΑΡΧΗ I 0 ΑΡΧΗ Ι 1 NAI I I + 1 Εκτύπωσε το Ι Ι < 10 ; OXI Ι > 10 ; I I + 1 OXI Εκτύπωσε το Ι NAI ΤΕΛΟΣ ΤΕΛΟΣ - 7 -

Παράδειγμα 3: Υπολογισμός του μέσου όρου γνωστού πλήθους αριθμών. Εδώ χρειάζεται να διαβάσουμε πρώτα το πλήθος Ν των αριθμών, και στη συνέχεια έναν-έναν τους Ν αριθμούς και να τους τοποθετήσουμε στις μεταβλητές Α(1), Α(2).. Α(Ν). Η διαδικασία του διαβάσματος των Ν αριθμών ορίζεται ξεχωριστά (προκαθορισμένη διαδικασία) Υπολογισμός μέσου όρου Ν αριθμών ΑΡΧΗ Διάβασε το πλήθος των αριθμών Ν Προκαθορισμένη διαδικασία «Διάβασε Ν αριθμούς» ΑΡΧΗ I 0 Ν > 0 ; OXI I I + 1 NAI Ν ακέραιος ; OXI Διάβασε το Α(Ι) NAI Διάβασε Ν αριθμούς Εκτύπωσε μήνυμα λάθους NAI Ι < Ν ; OXI Σ Α(1)+ +Α(Ν) ΤΕΛΟΣ Μ = Σ / Ν Εκτύπωσε τον μέσο όρο Μ ΤΕΛΟΣ - 8 -

Παράδειγμα 4: Υπολογισμός του μέσου όρου άγνωστου πλήθους αριθμών. Εδώ υποθέτουμε ότι το πλήθος των αριθμών δεν είναι από πριν γνωστό. Οι αριθμοί διαβάζονται ο ένας κατόπιν του άλλου μέχρις ότου δοθεί κάποιος ειδικός αριθμός. Ο ειδικός αριθμός αυτός, που ονομάζεται και κλειδί, έχει κάποια ειδική τιμή (π.χ. 99999) που έχει από τα πριν συμφωνηθεί ότι σηματοδοτεί το τέλος των δεδομένων. Είναι αυτονόητο ότι ο αριθμός αυτός δεν θα πρέπει να συμπεριληφθεί στον υπολογισμό του μέσου όρου. Στο διάγραμμα ροής που ακολουθεί, θεωρούμε ότι ο αριθμός-κλειδί είναι το 99999. ΑΡΧΗ Σ 0 Ν 0 Διάβασε την επόμενη τιμή Τ Τ = 99999 ; ΝΑΙ ΟΧΙ Σ Σ + Τ Ν Ν + 1 Μ Σ / Ν Εκτύπωσε τον μέσο όρο Μ ΤΕΛΟΣ - 9 -

Παράδειγμα 5: Διάγραμμα ροής για την επίλυση της τριωνυμικής εξίσωσης - 10 -

2. ΑΝΑΠΤΥΞΗ ΠΡΟΓΡΑΜΜΑΤΟΣ 2.1 Γλώσσα μηχανής (binary code) Όπως είναι γνωστό κάθε ηλεκτρονικός υπολογιστής είναι χτισμένος γύρω από ένα κεντρικό τσιπ, την Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ ή CPU). Η ΚΜΕ είναι το μέρος εκείνο στο οποίο εκτελούνται όλες οι εντολές των προγραμμάτων που τρέχουν στον ηλεκτρονικού υπολογιστή κάθε στιγμή. Κάθε τύπος ΚΜΕ έχει το δικό της ρεπερτόριο εντολών τις οποίες αναγνωρίζει και εκτελεί. Το σύνολο των εντολών αυτών διατυπώνονται σε δυαδική μορφή (πχ 00101011) ή δεκαεξαδική μορφή (πχ F7) και μαζί με τους πολύ αυστηρούς κανόνες σύνταξής τους αποτελούν την λεγόμενη γλώσσα μηχανής (machine language) του συγκεκριμένου ηλεκτρονικού υπολογιστή. Ένα πρόγραμμα (κώδικας) διατυπωμένο σε γλώσσα μηχανής ονομάζεται δυαδικός κώδικας (binary code). Κάθε ηλεκτρονικός υπολογιστής μπορεί να αναγνωρίσει και κατά συνέπεια να εκτελέσει μόνο προγράμματα που είναι διατυπωμένα στη δική του γλώσσα μηχανής. Από την άλλη μεριά είναι πάρα πολύ επίπονο (στις περισσότερες περιπτώσεις πρακτικά αδύνατο) για έναν άνθρωπο να διατυπώσει έναν αλγόριθμο σε γλώσσα μηχανής. Στο επόμενο παράδειγμα βλέπετε ένα πρόγραμμα διατυπωμένο σε γλώσσα μηχανής, σε δυαδική και δεκαεξαδική μορφή Δυαδική μορφή διατύπωσης 10010101 00101110 00101010 11001010 01001010 11101010 10010101 10100011 10001000 00101010 00101000 00101001 00101001 11010110 11110110 Δεκαεξαδική μορφή διατύπωσης 89 D9 B8 01 00 83 F9 00 74 05 F7 E1 49 EB F6 2.2 Συμβολικές γλώσσες ή γλώσσες χαμηλού επιπέδου (Assembly Languages) Αποτελούν το επόμενο βήμα εξέλιξης μετά την γλώσσα μηχανής. Από τα πρώτα χρόνια άρχισαν να γίνονται προσπάθειες για τη δημιουργία μιας συμβολικής γλώσσας, η οποία ενώ θα έχει έννοια για τον άνθρωπο θα μετατρέπεται εσωτερικά από τους υπολογιστές στις αντίστοιχες ακολουθίες από 0 και 1. Για παράδειγμα η λέξη ADD (πρόσθεσε) ακολουθούμενη από δυο αριθμούς, είναι κατανοητή από τον άνθρωπο και απομνημονεύεται σχετικά εύκολα. Η εντολή αυτή θα μεταφραστεί από τον υπολογιστή σε μία ακολουθία δυαδικών ψηφίων και στη συνέχεια μπορεί να εκτελεστεί. Το έργο της μετάφρασης το αναλαμβάνει ένα ειδικό πρόγραμμα, ο συμβολομεταφραστής (assembler). Στο επόμενο παράδειγμα βλέπετε ένα πρόγραμμα διατυπωμένο σε συμβολική γλώσσα ; Παραγοντικό του BX στο AX MOV CX, BX ; Μετρητής στο CX MOV AX, 1 ; Αρχική τιμή 1 LOOP: CMP CX, 0 ; Τέλος; JZ DONE ; Ναι, έξοδος MUL CX ; Όχι, πολλαπλασίασε ΑΧ με CX DEC CX ; Επόμενη τιμή του CX - 11 -

JMP LOOP DONE: ; Πίσω στο βρόχο 2.3 Γλώσσες προγραμματισμού υψηλού επιπέδου Οι γλώσσες προγραµµατισµού υψηλού επιπέδου (ΓΠΥΕ), είναι τεχνητές γλώσσες, που ακολουθούν τις βασικές έννοιες και αρχές της γλωσσολογίας και κατά συνέπεια προσεγγίζουν πολύ περισσότερο τον ανθρώπινο τρόπο σκέψης και διατύπωσης. Παρόλο που η διατύπωση ενός προγράμματος σε μια γλώσσα προγραμματισμού υψηλού επιπέδου προσεγγίζει εν πολλοίς τον ανθρώπινο τρόπο σκέψης, η σύνταξη αυτής της διατύπωσης είναι αρκετά αυστηρή. Η αυστηρότητα αυτή της σύνταξης είναι απαραίτητη διότι εξαλείφει κάθε πιθανή ασάφεια, γεγονός απαραίτητο για την κατοπινή μετάφραση του προγράμματος σε γλώσσα μηχανής. Μιά γλώσσα προγραµµατισµού υψηλού επιπέδου προσδιορίζεται από τα επόμενα τέσσερα στοιχεία: Αλφάβητο Λεξιλόγιο Συντακτικό (syntax) Σημασιολογία (semantics) Αλφάβητο. Το σύνολο των αποδεκτών συμβόλων -δηλαδή των συμβόλων που αναγνωρίζει και κατανοεί - η συγκεκριμμένη γλώσσα. Παράδειγµα: Α Ζ a z + - * / = < >! @ # $ % ^ &? Λεξιλόγιο Το σύνολο των αποδεκτών λέξεων -δηλαδή των λέξεων που αναγνωρίζει και κατανοεί - η συγκεκριμμένη γλώσσα. Οι περισσότερες από αυτές τις λέξεις είναι συνήθως Αγγλικά ρήματα στην προστακτική τους (εντολές της γλώσσας). Παράδειγµα: GOTO, IF, #include, Read, Write, PRINT, Set Συντακτικό (syntax) Το σύνολο των συντακτικών κανόνων που διέπουν την σύνταξη κειμένων (προγραμμάτων) στην συγκεκριμμένη γλώσσα. Οι κανόνες αυτοί αφορούν την ορθή σύνταξη των φράσεων και την φυσική διάταξη των συμβόλων της γλώσσας. Παράδειγμα: var <όνομα μεταβλητής> as <τύπος δεδομένων> ; if <συνθήκη> then < έκφραση 1> else < έκφραση 2> Σημασιολογία (semantics) Προσδιορίζει την έννοια των εκφράσεων δηλαδή το τι ακριβώς σημαίνει η κάθε έφραση όταν το πρόγραμμα εκτελεστεί σε κάποιον υπολογιστή. Παράδειγμα: Η έκφραση var N as integer ; σημαίνει οτι κατά την εκτέλεση του προγράμματος θα πρέπει να διατεθεί ένα τμήμα της κεντρικής μνήμης του υπολογιστή για την αποθήκευση μιας ακέραιας μεταβλητής που θα ονομάζεται Ν. Με την πάροδο του χρόνου έχουν αναπτυχθεί (και εξακολουθούν να αναπτύσσονται) χιλιάδες ενώ αυτή τη στιγµή χρησιµοποιούνται εκατοντάδες γλώσσες προγραμματισμού - 12 -

υψηλού επιπέδου. Οι περισσότερες από αυτές είναι γενικής χρήσης, αν και κατά κανόνα η καθεμιά τους παρουσιάζει εξειδίκευση σε συγκεκριμένες κατηγορίες προβλημάτων. Δεν υπάρχει κάποια γλώσσα που να είναι αντικειµενικά καλύτερη από τις υπόλοιπες. Μερικές από τις πιο γνωστές γλώσσες προγραμματισμού υψηλού επιπέδου είναι οι παρακάτω: FORTRAN Pascal (FORmula TRANsformation) Η πρώτη ιστορικά γλώσσα προγραμματισμού υψηλού επιπέδου [1957]. Κατάλληλη για προβλήματα που έχουν πολλούς επιστημονικούς (αριθμητικούς) υπολογισμούς. (Προς τιμήν του Blaise Pascal). Γλώσσα γενικής χρήσης, που υποστηρίζει τον δομημένο προγραμματισμό (structured programming). C, C ++ και C # Σχετικά χαμηλού επιπέδου γλώσσα, μας δίνει την δυνατότητα να ελέγξουμε πολλές από τις παραμέτρους του συγκεκριμένου υπολογιστή. Αν και θεωρείται γλώσσα γενικής χρήσης, δημιουργήθηκε και εξακολουθεί να χρησιμοποιείται ευρέως για την συγγραφή λειτουργικών συστημάτων και άλλων παρόμοιων προγραμμάτων. BASIC (Beginner s All-purpose Symbolic Instruction Code). Γλώσσα πολύ απλή - σχεδόν απλοϊκή στις πρώτες εκδόσεις της. Δημιουργήθηκε με σκοπό να διευκολύνει την πρώτη επαφή και την διδασκαλία προγραμματισμού σε αρχάριους. Με τον καιρό έχει εξελιχθεί σε ένα αρκετά αξιόλογο εργαλείο ανάπτυξης εφαρμογών σε γραφικά περιβάλλοντα (Visual Basic). COBOL LISP (Common Business Oriented Language) Γλώσσα που δημιουργήθηκε ειδικά για ανάπτυξη εμπορικών εφαρμογών. Αρκετά δύσχρηστη εξ αιτίας της υπερβολικής σχολαστικότητάς της. (LISt Processing) Γλώσσα επεξεργασίας καταλόγων (Λιστών). Τόσο αυτή, όσο και η Prolog παρουσιάζουν διαφορετική φιλοσοφία προγραμματισμού σε σχέση με τις υπόλοιπες γλώσσες. PROLOG (PROgramming <using> LOGic). Γλώσσα που υποστηρίζει λογικό προγραμματισμό (διαφορετική φιλοσοφία διατύπωσης και επίλυσης των προβλημάτων). HTML Java, J ++ (HyperText Markup Language). Η κατ εξοχήν χρησιμοποιούμενη γλώσσα για την δημιουργία ιστοσελίδων στο διαδίκτυο. Γλώσσα που δημιουργήθηκε ειδικά για συγγραφή απλών προγραμμάτων τα οποία μεταδίδονται μαζί (πάνω) στις σελίδες του διαδίκτυου. Τα προγράμματα που είναι γραμμένα σε Java, έχουν το πλεονέκτημα ότι μπορούν να τρέξουν απ ευθείας σε οποιοδήποτε υπολογιστή που υποστηρίζει αυτή τη γλώσσα, χωρίς προηγηθεί μετάφρασή τους στην γλώσσα μηχανής τους. Mερικές ακόμα σχετικά γνωστές γλώσσες προγραμματισμού υψηλού επιπέδου είναι οι Ada, Algol, Snobol, και Occam. - 13 -

Ο επόμενος πίνακας παρουσιάζει τον αλγόριθμο για την εύρεση του Ν! (διαβάζεται Ν παραγοντικό) σε εξι από τις πιο συνηθισμένες γλώσσες προγραμματισμού FORTRAN C Return factorial of N C FUNCTION IFACTORIAL(N) INTEGER N INTEGER IFACTORIAL INTEGER IRESULT, I C /* Παραγοντικό */ int factorial(int n) { int result; int count; IRESULT = 1 DO I = 1, N IRESULT = IRESULT * I END DO IFACTORIAL = IRESULT END } count = n; result = 1; while (count > 0) { result = result * count; count = count - 1; } return (result); Visual Basic ' Παραγοντικό του Ν FUNCTION Factorial(N AS INTEGER) AS INTEGER DIM Count AS INTEGER DIM Result AS INTEGER Count = N Result = 1 WHILE Count > 0 Result = Result * Count Count = Count - 1 WEND END FUNCTION Java // Υπολογισμός ν παραγοντικού public int παραγοντικό(int ν) { int αποτέλεσμα; int μετρητής; } μετρητής = ν; αποτέλεσμα = 1; while (μετρητής > 0) { αποτέλεσμα = αποτέλεσμα * μετρητής; μετρητής = μετρητής - 1; } return (αποτέλεσμα); Pascal (* Παραγοντικό του Ν *) function factorial(n : Integer) : Integer; var Count, Result : Integer; begin Count := N; Result := 1; While Count > 0 Do begin Result := Result * Count; Count := Count - 1 end; Factorial := Result end (* Factorial *); Prolog factorial(0, 1). % To N_Factorial είναι ισοδύναμο με Ν! factorial(n, N_Factorial) :- N > 0, M is N - 1, factorial(m, M_Factorial), N_Factorial is M_Factorial * N. - 14 -

2.4 Μεταφραστές (compilers) Ένα πρόγραμμα γραμμένο σε μια γλώσσα προγραμματισμού υψηλού επιπέδου ονομάζεται πηγαιο πρόγραμμα (source program) ή πηγαίος κώδικας (souce code). H φυσική μορφή ενός τέτοιου προγράμματος είναι κείμενο. Δείτε για παράδειγμα ένα απλό πρόγραμμα γραμμένο σε Pascal. program MYFIRST (output); begin writeln('hello. How are you?') end. Για να γράψουμε λοιπόν ένα πρόγραμμα σε Pascal (ή οποιαδήποτε άλλη γλώσσα προγραμματισμού) χρειαζόμαστε απλώς έναν επεξεργαστή κειμένου όπως το Σημειωματάριο (Notebook) των Windows. Όμως για να εκτελεστεί αυτό το πρόγραμμα πρέπει προηγουμένως κάποιος να μεταφράσει τις εντολές του σε αντίστοιχες εντολές χαμηλού επιπέδου που να καταννοούνται - και επομένως να μπορούν να εκτελεστουν - από την κεντρική μονάδα επεξεργασίας του συγκεκριμμένου υπολογιστή. Η μετάφραση ενός προγράμματος από μια γλώσσα προγραμματισμού υψηλού επιπέδου σε γλώσσα μιας συγκεκριμένης μηχανής γίνεται αυτόματα από ειδικά προγράμματα τα οποία ονομάζονται μεταφραστές (compilers). Ένας compiler (μιας συγκεκριμένης γλώσσας προγραμματισμού σε έναν συγκεκριμένο τύπο ηλεκτρονικού υπολογιστή) είναι ένα ειδικό πρόγραμμα το οποίο μετατρέπει κάθε κείμενο διατυπωμένο στην παραπάνω γλώσσα προγραμματισμού (πηγαίος κώδικας source code), σε αντίστοιχο δυαδικό κώδικα της γλώσσας μηχανής αυτού του ηλεκτρονικού υπολογιστή (εκτελέσιμος κώδικας machine code). Πηγαίος κώδικας γραμμένος σε Pascal (Αρχείο.PAS) Compiler της Pascal για PC Αντίστοιχος εκτελέσιμος δυαδικός κωδικας για την γλώσσα μηχανής του PC (Αρχείο.ΕΧΕ) Κατά την διάρκεια αυτής της μετατροπής ο compiler ελέγχει ταυτόχρονα αν η διατύπωση του προγράμματος ειναι συντακτικά σωστή (εντοπίζει τα συντακτικά λάθη). Αν δεν υπάρχουν συντακτικά λάθη, τοτε ο compiler προχωρά στην δημιουργία του δυαδικού κώδικα. Σε διαφορετική περίπτωση ο compiler μας επιστρέφει μια λίστα με συντακτικά λάθη τα οποία θα πρέπει να διορθωθούν. Παρόλο που ο compiler ανιχνεύει όλα τα συντακτικά λάθη ενός προγράμματος, δεν μπορεί να ανιχνεύσει τα λογικά λάθη που ενδεχομένως υπάρχουν. Έτσι υπάρχει πάντα η πιθανότητα σε ένα πρόγραμμα να εκτελείται μεν (πράγμα που σημαίνει ότι δεν έχει συντακτκά λάθη), αλλα να μην παράγει πάντα σωστά αποτελέσματα (πράγμα που σημάινει ότι έχει ένα ή περισσότερα λογικά λάθη). Κάθε τύπος υπολογιστή που χρησιμοποιείται για την ανάπτυξη προγραμμάτων πρέπει να διαθέτει έναν τουλάχιστο compiler για κάθε γλώσσα προγραμματισμού που υποστηρίζει. Με αυτόν τον τρόπο προκύπτει η δυνατότητα να διατυπώνουμε τα προγράμματά μας σε μια συγκεκριμένη γλώσσα προγραμματισμού υψηλού επιπέδου και να μπορούμε να τα - 15 -

εκτελέσουμε σε οποιονδήποτε ηλεκτρονικό υπολογιστή ο οποίος διαθέτει compiler της συγκεκριμένης γλώσσας. Έτσι, για παράδειγμα θα μπορούσαμε να χρησιμοποιήσουμε την γλώσσα προγραμματισμού Pascal για να αναπτύξουμε ένα συγκεκριμένο πρόγραμμα σε έναν προσωπικό υπολογιστή τύπου PC και στη συνέχεια να μεταφέρουμε το ίδιο πρόγραμμα σε έναν ηλεκτρονικό υπολογιστή τύπου Macintosh ή SUN. Αν οι υπολογιστές αυτοί διαθέτουν compiler της Pascal τότε είμαστε βέβαιοι ότι το πρόγραμμά μας θα τρέξει εξ ίσου καλά (μερικές φορές έπειτα από μικρές μετατροπές) και σ αυτούς τους ηλεκτρονικούς υπολογιστές. Compiler της Pascal για PC Αντίστοιχος εκτελέσιμος δυαδικός κωδικας για την γλώσσα μηχανής του PC Πηγαίος κώδικας γραμμένος σε Pascal Compiler της Pascal για Macintosh Αντίστοιχος εκτελέσιμος δυαδικός κωδικας για την γλώσσα μηχανής του Macintosh Compiler της Pascal για SUN Αντίστοιχος εκτελέσιμος δυαδικός κωδικας για την γλώσσα μηχανής του SUN 3.5 Εσωτερική Δομή του Προγράμματος Κάθε πρόγραμμα διατυπωμένο σε μια γλώσσα προγραμματισμού υψηλού επιπέδου αποτελείται από δύο διακριτά τμήματα. Το πρώτο τμήμα ονομάζεται τμήμα δηλώσεων και περιέχει τις δηλώσεις για τις σταθερές, τους τύπους δεδομένων και τις μεταβλητές που χρησιμοποιούνται μέσα στο πρόγραμμα. Το δεύτερο τμήμα ονομάζεται τμήμα εντολών και περιέχει τις εκτελέσιμες εντολές που υλοποιούν τον αλγόριθμο. Πρόγραμμα: Δηλώσεις ( σταθερές / τύποι δεδομένων / μεταβλητές) Εκτελέσιμες Εντολές Α) Δηλώσεις - 16 -

Σταθερά: Όνομα που καθορίζεται από τον χρήστη για την υποκατάσταση ενός συγκεκριμένου αριθμού (ή άλλου είδους δεδομένων) σε ένα πρόγραμμα. Πx Pi = 3.14159. Οι σταθερές ορίζονται συνήθως πρώτες στο τμήμα δηλώσεων του προγράμματος Τύπος Δεδομένων: σύνολο ομοειδών δεδομένων (δηλαδή δεδομένων που έχουν ορισμένα κοινά χαρακτηριστικά) μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Ορισμένοι βασικοί τύποι δεδομένων όπως είναι οι ακέραιοι αριθμοί (Integer), οι πραγματικοί αριθμοί (Real) υποστηρίζονται εγγενώς από όλες τις γλώσσες προγραμματισμού οπότε δεν χρειάζεται να οριστούν. Οι τύποι δεδομένων που ορίζονται στο τμήμα δηλώσεων του προγράμματος είναι συνήθως σύνθετοι τύποι που προκύπτουν από συνδυασμό απλούστερων τύπων δεδομένων. Μεταβλητή: χώρος προσωρινής αποθήκευσης δεδομένων κατά την διάρκεια εκτέλεσης ενός προγράμματος. Κάθε μεταβλητή χαρακτηρίζεται από - το όνομα της επιλέγεται από τον προγραμματιστή και συνήθως φανερώνει το περιεχόμενο της πχ Name, Address, Age, Kostos, FPA, A, N - τον τύπο της δηλαδή το είδος των τιμών που μπορεί να αποθηκεύσει πχ Integer (Ακέραιος αριθμός), Real (Πραγματικός / Δεκαδικός αριθμός), String (κείμενο), ή άλλος σύνθετος τύπος δεδομένων που έχει οριστεί νωρίτερα. Οι μεταβλητές δημιουργούνται κατά την έναρξη και καταστρέφονται με τον τερματισμό της εκτέλεσης του προγράμματος. Ανάλογα με τον τύπο της κάθε μεταβλητής το λειτουργικό σύστημα καθορίζει μια περιοχή από συνεχόμενες θέσεις (κελιά) στην κεντρική μνήμη του Η/Υ. Επειδή η περιοχή της κεντρικής μνήμης που διατίθεται από το λειτουργικό σύστημα για την αποθήκευση μιας μεταβλητής ίσως περιέχει σκουπίδια δηλαδή τιμές από παλαιότερα προγράμματα, κάθε μεταβλητή πρέπει να αρχικοποιείται (καθαρίζεται) πριν χρησιμοποιηθεί. Εκχώρηση τιμής σε μεταβλητή: Διαδικασία κατά την οποία το περιεχόμενο μιας μεταβλητής αντικαθίσταται από μια τιμή η οποία είτε είναι αυτούσια είτε προκύπτει από την επαλήθευση μιας αριθμητικής (ή άλλου είδους) έκφρασης. Τα πιο συνηθισμένα σύμβολα εκχώρησης που χρησιμοποιούν οι διάφορες γλώσσες προγραμματισμού είναι τα ακόλουθα: ( =, :=, ). Δείτε τα επόμενα παραδείγματα εκχωρήσεων <μεταβλητή> <τιμή> Α 5 ή <μεταβλητή> <έκφραση> Κ 7 + 3 ή Age = 2004 Year_Of_Birth Αρχικοποίηση μεταβλητής Εκχώρηση μιας αρχικής τιμής στη μεταβλητή πριν από την χρήση της στο πρόγραμμα Πχ Α 0. Όλες οι μεταβλητές πρέπει να αρχικοποιούνται πριν από την χρήση τους. Οι περισσότερες γλώσσες προγραμματισμού αρχικοποιούν αυτόματα τις μεταβλητές την στιγμή που δηλώνονται. Β) Εκτελέσιμες εντολές Διακρίνονται σε απλές και σύνθετες. Οι απλές εντολές κωδικοποιούνται συνήθως σε μια γραμμή του προγράμματος, εκτελούνται διαδοχικά και φέρουν εις πέρας απλές λειτουργίες όπως εκτέλεση απλών πράξεων και μετακίνηση δεδομένων. κωδικοποιούνται σε μια γραμμή και εκτελούνται διαδοχικά (η μία κατόπιν της άλλης) ενώ οι σύνθετες σχηματίζουν δομές και - 17 -

καθορίζουν τμήματα του προγράμματος η εκτέλεση των οποίων επηρεάζεται από τα εκάστοτε δεδομένα. Εντολές Εισόδου / Εξόδου (READ, WRITE, PRINT, GET, PUT) Χρησιμοποιούνται για την τροφοδοσία του προγράμματος με εξωτερικά δεδομένα και την μεταφορά των παραγομένων αποτελεσμάτων έξω από το πρόγραμμα (σε οθόνη, εκτυπωτή, συσκευές αποθήκευσης κλπ) Εντολή εκχώρησης ( ) Βασική εντολή που χρησιμοποιείται μετά από κάθε είδους πράξη για την αποθήκευση του αποτελέσματος. Οι σύνθετες εντολές αποτελούνται από ομάδες (δομές) απλών εντολών η εκτέλεση των οποίων καθορίζεται από τις τιμές των εκάστοτε δεδομένων. Οι βασικές κατηγορίες σύνθετων εντολών είναι οι εντολές επιλογής (ελέγχου / διακλάδωσης) και οι eντολές επανάληψης (ανακύκλωσης) Εντολές επιλογής (ελέγχου / διακλάδωσης) (IF/THEN, IF/THEN/ELSE, SELECT/ CASE, GOTO) Χρησιμοποιούνται σε κομβικά σημεία του προγράμματος για την επιλογή μιας ανάμεσα από πολλαπλές πορείες εκτέλεσης. Η επιλογή βασίζεται στην εξέταση για την ικανοποίησης ή μη μιας λογικής έκφρασης (συνθήκη επιλογής) Εντολές επανάληψης ανακύκλωσης (REPEAT/UNTIL, WHILE/DO, FOR). Δημιουργούν κύκλους (loops) επαναληπτικής εκτέλεσης εντολών. Η έξοδος από την ανακύκλωση πραγματοποιείται με την εξέταση για την ικανοποίησης ή μη μιας λογικής έκφρασης (συνθήκη εξόδου) Για τη σύνταξη των εντολών επιλογής και επανάληψης χρησιμοποιούνται λογικές εκφράσεις (λέγονται ακόμη και λογικές παραστάσεις ή λογικές συνθήκες). Λογική έκφραση ονομάζεται κάθε παράσταση η οποία όταν επαληθεύεται μας δίνει ως αποτέλεσμα μια λογική τιμή δηλαδή ΑΛΗΘΗΣ(True) ή ΨΕΥΔΗΣ(False). Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές, μεταβλητές, αριθμητικές παραστάσεις, συγκριτικοί τελεστές ( <, >, =, <=, >=, <> ) και λογικοί τελεστές (AND, OR, NOT), καθώς και παρενθέσεις. Δείτε τα επόμενα παραδείγματα λογικών εκφράσεων Χ <5 Α = 3 OR Β >=8 Ζ > 0 AND Z <> 12 Κατά την επαλήθευση σύνθετων λογικών εκφράσεων, οι συγκριτικοί τελεστές έχουν υψηλότερη προτεραιότητα από τους λογικούς τελεστές 3.6 Εντολές επιλογής (ελέγχου / διακλάδωσης) Μια από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή. Σχεδόν σε όλα τα προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι ενέργειες που θα ακολουθήσουν. Οι εντολές επιλογής χρησιμοποιούνται σε κομβικά σημεία του προγράμματος για την επιλογή μιας ανάμεσα σε δυο (ή ορισμένες φορές περισσότερες) πορείες εκτέλεσης. Η επιλογή βασίζεται στην εξέταση για την ικανοποίηση ή μη μιας συνθήκης (συνθήκη επιλογής). Οι πιο συνηθισμένες εντολές επιλογής είναι οι ακόλουθες IF/THEN (ΑΝ/ΤΟΤΕ) Συναντάται σε δυο μορφές - 18 -

α) IF <συνθήκη> THEN <εντολή> β) IF <συνθήκη> THEN <εντολή 1> <εντολή 2> <εντολή k> END IF Κατά την εκτέλεση της εντολής IF/THEN ελέγχεται η τιμή της συνθήκης επιλογής. Αν η συνθήκης επιλογής είναι αληθής τότε εκτελούνται οι εντολές που ακολουθούν. Στην αντίθετη περίπτωση η εκτέλεση του προγράμματος συνεχίζεται μετά το END IF IF/THEN/ELSE (ΑΝ/ΤΟΤΕ/ΔΙΑΦΟΡΕΤΙΚΑ) Συναντάται σε δυο μορφές α) IF <συνθήκη> THEN <εντολή2> ΕLSE <εντολή2> β) IF <συνθήκη> THEN <εντολή a1> <εντολή a2> <εντολή ak> ΕLSE <εντολή b1> <εντολή b2> <εντολή bk> END IF Τρόπος λειτουργίας: Κατά την εκτέλεση της εντολής IF/THEN/ELSE ελέγχεται η τιμή της συνθήκης επιλογής. Αν η συνθήκης επιλογής είναι αληθής τότε εκτελείται η ομάδα εντολών που ακολουθούν το THEN. Διαφορετικά εκτελείται η ομάδα εντολών που ακολουθούν το ΕLSE. Και στις δύο περιπτώσεις η εκτέλεση του προγράμματος συνεχίζεται μετά το END IF Πολλαπλό IF/THEN/ELSE (ΑΝ/ΤΟΤΕ/ΔΙΑΦΟΡΕΤΙΚΑ) Συναντάται σε δυο μορφές α) IF <συνθήκη1> THEN <εντολή 11> <εντολή 12> <εντολή 1k> ΕLSE IF <συνθήκη2> THEN <εντολή 21> <εντολή 22> <εντολή 2k>. ΕLSE IF <συνθήκη N> THEN <εντολή N1> <εντολή N2> β) IF <συνθήκη1> THEN <εντολή 11> <εντολή 12> <εντολή 1k>.. ΕLSE IF <συνθήκη N> THEN <εντολή N1> <εντολή N2> <εντολή Nk> ΕLSE <εντολή Μ1> <εντολή Μ2> - 19 -

<εντολή Nk> END IF <εντολή Μk> END IF Τρόπος λειτουργίας: Κατά την εκτέλεση ενός πολλαπλού IF/THEN/ELSE της μορφής (α) ελέγχεται η τιμή κάθε συνθήκης επιλογής και εκτελείται η ομάδα εντολών που ακολουθούν την πρώτη συνθήκη επιλογής που θα βρεθεί αληθής.μετά τη εκτέλεση ενός μπλοκ εντολών παύουν να εξετάζονται οι επόμενες συνθήκες και η εκτέλεση του προγράμματος συνεχίζεται μετά το END IF. Αν καμία από τις συνθήκες επιλογής δεν βρεθεί αληθής τότε δεν εκτελείται καμία ομάδα εντολών. Στην εναλλακτική μορφή (β) αν καμία από τις συνθήκες επιλογής δεν βρεθεί αληθής τότε εκτελείται η ομάδα εντολών που ακολουθεί το τελευταίο ΕLSE SELECT CASE (ΕΠΙΛΟΓΗ ΠΕΡΙΠΤΩΣΕΩΝ) Συναντάται σε δυο μορφές a) SELECT CASE <μεταβλητή> CASE <περιοχή τιμών 1> <εντολή 11> <εντολή 1k> CASE <περιοχή τιμών 2> <εντολή 21> <εντολή 2k>. CASE <περιοχή τιμών N> <εντολή N1> <εντολή Nk> END SELECT b) SELECT CASE <μεταβλητή> CASE <περιοχή τιμών 1> <εντολή 11> <εντολή 1k>. CASE <περιοχή τιμών N> <εντολή N1> <εντολή Nk> CASE ELSE <εντολή Μ1> <εντολή Μk> END SELECT Τρόπος λειτουργίας: Κατά την εκτέλεση της εντολής SELECT CASE εξετάζεται η τιμή της <μεταβλητής> για να διαπιστωθεί αν ανήκει σε κάποια από τις οριζόμενες περιοχές τιμών που ακολουθούν. Μόλις βρεθεί η πρώτη περιοχή τιμών που να περιέχει την τιμή της μεταβλητής, εκτελείται η ομάδα εντολών που ακολουθεί. Μετά τη εύρεση της περιοχής τιμών και την εκτέλεση της αντίστοιχης ομάδας εντολών παύουν να εξετάζονται οι επόμενες - 20 -

περιοχές τιμών και η εκτέλεση του προγράμματος συνεχίζεται μετά το END SELECT. Αν διαπιστωθεί ότι η τιμή της μεταβλητής δεν ανήκει σε καμία από τις περιοχές τιμών τότε στην εναλλακτική μορφή (α) δεν εκτελείται καμία εντολή, ενώ στην εναλλακτική μορφή (β) εκτελείται η ομάδα των εντολών που ακολουθεί μετά το CASE ΕLSE GOTO (ΜΕΤΑΒΑΣΗ ΣΕ). Έχει την μορφή GOTO <αριθμός γραμμής> και όταν εκτελεστεί καθορίζει ως επόμενη εκτελέσιμη εντολή την εντολή που βρίσκεται στην γραμμή <αριθμός γραμμής>. Στις περισσότερες γλώσσες προγραμματισμού η εντολή GOTO συνδυάζεται με την εντολή IF/THEN. Επίσης αντί για αριθμό γραμμής, η εντολή μπορεί να περιέχει ένα κείμενο που ονομάζεται ετικέτα (label). Παράδειγμα: IF Α > 8 THEN GOTO Top Εδώ η λέξη Top είναι μια ετικέτα η οποία υπάρχει μπροστά από κάποια άλλη εντολή σε διαφορετικό σημείο του προγράμματος. Η υπερβολική χρήση της εντολής GOTO θα πρέπει να αποφεύγεται διότι δημιουργεί δυσανάγνωστα προγράμματα. 3.7 Εντολές Επανάληψης (ανακύκλωσης) Μια άλλη εξ ίσου σημαντική δομή που εμφανίζεται σε ένα πρόγραμμα είναι ο λεγόμενος βρόγχος ανακύκλωσης (loop). Σχεδόν σε όλα τα προβλήματα υπάρχουν ομάδες εντολών οι οποίες θα πρέπει να εκτελεστούν περισσότερες από μια φορές. Οι εντολές αυτές περικλείονται σε μια από τις δομές επανάληψης REPEAT/UNTIL, WHILE/DO και FOR/ΝΕΧΤ Εντολή REPEAT/UNTIL. Στα ελληνικά θα μπορούσε να αποδοθεί : Επαναλάμβανε τις εντολές / μέχρις ότου ικανοποιηθεί η συνθήκη εξόδου. Έχει την μορφή REPEAT <εντολή 1> <εντολή 2> <εντολή k> UNTIL <συνθήκη εξόδου> Τρόπος λειτουργίας: Η ομάδα εντολών που περικλείεται ανάμεσα στο REPEAT και το UNTIL εκτελείται μια φορά και στη συνέχεια ελέγχεται η συνθήκη εξόδου. Αν η συνθήκη βρεθεί ψευδής τότε ακολουθεί νέα εκτέλεση των εντολών και νέος έλεγχος της συνθήκης. Η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου η συνθήκη βρεθεί κατά τον έλεγχο αληθής, οπότε διακόπτεται η ανακύκλωση και η εκτέλεση του προγράμματος συνεχίζεται από την εντολή που βρίσκεται μετά το UNTIL. Είναι προφανές ότι η συνθήκη εξόδου θα πρέπει να επηρεάζεται από τουλάχιστον μια από τις εντολές που εκτελούνται στην ανακύκλωση, διαφορετικά η ανακύκλωση ενδέχεται να συνεχίζεται έπ άπειρον (infinite loop). Δείτε τα επόμενα παραδείγματα A=0 REPEAT A=A+1 PRINT A UNTIL (A >= 10) REPEAT READ TIMH PRINT TIMH UNTIL (TIMH = 45) Εντολή WHILE/DO Στα ελληνικά θα μπορούσε να αποδοθεί : Όσο ικανοποιείται η συνθήκη επανάληψης επαναλάμβανε της εντολές. Έχει την μορφή - 21 -

WHILE <συνθήκη επανάληψης> DO <εντολή 1> <εντολή 2> <εντολή k> END WHILE Τρόπος λειτουργίας: Αρχικά ελέγχεται η συνθήκη επανάληψης. Αν η συνθήκη βρεθεί αληθής τότε εκτελείται η ομάδα εντολών που περικλείεται ανάμεσα στο WHILE και το END WHILE και η συνθήκη ελέγχεται ξανά. Η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου η συνθήκη επανάληψης βρεθεί κατά τον έλεγχο ψευδής, οπότε διακόπτεται η ανακύκλωση και η εκτέλεση του προγράμματος συνεχίζεται από την εντολή που βρίσκεται μετά το END WHILE. Είναι προφανές ότι η συνθήκη εξόδου θα πρέπει να επηρεάζεται από τουλάχιστον μια από της εντολές που εκτελούνται στην ανακύκλωση, διαφορετικά η ανακύκλωση ενδέχεται να συνεχίζεται επ άπειρον (infinite loop). Δείτε τα επόμενα παραδείγματα K=17 WHILE(K >= 10) K=K-3 PRINT K UNTIL A=5 B=100 WHILE(A<12 OR B>17) A= A+3 B= B-A PRINT A+B UNTIL Η βασική διαφορά της εντολής WHILE/DO από την REPEAT/UNTIL είναι ότι ο έλεγχος της συνθήκης πραγματοποιείται στην αρχή αντί για το τέλος. Πρακτικά αυτό σημαίνει ότι η ομάδα εντολών μέσα σε ένα REPEAT/UNTIL ένα εκτελείται υποχρεωτικά (εγγυημένα) τουλάχιστον μια φορά. Εντολή FOR/NEXT Η εντολή αυτή εμφανίζεται με δυο εναλλακτικές μορφές α) FOR <δείκτης> = <αρχική τιμή> TO <τελική τιμή> <εντολή 1> <εντολή 2> <εντολή k> NEXT β) FOR <δείκτης> = <αρχική τιμή> TO <τελική τιμή> STEP <βήμα> <εντολή 1> <εντολή 2> <εντολή k> NEXT Τρόπος λειτουργίας: Αρχικά η μεταβλητή-δείκτης λαμβάνει την <αρχική τιμή> και πραγματοποιείται έλεγχος κατά πόσον η αρχική τιμή είναι μικρότερη της τελικής. Εφόσον αυτό συμβαίνει, εκτελούνται μια φορά οι εντολές ανάμεσα στο FOR και το NEXT και η μεταβλητή-δείκτης αυξάνεται κατά μια μονάδα (ή κατά τον αρμό που προσδιορίζεται στο - 22 -

<βήμα> αν πρόκειται για την μορφή (β). Η ανακύκλωση τερματίζεται όταν η τιμή μεταβλητήςδείκτη ξεπεράσει την <τελική τιμή> To <βήμα> μπορεί να είναι θετικό ή αρνητικό. Στην δεύτερη περίπτωση η <τελική τιμή> θα πρέπει να καθοριστεί μικρότερη από την <αρχική τιμή>. Δείτε τα επόμενα παραδείγματα FOR I = 5 TO 12 READ A READ B PRINT A+B NEXT FOR I = 100 TO 1 STEP -4 READ A READ B PRINT A-B NEXT Συνδιασμός σύνθετων και απλών εντολών Πολλές φορες για να αποδοθεί μια περίπλοκη λογική ενός αλγορίθμου χρειάζεται να συνδιαστούν μεταξύ τους απλές και σύνθετες εντολές όλων των ειδών. Έτσι δεν είναι ασυννήθσιτο για ένα πρόγραμμα να περιέχει δομές όπως δομές ελέγχου μέσα σε ανακυκλώσεις, ανακυκλώσεις μέσα σε δομές ελέγχου ή ακόμα και ανακυκλώσεις μέσα σε ανακυκλώσεις. - ΤΕΛΟΣ ΕΝΟΤΗΤΑΣ - - 23 -