ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής σκέψης και συνθετικής ικανότητας! Καλλιέργεια της δημιουργικότητας και της φαντασίας στο σχεδιασμό της λύσης ενός προβλήματος και στην αναζήτηση εναλλακτικών λύσεων! Ανάπτυξη ικανοτήτων που απαιτούνται ώστε να μπορείτε να διατυπώνεται με αυστηρότητα και σαφήνεια τη σκέψη σας και να αιτιολογείτε με πληρότητα και ακρίβεια τη μεθοδολογία επίλυσης του προβλήματος που ακολουθείτε,! Ανάπτυξη ικανοτήτων μεθοδολογικού χαρακτήρα,! Απόκτηση βασικών γνώσεων προγραμματισμού για την επίλυση απλών προβλημάτων με τη χρήση ηλεκτρονικών υπολογιστών 1
Περιεχόμενο του Μαθήματος!Το μάθημα περιλαμβάνει τις ακόλουθες ενότητες: " Ανάλυση προβλήματος καθορισμός και κατανόηση του προβλήματος " Σχεδίαση και Ανάπτυξη Αλγορίθμων βασικές έννοιες και μεθοδολογίες σχεδιασμού αλγορίθμων ανάπτυξη και έλεγχος αλγορίθμων " Υλοποίηση σε Προγραμματιστικό Περιβάλλον στοιχεία δομημένου προγραμματισμού υλοποίηση των αλγορίθμων με τη χρήση μιας γλώσσας προγραμματισμού αξιολόγηση, τεκμηρίωση προγράμματος Δομή Μαθήματος!Θεωρία " 2 ώρες κάθε εβδομάδα Τρίτη 15:00 17:00 (Αίθουσα Μητρόπολης)!Εργαστήρια " 1 ώρα κάθε εβδομάδα (3 ομάδες) Παρασκευή 17:00 18:00 (Ομάδα Α) Παρασκευή 18:00 19:00 (Ομάδα Β) Παρασκευή 19:00 20:00 (Ομάδα Γ) " Στα εργαστήρια Η/Υ (κτίριο Ψαρέλλη) 2
Αξιολόγηση Μαθήματος!Ασκήσεις: 25%!Τελική εξέταση: 75%!Ο βαθμός (Β) προκύπτει από τους βαθμούς ασκήσεων (Α), και της τελικής εξέτασης (Τ) ως εξής: Εάν T >= 5 τότε B = 075Τ+025A Αλλιώς B = T Βιβλιογραφία! Σημειώσεις του μαθήματος! Ελληνική Βιβλιογραφία " Δομημένος Προγραμματισμός με Pascal, Ι Κάβουρα, Εκδόσεις Κλειδάριθμος " Μαθήματα Προγραμματισμού: Εισαγωγή με τη Γλώσσα Pascal, Θ Αλεβίζου και Α Καμπουρέλη, Εκδόσεις Παπασωτηρίου! Ξένη Βιβλιογραφία " Oh! Pascal!, An Introduction to Computing, του D Cooper, Εκδόσεις Norton, 1985! Τίποτα δεν μπορεί να αντικαταστήσει τις προσωπικές σας σημειώσεις! 3
Η Ανατομία ενός Προβλήματος! Πρόβλημα: Μια δυσάρεστη κατάσταση, η οποία επιθυμούμε να αλλάξει ή ένα θέμα για την επίλυση του οποίου απαιτείται σκέψη και συγκέντρωση! Καθορισμός προβλήματος: Η διατύπωση του προβλήματος με τέτοιο τρόπο ώστε να βοηθήσουμε κάποιον να κατανοήσει το πρόβλημα Περιλαμβάνει: " αντίληψη των δεδομένων του προβλήματος δεδομένα: τα στοιχεία που δίνονται και είναι απαραίτητα για να λύσουμε το πρόβλημα " κατανόηση των αποτελεσμάτων του προβλήματος αποτέλεσμα: το ζητούμενο ενός προβλήματος, αυτό που ψάχνουμε, το σημείο που πρέπει να φτάσουμε για να βγούμε από την προβληματική κατάσταση! Διαδικασία επίλυσης: η διαδικασία μέσω της οποίας επιτυγχάνεται το ζητούμενο Αλγόριθμοι Αλγόριθμος καλείται η πεπερασμένη και διαδοχική σειρά βημάτων που απαιτούνται για τη λύση ενός προβλήματος! Παράδειγμα: Έχουμε 10 αριθμούς, τους 17 13 67 104 2 69 45 375 35 84 Θέλουμε να βρούμε ποιος είναι ο μέγιστος και τι σειρά έχει μέσα στη δεκάδα! Μέθοδος Επίλυσης " Βήμα 1: Έστω ότι μέγιστος είναι ο πρώτος " Βήμα 2: Ξεκίνα από το 2ο στοιχείο " Βήμα 3: Αν τελείωσαν οι αριθμοί ΤΕΛΟΣ Όσο υπάρχουν και άλλοι κάνε τα εξής: " Βήμα 4: Αν είναι μεγαλύτερος από αυτόν που είχες για μέγιστο τότε " Βήμα 5: Θεώρησε ότι μέγιστος είναι αυτός ο αριθμός " Βήμα 6: Προχώρησε στον επόμενο αριθμό " Βήμα 7: Ξαναπήγαινε στο βήμα 3 4
Προγράμματα! Η φυσική γλώσσα δεν είναι κατάλληλη για την περιγραφή αλγορίθμων που θα εκτελεσθεί από ένα Η/Υ " οι ίδιες λέξεις και οι ίδιες εκφράσεις επιδέχονται διαφορετικές ερμηνείες " μια λύση είναι περιορισμός του λεξιλογίου και χρήση καλά ορισμένων συμβόλων! Πρόγραμμα: Ένας αλγόριθμος διατυπωμένος σε γλώσσα που μπορεί να καταλάβει ένας Η/Υ! Εντολή: Κάθε βήμα του προγράμματος! Γλώσσα προγραμματισμού: μια γλώσσα που χρησιμοποιούμε για την συγγραφή προγραμμάτων Δομή Η/Υ ΒΟΗΘΗΤΙΚΗ ΚΜΕ (CPU) ΜΟΝΑΔΑ ΕΙΣΟΔΟΥ ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ ΜΟΝΑΔΑ ΕΞΟΔΟΥ ΑΛΜ ΚΑΤΑΧΩΡΗΤΕ ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ 5
Κύρια Μνήμη! Χρησιμεύει για την αποθήκευση προγραμμάτων και δεδομένων! Είναι οργανωμένη σε λέξεις δυαδικών ψηφίων (bits)! Κάθε λέξη περιέχει εντολές προγράμματος ή δεδομένα! Κάθε θέση μνήμης χαρακτηρίζεται από μια διεύθυνση Διεύθυνση 0001 0002 0003 0004 Περιεχόμενα Κεντρική Μονάδα Επεξεργασίας! Εκτελεί διαδοχικά τις εντολές του προγράμματος που βρίσκονται στην Κεντρική Μνήμη! Αναγνωρίζει ένα σύνολο εντολών (instruction set) Kάθε διαφορετικός τύπος ΚΜΕ έχει το δικό του σύνολο εντολών! Περιλαμβάνει τα εξής: " Μονάδα Ελέγχου: κατευθύνει τις άλλες μονάδες να εκτελούν τις εντολές του προγράμματος " Αριθμητική και Λογική Μονάδα: εκτελούνται οι αριθμητικές και λογικές πράξεις που υπαγορεύονται από το πρόγραμμα " Καταχωρητές: Προσωρινός χώρος αποθήκευσης δεδομένων και αποτελεσμάτων 6
Βασική Λειτουργία ΚΜΕ!Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) PC (Καταχωρητης Εντολης) 0 0 K1=(4) 1 K1=K1+1 2 (4)=K1 3 4 567899 Κ1 567899 + Βασική Λειτουργία ΚΜΕ!Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) PC (Καταχωρητης Εντολης) 1 0 1 2 3 4 K1=(4) K1=K1+1 (4)=K1 567899 Κ1 567899 567900 1 + 7
Βασική Λειτουργία ΚΜΕ!Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) PC (Καταχωρητης Εντολης) 2 0 1 2 3 4 K1=(4) K1=K1+1 (4)=K1 567900 567899 Κ1 567900 + Γλώσσες Προγραμματισμού Χαμηλού Επιπέδου Γλώσσα Μηχανής 1000000000000111 1000000000001000 0100000000000111 0001000000001000 0101000000001001 1001000000001001 0000000000000000 Συμβολική Γλώσσα READ 7 READ 8 LOAD 7 ADD 8 STORE 9 WRITE 9 JUMPS 0 κώδικας εντολής διεύθυνση ορίσματος 8
Γλώσσες Προγραμματισμού Υψηλού Επιπέδου! Δίνουν τη δυνατότητα να γράψουμε αλγόριθμους με τρόπο πιο φιλικό και οικείο για τον άνθρωπο! Χαρακτηριστικά των γλωσσών αυτών είναι: " Αποτελούνται από ένα σύνολο λέξεων, συμβόλων και προτάσεων " Οι εντολές που γράφονται σε γλώσσα υψηλού επιπέδου μεταφράζονται σε πολλές εντολές κώδικα μηχανής " Έχουν ορισμένους γραμματικούς και συντακτικούς κανόνες που πρέπει να γνωρίζει ο προγραμματιστής " Συνήθως η γλώσσα είναι ανεξάρτητη από τον υπολογιστή " Η γλώσσα περιλαμβάνει συνήθως ένα αριθμό υποπρογραμμάτων που αποτελούν τη βιβλιοθήκη της γλώσσας Από τη βιβλιοθήκη αυτή ο προγραμματιστής ενσωματώνει όσα υποπρογράμματα χρειάζεται Επίσης, μπορεί να προσθέσει δικά του υποπρογράμματα στη βιβλιοθήκη αυτή Παραδείγματα Γλωσσών Υψηλού Επιπέδου! Oι περισσότερο δημοφιλείς γλώσσες υψηλού επιπέδου κατατάσσονται ανάλογα με τις λειτουργικές ιδιότητες Μερικές έχουν σχεδιαστεί και λειτουργούν καλύτερα σε: " Επιστημονικές εφαρμογές, όπως η FORTRAN, C και η APL " Eμπορικές εφαρμογές, όπως η COBOL και η RPG " Eκπαιδευτικές εφαρμογές όπως η BASIC και η LOGO " Ειδικές εφαρμογές, όπως η LISP και η PROLOG " Eπιστημονικές όσο και εμπορικές εφαρμογές, όπως πχ η PL-1, η PASCAL κλπ 9
Pascal! Σχεδιάστηκε από τον Nicklaus Wirth, διάσημο Ελβετό επιστήμονα της Πληροφορικής το 1968! Σχεδιάστηκε με στόχο να χρησιμοποιηθεί ως διδακτικό εργαλείο των αρχών του προγραμματισμού, αλλά λόγω της πληρότητας, απλότητας και ευκολίας εκμάθησης της χρησιμοποιείται ευρέως στις επιχειρήσεις, τη βιομηχανία! Είναι γλώσσα γενικής χρήσης και υποστηρίζει τις αρχές του δομημένου προγραμματισμού: " χρησιμοποίηση βασικών δομών για τη δημιουργία πολύπλοκων προγραμμάτων Προγραμματιστικό Περιβάλλον EDITOR ΔΙΟΡΘΩΣΕΙΣ ΠΗΓΑΙΟ (SOURCE) ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΦΡΑΣΤΗΣ ΝΑΙ ΛΑΘΗ ΟΧΙ ΠΡΟΓΡΑΜΜΑ ΒΙΒΛΙΟΘΗΚΗΣ ΜΗΝΥΜΑΤΑ ΛΑΘΩΝ ΛΙΣΤΑ ΠΗΓΑΙΟΥ ΑΝΤΙΚΕΙΜΕΝΟ (OBJECT) ΠΡΟΓΡΑΜΜΑ LINK/LOAD ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ Ολοκληρωμένο (γραφικό) περιβάλλον για την γραφή μεταγλώττιση σύνδεση και εκτέλεση ενός προγράμματος 10