Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

31/1/2000epl-1311 Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη) Πως γραφουμε προγραμματα –τι ειναι προγραμματισμος –μεθοδολογια –αφαιρετικοτητα.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "31/1/2000epl-1311 Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη) Πως γραφουμε προγραμματα –τι ειναι προγραμματισμος –μεθοδολογια –αφαιρετικοτητα."— Μεταγράφημα παρουσίασης:

1 31/1/2000epl-1311 Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη) Πως γραφουμε προγραμματα –τι ειναι προγραμματισμος –μεθοδολογια –αφαιρετικοτητα (abstraction) διαχωρισμος μεταξυ τι και πως(προγραμμα,δεδομενα...) Παραδειγματα

2 31/1/2000epl-1312 Τι είναι προγραμματισμός Ο σχεδιασμός αλγορίθμων και η υλοποίηση τους σε γλώσσες προγραμματισμού για την επίλυση προβλημάτων.

3 31/1/2000epl-1313 Μεθοδολογία 1. Ορισμος προβληματος 2. Αναλυσης προβληματος 3. Σχεδιαση αλγοριθμου 4. Υλοποίηση αλγόριθμου σε προγραμμα 5. Δοκιμή  επαλήθευση του ολοκληρωμένου προγράμματος (5.1 Aποσφαλματωση ) 6. Συντήρηση  ενημέρωση του προγράμματος

4 31/1/2000epl-1314 Aνάλυσης Προβλήματος Ακριβης αναγνωρισης: –τι ειναι τα δεδομενα (inputs) –τι ειναι τα εξαγωμενα/αποτελεσμα (outputs) –τι χρειαζεται να γινει

5 31/1/2000epl-1315 Τι είναι αλγόριθμος? Διατυπώση της διαδικασιας μετασχηματισμού του δεδομένου στο αποτέλεσμα Εκφράζεται σε ψευδογλώσσα (pseudocode)

6 31/1/2000epl-1316 Σχεδιάσμος Αλγορίθμου Σταδιακη Εκλέπτυνση (Stepwise Refinement) Πανω προς Κατω (top-down design) –Το πρόβλημα σταδιακά διασπάζεται σε ένα αριθμό απλούστερων υποπροβλημάτων –Η σταδιακή διάσπαση (εκλέπτυνση) συνεχίζεται μέχρις ότου φτάσουμε σε ατομικά υποπροβλήματα (υποπροβλήματα που δεν είναι λογικό/δυνατό να διασπασθούν περαιτέρω) –Επαληθευση/Αξιολογηση

7 31/1/2000epl-1317 Διάσπαση σε Υποπροβλήματα Π Π1 Π2 Π1,1 Π1,2 Π2,1Π2,2 Π2,3 Π1,2,1Π1,2,2 Π1,2,3

8 31/1/2000epl-1318 Διασπαση Διευκολυνει... Aρθρωτός σχεδιασμός(modular design) Αφαιρετικότητα (abstraction) –Διαχωρισμός ανάμεσα στο τι και το πως Διατύπωση διεπαφών (interface) Παράλληλη ανάπτυξη ( parallel development ) Επαναχρησιμοποίηση (reuse) Επαληθευση/Αξιολογηση

9 31/1/2000epl-1319 Διεπαφές/Διασυνδέσεις Απαιτειται ορισμος διεπαφης –παραμετρους που παιρνει/επιστρεφει –λειτουργικοτητα (τι κανει) –σφαιρικες μεταβλητες που επηρεαζονται απο την διαδικασια (side-effects)

10 31/1/2000epl Αφαιρετικοτητα Διακρίβωση του τι γίνεται χωρίς την γνώση του πως γίνεται Η διαδικασια προγραμματισμου αποτελειται απο σχεδιασμο λύσεων σε διάφορα επίπεδα αφαιρετικότητας Προσοχη: το τι καποτε συμπεριλαμβανει περιορισμους (πηγη λαθων)

11 31/1/2000epl Αφαιρετικότητα Μεθοδολογίας 1. Ορισμος προβληματος 2. Αναλυσης προβληματος 3. Σχεδιαση αλγοριθμου 4. Υλοποίηση αλγόριθμου σε προγραμμα 5. Δοκιμή  επαλήθευση του ολοκληρωμένου προγράμματος (αποσφαλματωση ) 6. Συντήρηση  ενημέρωση του προγράμματος Ανεξαρτητα Γλωσσας

12 31/1/2000epl Αφαιρετικοτητα Αλγοριθμου Τι ειναι ο αλγοριθμος οχι πως θα υλοποιηθει... Αλγοριθμος JavaCFortran

13 31/1/2000epl Επιπεδα Αφαιρετικοτητας Αφαιρετικοτητα Προγραμματος: Τι κανει ενα προγραμα οχι πως το κανει (διαδικασίες /συναρτήσεις) Αφαιρετικοτητα Δεδομενων: Τι ειναι τα δεδομενα μιας δομης/τυπου οχι πως ειναι οργανωμενα (δομές/αφηρημένοι τύποι) Αφαιρετικοτητα Εντολων: Τι κανει μια εντολη οχι πως το κανει

14 31/1/2000epl Τύποι Δεδομένων Απλοι Τυποι: αριθμοι, χαρακτηρες Συνθετοι Τυποι: πινακες, δομες, λιστες Αφηρημενοι τυποι (abstract data types) –Αδιαφάνεια ως προς την υλοποίηση τους –Διεπαφή διαμέσου συναρτήσεων πρόσβασης Συγκεκριμενοι: διαφανεια και αμεση προσβαση

15 31/1/2000epl Παράδειγμα Γραψτε ενα προγραμμα που υπολογιζει το εμβαδο ενος ορθογωνιου. Το ορθογωνιο οριζεται με δυο αριθμους: το μηκος και το πλατος (σε μετρα). Το εμβαδο υπολογιζεται ως μηκος x πλατος. Π.χ. εαν το μηκος ειναι 10 μετρα και το πλατος 5 μετρα τοτε το εμβαδο ειναι 50 τετραγωνικα μετρα.

16 31/1/2000epl Αναλυσης Δεδομενα ειναι δυο πραγματικοι αριθμοι (μηκος και πλατος) Αποτελεσμα ειναι ενας πραγματικος αριθμος ( το εμβαδο τoυ ορθογωνιου που οριζεται απο τα δεδομενα )

17 31/1/2000epl Αλγοριθμος Διαβασε τα δεδομενα Υπολογισε το εμβαδο Εξαγωγη αποτελεσματος

18 31/1/2000epl Αλγοριθμος διαβασε_δεδομενα(μηκος,πλατος) αθροισμα=υπολογισε_εμβαδο(μηκος,πλατος) εξαγωγη_αποτελεσματος(μηκος,πλατος εμβαδο) εξαγωγη αποτελεσματος διαβασε δεδομενα υπολογισε εμβαδο Προβλημα

19 31/1/2000epl Διάβασε Δεδομένα Interface –Διαβαζει και επιστρεφει δυο τιμες: μηκος και πλατος (μοναδα μετρησεως μετρο) Functionality –Διαβασε μηκος πλατος –ελεγξε αν ειναι θετικα

20 31/1/2000epl Υπολόγισε Εμβαδο Interface –Παιρνει δυο παραμετρους (μηκος και πλατος) –Επιστρεφει εμβαδο Functionality – υπολογιζει εμβαδο εμβαδο= μηκος x πλατος

21 31/1/2000epl Εξαγωγή Αποτελέσματος Interface: –Παιρνει τρεις παραμετρους (μηκος, πλατος και εμβαδο) Functionality: –εξαγει το αποτελεσμα

22 31/1/2000epl Αλγόριθμος Εισαγ. Υπολογ. Εξαγωγ. Προβλημα μηκος πλατος Ελεγχος εμβαδο Εμβαδο = μηκος x πλατος

23 31/1/2000epl Περαιτέρω Εκλέπτυνση Εισαγωγης get(μηκος) /*διαβασε μηκος*/ get(πλατος) /*διαβασε πλατος*/ /*ελεγχος μηκος*/ if (μηκος<=0) print(“λαθος μηκος”) exit /*ελεγχος πλατος*/ if (πλατος<=0)print(“λαθος πλατος”) exit

24 31/1/2000epl Υλοποίηση Επιτυχης υλοποιηση εξυπακουει γνωση γλωσσας προγραμματισμου –συνταξη –σημμασολογια

25 /*program that computes the area of a rectangle (use of procedures) inputs: length, width in meters outputs: area in square meters*/ #include void get_data_check(float *length, float *width ) float compute_area(float length, float width ) void display_sum(float length, float width, float area) main() {/*orismos metavlitwn*/ float length, width; /*input variables*/ float area; /*holds area*/ /* diabase dedomena/elegxos*/ get_data_check(&length, &width ); /* ypologismos*/ area = compute_area(length, width ); /* ejagwgh*/ display_area(length, width, area); }

26 /*function that reads program input data*/ void get_data_check(float *length, float *width ){ printf(“Enter length in meters: ”); scanf(“%f”,length); printf(“Enter width in meters:”); scanf(“%f”,width); if (*length<=0) { printf(“error: length should be positive\n”); exit(0); } if (*width<=0) { printf(“error: width should be positive\n”); exit(0); }

27 /*function that computes the area of a rectanlge*/ float compute_area(float length, float width ){ float area; /*holds area*/ area = length * width; /*compute area*/ return area; }

28 /*function that displays the output of the program*/ void display_area(float length, float width, float area) { printf(“The area of a rectangle with %f m length and %f m width is %f sq. m.\n”, length, width, area); }

29 31/1/2000epl Υλοποίηση Χρησιμοποιηση ονοματων που βοηθουν στην ευκολη ερμηνεια του κωδικα Ευκολοδιαβαστος κωδικας Τεκμηρίωση: σχόλια στον κώδικα

30 31/1/2000epl Δοκιμή/Επαλήθευση Μεταγλωτισμος π.χ. >cc foo.c -o foo παραγει: –τον αντικειμενικο κωδικα (μπορει ορθο) εκτελεστε (τρεξτε) προγραμμα εμπειρικη επαληθευση(μεγεθος: 1,0, λιγα αλλα) –λαθη (συντακτικα) διορθωση κωδικα

31 31/1/2000epl Εκτέλεσης >foo Enter length in meters 17 Enter width in meters 2 The area of a rectange with 17 m length and 2 m width is 34 sq.m >foo Enter length in meters -0.5 Enter width in meters 12 error: length should be positive >

32 31/1/2000epl Εκβαση Εκτέλεσης Τρεχει “ορθα” –πολυ ωραια - αλλα με επαληθευση Επαληθευση: εμπειρικα, αναλυτικα Αξιολόγηση Λύσεων –Ταχύτητα, ανάγκη σε μνήμη –Αναλυτικές/Εμπειρικές Μέθοδοι

33 31/1/2000epl Εκβαση Εκτέλεσης Τρεχει μα παραγει λαθος αποτελεσματα ή τρεχει μερικως (crashes) –αποσφαλματωση (μπορει να σας βοηθησει να βελτιωσετε την λυση σας)

34 31/1/2000epl Μοντέλα Προγραμματισμού –Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2 –Αντικειμενοστρεφές – αντικείμενο/ενδοπερίβλημα-κληρονομικότητα, π.χ. C++, Smalltalk, Java –Συναρτησιακό – συνάρτηση/αποτίμηση εκφράσεων, π.χ. Miranda, ML –Λογικό – σχέση/μηχανισμός συνεπαγωγής, π.χ. Prolog

35 31/1/2000epl Προστακτικές έναντι Δηλωτικές Γλώσσες Δηλωτικές γλώσσες έχουν υψηλότερη αφαιρετικότητα. Δεν υπάρχει η έννοια της αποθήκευσης σε σχέση με αυτές τις γλώσσες και επομένως του τελεστή ανάθεσης τιμών (assignment operator). Θα χρησιμοποιησουμε C (διαδικασιακη)

36 31/1/2000epl Διαδικασιακό Μοντέλο  Κεντρική έννοια η εντολή ή προσταγή  Η έννοια της διαδικασίας παρέχει το βασικό μηχανισμό για αφαιρετικότητα  Η ροή ελέγχου (control flow) είναι ακολουθιακής μορφής  Υπάρχει η έννοια της αποθήκευσης  Μεταβλητές έχουν διεύθυνση (χώρο μνήμης), τύπο και τιμή π.χ. int x = ;

37 31/1/2000epl Διαδικασιακό Μοντέλο  Υπάρχει η έννοια της αποθήκευσης  Μεταβλητές έχουν διεύθυνση (χώρο μνήμης), τύπο και τιμή π.χ. int x = ; τυπος διευθυνση (συμβολικη) τιμη … …... εοds err


Κατέβασμα ppt "31/1/2000epl-1311 Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη) Πως γραφουμε προγραμματα –τι ειναι προγραμματισμος –μεθοδολογια –αφαιρετικοτητα."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google