ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ Αχιλλέας Αχιλλέως, Τµήµα Πληροφορικής, Πανεπιστήµιο Κύπρου Email: achilleas@cs.ucy.ac.cy
Κεφάλαιο 2 ΠρογραµµατισµόςΗ/Υ
Θέµατα ιάλεξης οµή Προγράµµατος C Μεθοδολογία Προγραµµατισµού Αφαιρετικότητα Ροή Ελέγχου/ εδοµένων
Τιείναιπρογραµµατισµός Αλγόριθµος: Μια πεπερασµένη ακολουθία εντολών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, οι οποίες αν ακολουθηθούν επιτυγχάνεται κάποιο επιθυµητό αποτέλεσµα. Προγραµµατισµός: Οσχεδιασµός αλγορίθµων και η υλοποίηση τους σε γλώσσες προγραµµατισµού για την επίλυση προβληµάτων. Προσοχή: πουθενά δεν λέει C οι αρχές προγραµµατισµού είναι η ουσία όχιηc
ΜεθοδολογίαΠρογραµµατισµού 1. Περιγραφή του προβλήµατος, καθορισµός απαιτήσεων 2. Ανάλυση προβλήµατος 3. Σχεδίαση αλγορίθµου 4. Υλοποίηση αλγορίθµου σε πρόγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (Aποσφαλµάτωση) 6. Συντήρηση & ενηµέρωση του προγράµµατος Στη βιβλιογραφία, πολλές φορές η µεθοδολογία αυτή αναφέρεται και ως κύκλος ανάπτυξης προγράµµατος
1. Περιγραφήτουπροβλήµατος, καθορισµόςαπαιτήσεων Προσπαθούµε µε απλά βήµατα να αποµονώσουµε και να καταγράψουµε τις πραγµατικέςσυνιστώσεςενόςπροβλήµατος, τοποθετώντας τις σε λογική σειρά µεταξύ τους. Αποσαφηνίζουµε τους στόχους που επιδιώκουµε να υλοποιήσουµε µε αναλυτικό τρόπο προκειµένου να καταγραφεί το πλαίσιο απαιτήσεων της όλης προσπάθειας.
2. Ανάλυσητουπροβλήµατος Ποία είναι τα δεδοµένα (inputs) Ποία είναι τα εξαγόµενα αποτέλεσµατα (outputs) Τιχρειάζεταιναγίνει
3. Σχεδίασηαλγορίθµου ιατύπωση της διαδικασίας µετασχηµατισµού του δεδοµένου στο αποτέλεσµα Εκφράζεται σε ψευδοκώδικα (pseudocode) Συµβολισµός που παροµοιάζει τα Ελληνικά (ή Αγγλικά) ίνει τα βήµατα λύσης του προβλήµατος εν είναι κώδικας µηχανής Ανεξάρτητος γλώσσας προγραµµατισµού Σε ψηλότερο επίπεδο από την γλώσσα προγραµµατισµού Πιο εύκολο να περιγράψουµε τον αλγόριθµο χωρίς να ανησυχούµε για συντακτικό
3. Σχεδίασηαλγορίθµου (συν.) Σχεδιασµός διαγράµµατος ροής Σχηµατικός τρόπος αναπαράστασης της ροής των οδηγιώνπουσυνθέτουνέναναλγόριθµο.
ΑφαιρετικότηταΜεθοδολογίας 1. Ορισµός προβλήµατος 2. Ανάλυση προβλήµατος 3. Σχεδίαση αλγορίθµου 4. Υλοποίηση αλγόριθµου σε πρόγραµµα 5. οκιµή & επαλήθευση του ολοκληρωµένου προγράµµατος (αποσφαλµάτωση) 6. Συντήρηση & ενηµέρωση του προγράµµατος Ανεξάρτητα Γλώσσας Προγραµµατισµού
Αφαιρετικότητα ιακρίβωση του τι γίνεται χωρίς την γνώση του πως γίνεται/υλοποιείται. Η διαδικασία προγραµµατισµού αποτελείται από σχεδιασµό λύσεων σε διάφορα επίπεδα αφαιρετικότητας. Αφαιρετικóτητα: γιγαντιαία έννοια.
ιάσπασησευπό-προβλήµατα Σταδιακή εκλέπτυνση προβλήµατος
Παράδειγµα: Αλγόριθµος ιάβασεδεδοµένα: λίρες, rate Υπολογισµός: euro = λίρες * rate Τύπωσε αποτέλεσµα: euro
4. ΥλοποίησηΑλγορίθµου Επιτυχής υλοποίηση εξυπακούει γνώση γλώσσας προγραµµατισµού: σύνταξη σηµασιολογία Θαµαθούµετην C
οµήπρογράµµατος C H γλώσσα C είναι απλά ένα σύνολο από συντακτικούς κανόνες. Ένα πρόγραµµα σε C, αποτελείται από εντολές (οργανωµένα συνήθως µέσα σε συναρτήσεις) και δεδοµένα (µεταβλητές).
οµήπρογράµµατος C (συν.) 1. Οδηγίες στον προεπεξεργαστή ενσωµάτωση βιβλιοθηκών δηλώσεις σταθερών 2. ηλώσεις συναρτήσεων 3. Ορισµός κύριας συνάρτησης (main) δηλώσεις µεταβλητών εντολές (εκφράσεις, κλήσεις συναρτήσεων κτλ) 4. Υλοποίηση συναρτήσεων 5. Σχόλια
οµήπρογράµµατος C (συν.) Παράδειγµα: Οδηγίες προεπεξεργαστή Σχόλια ήλωση σταθεράς Ορισµός κύριας συνάρτησης: main ήλωση µεταβλητών Ακολουθία εντολών
ΠαράδειγµαΠρογραµµατισµού Γράψετεέναπρόγραµµαπουνα µετατρέπεικυπριακέςλίρεςσεευρώ.
ΚατανόησηκαιΑρχικήΛύση Παράδειγµα: 10 λίρες, 1.73 ευρώστην λίρα >>>>>> 17.3 ευρώ εδοµένα (εισόδου): λίρες, rate εδοµένα (εξόδου): ευρώ Υπολογισµός:ευρώ = λίρες * rate
Υλοποίηση µε γλώσσα προγραµµατισµού (C) επεξεργαστή κειµένου /* programma poy metatrepei lires se euro */ main() { float lires, rate; /* inputs*/ float euro; /* output*/ euro = lires * rate; } Λείπει επικοινωνία με τον χρήστη
Υλοποίηση ΜεΕπικοινωνία /* programma poy metatrepei lires se euro */ #include <stdio.h> int main(){ float lires, rate; /* inputs*/ float euro; /* output*/ /* eisagwgh dedomenwn */ printf( Enter lires kai rate: ); scanf( %f%f,&lires, &rate); euro = lires * rate; /*exagwgh dedomenwn*/ printf( %.2f lires antistoixoun se %.2f euro\n,lires, euro); } return 0;
ΡοήΕλέγχου /* programma poy metatrepei lires se euro */ #include <stdio.h> #define RATE 1.71 int main(){ float lires; /* input*/ float euro; /* output*/ /* eisagwgh dedomenwn */ printf( Enter lires: ); scanf( %f,&lires); euro = lires * RATE; /*exagwgh dedomenwn*/ printf( %.2f lires antistoixoun se %.2f euro\n, lires, euro); } return 0;
Ροή εδοµένων /* programma poy metatrepei lires se euro */ #include <stdio.h> #define RATE 1.71 int main(){ float lires; /* input*/ float euro; /* output*/ /* eisagwgh dedomenwn */ printf( Enter lires: ); scanf( %f,&lires); euro = lires * RATE; /*exagwgh dedomenwn*/ printf( %.2f lires antistoixoun se %.2f euro\n, lires, euro); } return 0;
οκιµή: Mεταγλωττισµός, Εκτέλεση > gcc exchange.c o exchange > exchange Enter lires:100 100.00 lires antistoixoun se 171.00 euro > exchange Enter lires:5.5 5.50 lires antistoixoun se 9.58 euro > Κατακρίβειαν 9.576 αλλά επειδή ζητήσαµε µόνο 2 δεκαδικά ψηφία %.2f γι αυτόγίνεται στρογγυλοποίηση στο κοντινότερο δεκαδικό ( έστε αργότερα)
ΑποτέλεσµαΜεταγλωττισµού, Εκτέλεσης Τρέχει ορθά, πολύ ωραία αλλά µε επαλήθευση (εµπειρικά ή αναλυτικά) Αποτυχία στην µεταγλώττιση: λάθος σύνταξη (συντακτικά λάθη) Τρέχει µα παράγει λάθος αποτέλεσµα ή τρέχει µερικώς (crashes) Λογικάλάθη: αποσφαλµάτωση (debugging) ιαφοράµεταξύ: µεταγλωττίζει, τρέχει, ορθό
ΑξιολόγησηΛύσεων Ταχύτητα Ανάγκεςσεµνήµη Επεκτασιµότητα Ευκολία κατανοήσεως
Περίληψη Μεθοδολογία Προγραµµατισµού Περιγραφή προβλήµατος Ανάλυση προβλήµατος Σχεδιασµός αλγορίθµου Υλοποίηση (συγγραφή προγράµµατος) οκιµή και επαλήθευση Αξιολόγηση, συντήρηση και ενηµέρωση Αλγόριθµος / Ψευδοκώδικας / ιάγραµµα Ροής Αφαιρετικότητα Ροή Ελέγχου / εδοµένων
ΤέλοςΚεφαλαίου 2