Προγραµµατισµός Προηγ. διαλεξη: γιατι γραφουµε προγραµµατα; Σηµερα: πως γραφουµε προγραµµατα; τι ειναι προγραµµατισµος µεθοδολογια αφαιρετικοτητα (abstraction) διαχωρισµος µεταξυ τι και πως(προγραµµα,δεδοµενα...) Παραδειγµα Τι είναι προγραµµατισµός Ο σχεδιασµός αλγορίθµων και η υλοποίηση τους σε γλώσσες προγραµµατισµού για την επίλυση προβληµάτων. epl-031 1 epl-031 2 Μεθοδολογία 1. Ορισµος προβληµατος 2. Αναλυσης προβληµατος 3. Σχεδιαση αλγοριθµου 4. Υλοποίηση αλγόριθµου σε προγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (5.1 Aποσφαλµατωση 1-2-3-4) 6. Συντήρηση & ενηµέρωση του προγράµµατος Aνάλυσης Προβλήµατος Ακριβης αναγνωρισης: τι ειναι τα δεδοµενα (inputs) τι ειναι τα εξαγωµενα/αποτελεσµα (outputs) τι χρειαζεται να γινει epl-031 3 epl-031 4 Τι είναι αλγόριθµος? Σχεδιάσµος Αλγορίθµου ιατυπώση της διαδικασιας µετασχηµατισµού του δεδοµένου στο αποτέλεσµα Εκφράζεται σε ψευδογλώσσα (pseudocode) epl-031 5 Σταδιακη Εκλέπτυνση (Stepwise Refinement) Πανω προς Κατω (top-down design) Το πρόβληµα σταδιακά διασπάζεται σε ένα αριθµό απλούστερων υποπροβληµάτων Η σταδιακή διάσπαση (εκλέπτυνση) συνεχίζεται µέχρις ότου φτάσουµε σεατοµικά υποπροβλήµατα (υποπροβλήµατα που δεν είναι λογικό/δυνατό να διασπασθούν περαιτέρω) Επαληθευση/Αξιολογηση epl-031 6 1
ιάσπαση σε Υποπροβλήµατα ιασπαση ιευκολυνει... Π Π1 Π2 Π1,1 Π1,2 Π2,1 Π2,2 Π2,3 Π1,2,1 Π1,2,2 Π1,2,3 Aρθρωτός σχεδιασµός(modular design) Αφαιρετικότητα (abstraction) ιαχωρισµός ανάµεσα στο τι και το πως ιατύπωση διεπαφών (interface) Παράλληλη ανάπτυξη (parallel development) Επαναχρησιµοποίηση (reuse) Επαληθευση/Αξιολογηση epl-031 7 epl-031 8 ιεπαφές/ ιασυνδέσεις Απαιτειται ορισµος διεπαφης παραµετρους που παιρνει/επιστρεφει λειτουργικοτητα (τι κανει) Αφαιρετικοτητα ιακρίβωση του τι γίνεται χωρίς την γνώση του πως γίνεται Ηδιαδικασιαπρογραµµατισµου αποτελειται απο σχεδιασµολύσεωνσε διάφορα επίπεδα αφαιρετικότητας Προσοχη: το τι καποτε συµπεριλαµβανει περιορισµους (πηγη λαθων) epl-031 9 epl-031 10 Αφαιρετικότητα Μεθοδολογίας 1. Ορισµος προβληµατος 2. Αναλυσης προβληµατος 3. Σχεδιαση αλγοριθµου Ανεξαρτητα Γλωσσας 4. Υλοποίηση αλγόριθµου σε προγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (αποσφαλµατωση 1-2-3-4) 6. Συντήρηση & ενηµέρωση του προγράµµατος Αφαιρετικοτητα Αλγοριθµου Τι ειναι ο αλγοριθµος οχι πως θα υλοποιηθει Αλγοριθµος... Java Fortran epl-031 11 epl-031 12 2
Επιπεδα Αφαιρετικοτητας Αφαιρετικοτητα Προγραµµατος: Τι κανει ενα προγραµα οχιπωςτοκανει(διαδικασίες /συναρτήσεις) Αφαιρετικοτητα εδοµενων: Τι ειναι τα δεδοµενα µιας δοµης/τυπου οχι πως ειναι οργανωµενα (δοµές/αφηρηµένοι τύποι) Αφαιρετικοτητα Εντολων: Τι κανει µια εντολη οχι πως το κανει epl-031 13 Παράδειγµα Γραψτε ενα προγραµµα που υπολογιζει το εµβαδο ενος ορθογωνιου. Το ορθογωνιο οριζεται µε δυοαριθµους: το µηκος και το πλατος (σε µετρα). Το εµβαδο υπολογιζεται ως µηκος x πλατος. Π.χ. εαν το µηκος ειναι 10 µετρα και το πλατος 5 µετρα τοτε το εµβαδο ειναι 50 τετραγωνικα µετρα. epl-031 14 Αναλυσης εδοµενα ειναι δυο πραγµατικοι αριθµοι (µηκος και πλατος) Αποτελεσµα ειναι ενας πραγµατικος αριθµος (το εµβαδο τoυ ορθογωνιου που οριζεται απο τα δεδοµενα) Αλγοριθµος ιαβασε τα δεδοµενα Υπολογισε το εµβαδο Εξαγωγη αποτελεσµατος epl-031 15 epl-031 16 Αλγοριθµος διαβασε_δεδοµενα(µηκος,πλατος) αθροισµα=υπολογισε_εµβαδο(µηκος,πλατος) εξαγωγη_αποτελεσµατος(µηκος,πλατος εµβαδο) διαβασε δεδοµενα Προβληµα υπολογισε εµβαδο εξαγωγη αποτελεσµατος ιάβασε εδοµένα Interface ιαβαζει και επιστρεφει δυο τιµες: µηκος και πλατος (µοναδα µετρησεως µετρο) Functionality ιαβασε µηκος πλατος (ελεγξε αν ειναι θετικα) epl-031 17 epl-031 18 3
Υπολόγισε Εµβαδο Interface Παιρνει δυο παραµετρους (µηκος και πλατος) Επιστρεφει εµβαδο Functionality υπολογιζει εµβαδο εµβαδο= µηκος x πλατος Εξαγωγή Αποτελέσµατος Interface: Παιρνει τρεις παραµετρους (µηκος, πλατος και εµβαδο) Functionality: εξαγει το αποτελεσµα epl-031 19 epl-031 20 Αλγόριθµος Περαιτέρω Εκλέπτυνση Εισαγωγης Προβληµα Εισαγ. Υπολογ. Εξαγωγ. get(µηκος) get(πλατος) διαβασε µηκος διαβασε πλατος µηκος πλατος εµβαδο Εµβαδο = µηκος x πλατος epl-031 21 epl-031 22 Υλοποίηση Επιτυχης υλοποιηση εξυπακουει γνωση γλωσσας προγραµµατισµου συνταξη σηµµασολογια program that computes the area of a rectangle (use of procedures) inputs: length, width in meters outputs: area in square meters PROGRAM RETANG OPEN (UNIT=1,STATUS='UNKNOWN',FILE='results.data') diabase dedomena/elegxos ALL INPUT(A, B) ypologismos ALL AL(AREA, A, B) ejagwgh ALL OUTPUT(AREA, A, B) STOP epl-031 23 epl-031 24 4
function that reads program input data SUBROUTINE INPUT(SIDEA, SIDEB) WRITE(*,*) Enter length in meters' READ(5,*) SIDEA WRITE(*,*) Enter width in meters' READ(5,*) SIDEB RETURN function that computes the area of a rectangle SUBROUTINE AL(AREA, A, B) pollaplasiazoume to mikos epi to platos AREA=A*B RETURN epl-031 25 epl-031 26 function that displays the output of the program SUBROUTINE OUTPUT(AREA, A, B) Υλοποίηση print the result on the screen WRITE(*,*) 'The area of rectangle with', A, m length and, B, m width is, area, sq. m.' RETURN Χρησιµοποιηση ονοµατων που βοηθουν στην ευκολη ερµηνεια του κωδικα Ευκολοδιαβαστος κωδικας Τεκµηρίωση: σχόλια στον κώδικα epl-031 27 epl-031 28 οκιµή/επαλήθευση Μεταγλωτισµος π.χ. >g77 foo.for -o foo παραγει: τον αντικειµενικο κωδικα (µπορει ορθο) εκτελεστε (τρεξτε) προγραµµα εµπειρικη επαληθευση(µεγεθος:1,0,λιγα αλλα) λαθη (συντακτικα) διορθωση κωδικα epl-031 29 Εκτέλεσης >foo Enter length in meters 17 Enter width in meters 2 The area of a rectangle with 17 m length and 2 m width is 34 sq.m epl-031 30 5
Εκβαση Εκτέλεσης Τρεχει ορθα πολυ ωραια - αλλα µε επαληθευση Επαληθευση: εµπειρικα, αναλυτικα Αξιολόγηση Λύσεων Ταχύτητα, ανάγκη σε µνήµη Αναλυτικές/Εµπειρικές Μέθοδοι Εκβαση Εκτέλεσης Τρεχει µα παραγει λαθος αποτελεσµατα ή τρεχει µερικως (crashes) αποσφαλµατωση (µπορει να σας βοηθησει να βελτιωσετε την λυση σας) epl-031 31 epl-031 32 Εποµενο Αντικειµενο Εισαγωγη στην FORTRAN epl-031 33 6