Προγραµµατισµός Η/Υ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Μεθοδολογία Προγραµµατισµού Αφαιρετικότητα Ροή Ελέγχου/ εδοµένων Βιβλίο µαθήµατος: Chapter 1,, Sec. 4-54 ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-1 ΠαράδειγµαΠρογραµµατισµού Γράψετε ένα πρόγραµµαπουναµετατρέπει ευρώ σε δολάρια ΗΠΑ. ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-2 1
Κατανόηση και Αρχική Λύση Παράδειγµα 100 ευρώ 1.45 δολάρια στο ευρώ >>>>>> 145 δολάρια εδοµένα (εισόδου): ευρώ, τιµή εδοµένα (εξόδου): δολάρια Υπολογισµός: δολάρια = ευρώ * τιµή ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-3 Υλοποίηση µε γλώσσα προγραµµατισµού (C) επεξεργαστή κειµένου /* programma poy metatrepei euro se dolaria */ main() { float euro, timi; /* inputs*/ float dolario; /* output*/ } dolaria = euro * timi; Λείπει επικοινωνία µε τονχρήστη ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-4 2
/* programma poy metatrepei euro se dolaria */ #include <stdio.h> int main() { float euro, timi; float dolaria; /* inputs*/ /* output*/ /* eisagwgh dedomenwn */ printf( Dose euro kai timi synallagmatos: ); scanf( %f%f,&euro, &timi); dolaria = euro * timi; /*exagwgh dedomenwn*/ printf( %.2f euro antistoixoun se %.2f dolaria\n, euro, dolaria); } return 0; 2-5 οκιµή: Mεταγλωττισµός, Εκτέλεση > gcc convert.c o convert > > convert Dose euro kai timi synallagmatos: 100 1.45 100.00 euro antistoixoun se 145.00 dolaria > convert Dose euro kai timi synallagmatos: 5.5 1.62634 5.50 euro antistoixoun se 8.95 dolaria > ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-6 3
Αποτέλεσµα Μεταγλωττισµού, Εκτέλεσης Τρέχει ορθά, πολύ ωραία αλλά µεεπαλήθευση (εµπειρικά ή αναλυτικά) Aποτυχία στον µεταγλωττισµό: λάθος σύνταξη (συντακτικά λάθη) Τρέχει µα παράγει λάθος αποτέλεσµα ή τρέχει µερικώς (crashes) Λογικά λάθη:αποσφαλµάτωση (debugging) ιαφορά µεταξύ:µεταγλωττίζει, τρέχει, ορθό ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-7 Αξιολόγηση Λύσεων Ταχύτητα, ανάγκη σε µνήµη Επεκτασιµότητα Ευκολία κατανοήσεως ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-8 4
Τι είναι προγραµµατισµός Αλγόριθµος: Μια πεπερασµένη ακολουθία εντολών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, οι οποίες αν ακολουθηθούν επιτυγχάνεται κάποιο επιθυµητό αποτέλεσµα. Προγραµµατισµός: Οσχεδιασµός αλγορίθµων και η υλοποίηση τους σε γλώσσες προγραµµατισµού για την επίλυση προβληµάτων. Προσοχή: πoυθενά δεν λέει C οι αρχές προγραµµατισµού είναι η ουσία όχι η C ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-9 Μεθοδολογία Προγραµµατισµού 1. Περιγραφή του προβλήµατος, καθορισµός απαιτήσεων 2. Ανάλυση προβλήµατος 3. Σχεδίαση αλγορίθµου 4. Υλοποίηση αλγορίθµου σε πρόγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (Aποσφαλµάτωση) 6. Συντήρηση & ενηµέρωση του προγράµµατος Στη βιβλιογραφία, πολλές φορές η µεθοδολογία αυτή αναφέρεται και ως κύκλος ανάπτυξης προγράµµατος ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-10 5
1. Περιγραφή του προβλήµατος, καθορισµός απαιτήσεων Προσπαθούµε µεαπλάβήµατανααποµονώσουµε και να καταγράψουµετιςπραγµατικές συνιστώσες ενός προβλήµατος, τοποθετώντας τις σε λογική σειρά µεταξύ τους. Αποσαφηνίζουµε τους στόχους που επιδιώκουµενα υλοποιήσουµε µε αναλυτικό τρόπο προκειµένου να καταγραφεί το πλαίσιο απαιτήσεων της όλης προσπάθειας. ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-11 2. Ανάλυση του προβλήµατος Ποία εíναι τα δεδοµένα (inputs) Ποία είναι τα εξαγώµενα/αποτέλεσµα (outputs) Τι χρειάζεται να γίνει ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-12 6
3. Σχεδίαση αλγορίθµου ιατυπώση της διαδικασιας µετασχηµατισµού του δεδοµένου στο αποτέλεσµα Εκφράζεται σε ψευδοκώδικα (pseudocode) Συµβολισµός που παροµοιάζει τα Ελληνικά (ή Αγγλικά) ίνει τα βήµατα λύσης του προβλήµατος εν είναι κώδικας µηχανής Ανεξάρτητος γλώσσας προγραµµατισµού Σε ψηλότερο επίπεδο από την γλώσσα προγραµµατισµού Πιο εύκολο να περιγράψουµετοναλγόριθµο χωρίςνα ανησυχούµε γιασυντακτικό ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-13 Αλγόριθµος Παραδείγµατος ιάβασε δεδοµένα: ευρώ, τιµή Υπολογισµός: δολάρια = ευρώ * τιµή Τύπωσε αποτέλεσµα: δολάρια ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-14 7
ιάσπαση σε Υποπροβλήµατα Π Π1 Π2 Π1,1 Π1,2 Π2,1 Π2,2 Π2,3 Π1,2,1 Π1,2,2 Π1,2,3 Σταδιακή εκλέπτυνση προβλήµατος ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-15 Αφαιρετικότητα ιακρίβωση του τι γίνεται χωρίς την γνώση του πως γίνεται Ηδιαδικασίαπρογραµµατισµού αποτελείται από σχεδιασµό λύσεων σε διάφορα επίπεδα αφαιρετικότητας Αφαιρετικóτητα: πολύ σηµαντική έννοια ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-16 8
Αφαιρετικότητα Μεθοδολογίας 1. Ορισµός προβλήµατος Ανεξάρτητα Γλώσσας 2. Ανάλυση προβλήµατος Προγραµµατισµού 3. Σχεδίαση αλγορίθµου 4. Υλοποίηση αλγόριθµου σε πρόγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (αποσφαλµάτωση) 6. Συντήρηση & ενηµέρωση του προγράµµατος ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-17 4. Υλοποίηση Αλγορίθµου Επιτυχής υλοποίηση εξυπακούει γνώση γλώσσας προγραµµατισµού: σύνταξη σηµασιολογία Θα µαθούµετηνc ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-18 9
/* programma poy metatrepei euro se dolaria */ #include <stdio.h> int main() { } Άγκυστρα περιέχουν (σώµα) εντολές της συνάρτησης Συνάρτηση main κάθε ηλώσεις: πραγµ. µεταβλητές πρόγραµµα έχειmain float euro, timi; /* inputs*/ float dolaria; /* output*/ Εντολές µε συναρτήσειςstdio /* eisagwgh dedomenwn */ Είσοδος δεδοµένων printf( Enter euro kai timi: ); µεταβλητές έπονται από scanf( %f%f,&euro, &timi); τον τελεστή διεύθυνσης & dolaria = euro * timi; τελεστές πολλαπλασιασµού * και ανάθεσης = /*exagwgh dedomenwn*/ printf( %.2f euro antistoixoun se %.2f dolaria\n, euro, dolaria); return 0; Σηµασία;;;; Σχόλια Βιβλιοθήκη για Ι/Ο Εντόλη µε συνάρτησηstdio Εξαγωγή δεδοµένων 2-19 5. οκιµή & Επαλήθευση Προγράµµατος Τρέξτε το πρόγραµµα αρκετές φορές Χρησιµοποιήστε δεδοµένα εισόδου που µπορείτε να επαληθεύσετε εύκολα, δηλ. που µπορείτε να υπολογίσετε στο χαρτί Στοστάδιοαυτόδιορθώνονταιταπιθανάλογικά σφάλµατα (σε περίπτωση που δεν υπάρχουν συντακτικά λάθη, αλλά το πρόγραµµαδενδίνεισωστά αποτελέσµατα) και λάθη εκτέλεσης (run-time errors) ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-20 10
Ροή Ελέγχου (control flow) ΗροήελέγχουστηνC είναι ακολουθιακής µορφής (sequential) Ξεκινά απó την πρώτη εντολή της main Εντολές εκτελούνται σε σειρά Υπάρχουν γλώσσες µη ακολουθιακές ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-21 /* programma poy metatrepei euro se dolaria */ #include <stdio.h> int main() { float euro, timi; float dolaria; Ροή Ελέγχου;;; /* inputs*/ /* output*/ /* eisagwgh dedomenwn */ printf( Enter euro kai timi: ); scanf( %f%f,&euro, &timi); dolaria = euro * timi; /*exagwgh dedomenwn*/ printf( %.2f euro antistoixoun se %.2f dolaria\n, euro, dolaria); } return 0; 2-21 11
LISP Program (eval (list cdr (car ((quote (a. b)) c)))) Eκτέλεση ξεκινά από την πιο φωλιασµένη εντολή ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-23 /* programma poy metatrepei euro se dolaria */ #include <stdio.h> int main() { float euro, timi; float dolaria; Ροή εδοµένων;;; /* inputs*/ /* output*/ /* eisagwgh dedomenwn */ printf( Enter euro kai timi: ); scanf( %f%f,&euro, &timi); dolaria = euro * timi; /*exagwgh dedomenwn*/ printf( %.2f euro antistoixoun se %.2f dolaria\n, euro, dolaria); } return 0; 2-23 12
6. Συντήρηση προγράµµατος Το λογισµικό εγκαθίσταται και ξεκινά η λειτουργία του Οι ανάγκες των χρηστών, και η συνεχής προσαρµογή των προγραµµάτων στις νέες απαιτήσεις καθιστούν αναγκαία την συνεχή παρακολούθηση του προγράµµατος, και την τροποποίηση του ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-25 Περίληψη Μεθοδολογία Προγραµµατισµού Περιγραφή προβλήµατος Ανάλυση προβλήµατος Σχεδιασµός αλγορίθµου Υλοποίηση (συγγραφή προγράµµατος) οκιµή και επαλήθευση Συντήρηση και ενηµέρωση Αλγόριθµος / Ψευδοκώδικας Αφαιρετικότητα Ροή Ελέγχου / εδοµένων ΕΠΛ 131 Αρχές Προγραµµατισµού I 2-26 13