ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Δοκιμή Έλεγχος Αλγορίθμου Για να ελέγξουμε έναν αλγόριθμο: καταγράφουμε εικονικά δεδομένα σύμφωνα με τις απαιτήσεις του προβλήματος εξάγουμε τα αποτελέσματα σύμφωνα με τα βήματα του αλγορίθμου με χειρογραφικό τρόπο κωδικοποιούμε τον αλγόριθμο σε μια γλώσσα προγραμματισμού εκτελούμε το πρόγραμμα στον υπολογιστή και καταγράφουμε τα αποτελέσματα συγκρίνουμε τα χειρογραφικά και τα αποτελέσματα από την εκτέλεση του προγράμματος Εάν διαπιστώσουμε λάθος (λογικό ή υπολογιστικό) βρίσκουμε το τμήμα του αλγόριθμου που εκτελεί τη λανθασμένη λειτουργία διορθώνουμε τον αλγόριθμο και επαναλαμβάνουμε τη διαδικασία ελέγχου, έως ότου τα αποτελέσματα με τη χρήση υπολογιστή να μη διαφέρουν από τα χειρογραφικά αποτελέσματα 2 1
Πίνακας Τιμών Μεταβλητές Βήμα ΩΕ Δεδομένα ΩΑ ΠΑ ΠΦ ΕΟΑ Μ Βοηθητικές Μεταβλητές ΚΡΑ ΚΑ Φ Ζητούμενα ΠΠ 1 2 3 4 5 ΩΕ = Ώρες Εργασίας ΩΑ = Ωριαία Αποζημίωση ΠΑ = Ποσοστό Ασφάλισης ΠΦ = Ποσοστό Φόρου ΕΟΑ = Ελάχιστο Όριο Αποδοχών Μ = Μισθός ΚΡΑ = Κρατήσεις Αποδοχών ΚΑ = Καθαρές Αποδοχές Φ = Φόρος ΠΠ = Πληρωτέο Ποσό 3 Πρόβλημα Σε ένα αρχαιολογικό μουσείο υπάρχουν 10 αίθουσες με εκθέματα της ελληνιστικής περιόδου καθεμία με το δικό της νούμερο 101, 102, 110. Να γραφτεί ένας αλγόριθμος που να διαβάζει τους ημερήσιους επισκέπτες κάθε αίθουσας και να υπολογίζει το μέσο όρο επισκεπτών του μουσείου. Στη συνέχεια να τυπώνει το νούμερο των αιθουσών που ο ημερήσιος αριθμός επισκεπτών τους ήταν μεγαλύτερος από το μέσο όρο. 4 2
Διάγραμμα Ροής ΑΡΧΗ ι! 101 ΜΟ! ΜΟ / 10 Ε ι ο αριθμός των ημερήσιων επισκεπτών κάθε αίθουσας Το ι παίρνει τιμές 101,, 110 ΜΟ ο μέσος όρος επισκεπτών ι! 101 ΝΑΙ ι > 110 ΟΧΙ Διάβασε Ε ι ΟΧΙ ι > 110 ΝΑΙ ΟΧΙ Ε ι > ΜΟ ΝΑΙ Εκτύπωσε ι ΜΟ! ΜΟ + Ε ι ι! ι + 1 ι! ι + 1 ΤΕΛΟΣ 5 Σχεδιασμός Αλγορίθμων Για το σχεδιασμό των αλγορίθμων χρησιμοποιούνται οι βασικές αλγοριθμικές δομές: Ακολουθία, επιλογή και επανάληψη Η πολυπλοκότητα του αλγόριθμου εξαρτάται από: Πολυπλοκότητα προβλήματος Πολυπλοκότητα Λύσης Η ποιότητα του σχεδιασμού επηρεάζει Υλοποίηση του αλγόριθμου Καταμερισμό Εργασίας στα μέλη της ομάδας υλοποίησης του αλγόριθμου Διορθώσεις / Συντήρηση υλοποιημένου αλγόριθμου (προγράμματος) 6 3
Δομημένη Σχεδίαση Αλγορίθμων Ορισμός Μέθοδος Σχεδιασμού Αλγορίθμων με συστηματικό τρόπο, έτσι ώστε να αποτελείται από ανεξάρτητα τμήματα Στόχος Αλλαγή της διαδικασίας καταγραφής αλγορίθμων, από μια επίπονη λειτουργία δοκιμής λάθους σε μια ποιοτική και ελεγχόμενη λειτουργία Πλεονεκτήματα Διευκόλυνση στην ανάπτυξη αλγορίθμων κατά τμήματα Ευκολία και ταχύτητα στην κωδικοποίηση Καλύτερη ποιότητα προγραμμάτων Ευκολία στις διορθώσεις και τη συντήρηση Τεκμηρίωση που προέρχεται σχεδόν εξ ολοκλήρου από το ίδιο το πρόγραμμα 7 Τεχνικές Δομημένης Σχεδίασης Ιεραρχικός Σχεδιασμός Σχεδίαση σε επίπεδα Ξεκινάμε με μια πολύ απλή δήλωση για το τι κάνει ο αλγόριθμος (ανώτερο επίπεδο) και αναλύουμε πως το κάνει προσθέτοντας λεπτομέρειες σε κατώτερα επίπεδα Κάθε επίπεδο υποστηρίζεται από το αμέσως κατώτερο Στο κατώτατο επίπεδο γίνεται η επεξεργασία των δεδομένων και συγχρόνως δημιουργείται η πληροφορία που απαιτείται από το ανώτερο επίπεδο Τμηματικός Σχεδιασμός Χωρισμός του αλγόριθμου σε ανεξάρτητες λογικές ενότητες Τα μεμονωμένα τμήματα πρέπει να είναι όσο το δυνατόν μικρότερα, ώστε να διευκολύνεται ο καταμερισμός της λογικής ενότητας του αλγόριθμου σε μικρότερες που είναι ευκολότερο να διορθωθούν Κάθε ενότητα κάνει χρήση των βασικών αλγοριθμικών δομών (ακολουθία,επιλογή, επανάληψη) 8 4
Αναπαράσταση HIPO* T100 Επίπεδο -0 T100 T200 T300 Επίπεδο - 1 T210 T220 T310 T320 Επίπεδο -2 * Hierarchical Input Output Prcessing Ιεράρχιση Επεξεργασίας - Εξόδου9 Παράδειγμα 1: Μισθοδοσίας Μισθοδοσία T100 T100 T200 T300 Εισαγωγή Δεδομένων Επεξεργασία Δεδομένων Εκτύπωση Πληρωτέου T210 Αποδοχών T220 Κρατήσεων T230 Πληρωτέου T221 Κρατήσεων Ασφάλισης T222 Φόρου 10 5
Παράδειγμα 2: Επισκέπτες Μουσείου Επισκέπτες Μουσείου T100 T100 T200 T300 Εισαγωγή Δεδομένων Επεξεργασία Δεδομένων Εκτύπωση Αποτελεσμάτων T210 Μέσου Όρου Επισκεπτών Μουσείου T220 Έλεγχος Αρ. Επισκεπτών κάθε αίθουσας 11 Υλοποίηση Αλγορίθμων Πρόγραμμα: Η αναπαράσταση του αλγόριθμου στον υπολογιστή Δομημένος προγραμματισμός: ακολουθεί τις τεχνικές της δομημένη σχεδίασης (ανάπτυξη δομημένου προγράμματος που αποτελείται από ανεξάρτητα τμήματα) Γλώσσα προγραμματισμού: Σύνολο κανόνων, συμβόλων και ειδικών λέξεων που χρησιμοποιούνται για τη δημιουργία ενός προγράμματος Κατηγορίες Γλωσσών Προγραμματισμού Γλώσσα Μηχανής Συμβολική Γλώσσα Γλώσσες υψηλού επιπέδου 12 6
Μεταγλώττιση Ο υπολογιστής μπορεί να εκτελέσει ένα πρόγραμμα τότε μόνον, εάν αυτό έχει γραφτεί σε γλώσσα μηχανής Για τη μετατροπή ενός προγράμματος από μια γλώσσα προγραμματισμού σε γλώσσα μηχανής απαιτείται η χρήση κάποιου μεταφραστικού προγράμματος Το πρόγραμμα προς μετάφραση ονομάζεται πηγαίο (surce) πρόγραμμα Το αποτέλεσμα της μετάφρασης ονομάζεται αντικείμενο (bject) πρόγραμμα 13 Cmpiler vs Interpreter Cmpiler: Μεταγλωττιστής γλώσσας υψηλού επιπέδου κάνει συντακτική και γραμματική ανάλυση του πηγαίου προγράμματος με εκτύπωση των λαθών κάνει την κατάληψη του απαραίτητου χώρου στην κύρια μνήμη για να μπορεί να εκτελεστεί το πρόγραμμα φυλάσσει το αντικείμενο πρόγραμμα στο δίσκο Interpreter: Διερμηνέας, δηλ. μεταγλωττιστής με ταυτόχρονη εκτέλεση του προγράμματος δεν ελέγχει τη σύνταξη ολόκληρου του πηγαίου προγράμματος πριν την εκτέλεση επαναλαμβάνει τη διαδικασία μετάφρασης ελέγχου κάθε φορά που εκτελείται το πηγαίο πρόγραμμα κάνει συντακτικό έλεγχο και μετάφραση σε μια εντολή κάθε φορά που συναντάται, κατά την εκτέλεση του προγράμματος ο έλεγχος και η διόρθωση των λαθών γίνεται ευκολότερα η εκτέλεση του προγράμματος είναι πιο αργή σε σχέση με την εκτέλεση του ίδιου προγράμματος, μεταφρασμένου με cmpiler 14 7
Γραφή - Εκτέλεση Προγραμμάτων Για την συγγραφή του πηγαίου προγράμματος αρκεί ένα απλό πρόγραμμα επεξεργασίας κειμένου, τον εκδότη διορθωτή κειμένων (editr) Στη συνέχεια ο μεταγλωττιστής: ελέγχει το πηγαίο πρόγραμμα για ορθογραφικά ή συντακτικά λάθη εφόσον υπάρχουν λάθη, ο μεταγλωττιστής δίνει τα αντίστοιχα μηνύματα και ενεργοποιείται ο editr για τη διόρθωσή τους η διαδικασία διόρθωσης επαναλαμβάνεται όσες φορές χρειαστεί μέχρι να μηδενιστούν τα λάθη όταν δεν υπάρχουν λάθη, ο μεταγλωττιστής παράγει το αντικείμενο πρόγραμμα Το αντικείμενο πρόγραμμα δεν είναι κατ ανάγκη εκτελέσιμο είναι απαραίτητο το αντικείμενο πρόγραμμα να συνδεθεί με υποπρογράμματα της βιβλιοθήκης της γλώσσας ή του προγραμματιστή το πρόγραμμα που εκτελεί τη σύνδεση αυτή ονομάζεται συνδέτης (linker) 15 Διαδικασία Γραφής Εκτέλεσης προγράμματος EDITOR ΔΙΟΡΘΩΣΕΙΣ ΠΗΓΑΙΟ (SOURCE) ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΦΡΑΣΤΗΣ ΝΑΙ ΛΑΘΗ ΟΧΙ ΠΡΟΓΡΑΜΜΑ ΒΙΒΛΙΟΘΗΚΗΣ ΜΗΝΥΜΑΤΑ ΛΑΘΩΝ ΛΙΣΤΑ ΠΗΓΑΙΟΥ ΑΝΤΙΚΕΙΜΕΝΟ (OBJECT) ΠΡΟΓΡΑΜΜΑ LINK/LOAD ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ 16 8