ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΕισαγωγή στον Προγραμματισμό Διαφάνειες παρουσίασης #5 Παρουσίαση και συντήρηση (επανάληψη) Είσοδος και έξοδος Αρχεία κειμένου Ορθότητα
2Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Παρουσίαση και συντήρηση(i) u Ποιοτικά χαρακτηριστικά προγραμμάτων l Αναγνωσιμότητα απλότητα κατάλληλη επιλογή ονομάτων, π.χ. monthly_income incomeBeforeTaxes στοίχιση σχόλια l Φιλικότητα προς το χρήστη l Τεκμηρίωση l Συντήρηση l Ενημέρωση
3Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Παρουσίαση και συντήρηση(ii) u Στοίχιση l Πρόγραμμα και υποπρογράμματα program... procedure... function... δηλώσεις δηλώσεις δηλώσεις beginbeginbegin εντολές εντολές εντολές end.endend l Απλές εντολές if... thenwhile... dofor... do εντολή εντολή εντολή else εντολή
4Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Παρουσίαση και συντήρηση(iii) u Στοίχιση (συνέχεια) l Σύνθετες εντολές if... thenwhile... dofor... do beginbeginbegin εντολές εντολές εντολές endendend else begin εντολές end
5Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Παρουσίαση και συντήρηση(iv) u Στοίχιση (συνέχεια) l Σύνθετες εντολές (συνέχεια) repeatcase... ofwith... do εντολές τιμή 1 : εντολή 1 ; begin until... τιμή 2 : εντολή 2 ; εντολές... end τιμή n : εντολή n end
6Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Είσοδος και έξοδος u Συσκευές εισόδου/εξόδου u Είσοδος: εισαγωγή δεδομένων l π.χ. από το πληκτρολόγιο u Έξοδος: παρουσίαση αποτελεσμάτων l π.χ. στην οθόνη u Προκαθορισμένες διαδικασίες της Pascal read, readln write, writeln
7Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(i) u Έξοδος με μορφοποίηση
8Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(ii) u Έξοδος με μορφοποίηση (συνέχεια)
9Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(iii) u Συμβολοσειρές, χωρίς μορφοποίηση program stars(input, output); var i, j : integer; begin for i := 0 to 5 do begin for j := 1 to 2*i do write('*'); writeln('$') end end. $ **$ ****$ ******$ ********$ **********$
10Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(iv) u Ακέραιες τιμές, χωρίς μορφοποίηση program example(input, output); var x, y, sum : integer; begin x := 3; y := 6; sum := x + y; writeln(x, '+', y, '=', sum) end. 3+ 6=
11Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(v) u Ακέραιες τιμές, χωρίς μορφοποίηση program indent(input, output); begin writeln('x =', 42); writeln('y =', -324); writeln('z =', ) end. x = 42 y = -324 z =
12Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(vi) u Ακέραιες τιμές, με μορφοποίηση writeln(42:4) 3+6=9 42 u Το προηγούμενο παράδειγμα program example(input, output); var x, y, sum : integer; begin x := 3; y := 6; sum := x + y; writeln(x:0, '+', y:0, '=', sum:0) end.
13Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Έξοδος(vii) u Πραγματικές τιμές, με μορφοποίηση writeln( :8:4) Paris Moscow u Παράδειγμα program temperatures(input,output); var i : integer; par, mos : real; begin par := 20.5; mos := -4.3; writeln('Paris':10, par:6:1); for i:=1 to 14 do write('-'); writeln; writeln('Moscow':10, mos:6:1) end.
14Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Είσοδος(i) u Συντακτικό διάγραμμα
15Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Είσοδος(ii) u Αποθηκευτικός χώρος (buffer) l παρεμβάλλεται μεταξύ του πληκτρολογίου και του προγράμματος l εκεί αποθηκεύονται προσωρινά τα δεδομένα που πληκτρολογεί ο χρήστης μέχρι να διαβαστούν από το πρόγραμμα l η εισαγωγή στο buffer γίνεται με το πάτημα του πλήκτρου enter l αρχικά ο buffer είναι κενός u Παραδείγματα
16Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Είσοδος(iii) u Παράδειγμα program example5(input,output); var x, y, sum : integer; begin writeln('Θα προσθέσω δύο ακεραίους'); write('Δώσε το x και : '); read(x); write('Δώσε το y και : '); read(y); sum := x + y; writeln(x:0, '+', y:0, '=', sum:0) end.
17Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Είσοδος(iv) u Πρώτη εκτέλεση παραδείγματος Θα προσθέσω δύο ακεραίους Δώσε το x και : 3 Δώσε το y και : 6 3+6=9 u Δεύτερη εκτέλεση παραδείγματος Θα προσθέσω δύο ακεραίους Δώσε το x και : 3 6 Δώσε το y και : 3+6=9
18Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Αρχεία κειμένου(i) u Αρχεία εισόδου και εξόδου u Παράδειγμα με αρχείο εισόδου program test1(input, output, F); var f : text; begin reset(f);... read(f,...);... close(f) end.
19Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Αρχεία κειμένου(ii) u Παράδειγμα με αρχείο εξόδου program test2(input, output, G); var g : text; begin rewrite(g);... write(g,...);... close(g) end.
20Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Ορθότητα(i) u Είδη ορθότητας l Συντακτική l Νοηματική l Σημασιολογική u Σημασιολογική ορθότητα ελέγχεται: l με δοκιμές (testing) l με μαθηματική επαλήθευση
21Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Ορθότητα(ii) u Παράδειγμα: εύρεση γινομένου function mult(x,y : integer) : integer; var i,z : integer; begin z := 0; for i := 1 to x do z := z+y; mult := z end u Ισχυρισμός: l Η συνάρτηση υπολογίζει το γινόμενο δυο φυσικών αριθμών x και y
22Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Ορθότητα(iii) u Εντοπισμός σημείων όπου θα γραφούν βεβαιώσεις function mult(x,y : integer) : integer; var i,z : integer; begin (* 1 *) z := 0; (* 2 *) for i := 1 to x do (* 3 *) z := z+y (* 4 *) ; (* 5 *) mult := z end u Καταγραφή όλων των δυνατών τρόπων ροής ελέγχου
23Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Ορθότητα(iv) u Βεβαιώσεις (* 1 – Βεβαίωση εισόδου: x 0, y 0 *) z := 0; (* 2 : x 0, y 0, z = 0 *) for i:=1 to x do (* 3 – Αναλλοίωτη βρόχου: x 0, y 0, i x, z = y * (i-1) *) z := z+y (* 4 : x 0, y 0, z = y * i *) ; (* 5 – Βεβαίωση εξόδου: x 0, y 0, z = y * x *) mult := z u Επαλήθευση: για κάθε δυνατό τρόπο ροής 1 2, 2 3, 2 5, 3 4, 4 3, 4