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

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

Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)

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


Παρουσίαση με θέμα: "Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)"— Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25 /*program that computes the area of a rectangle (use of procedures)
inputs: length, width in meters outputs: area in square meters*/ #include <stdio.h> 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”);

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/2000 epl-131

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

31 Εκτέλεσης >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 Enter length in meters -0.5 Enter width in meters 12 error: length should be positive > 31/1/2000 epl-131

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

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

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

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

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

37 Διαδικασιακό Μοντέλο Υπάρχει η έννοια της αποθήκευσης
Μεταβλητές έχουν διεύθυνση (χώρο μνήμης), τύπο και τιμή π.χ. int x = ; εοds 1 2 ... 1021 123 err12 123456 τυπος διευθυνση (συμβολικη) τιμη 31/1/2000 epl-131


Κατέβασμα ppt "Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)"

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


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