Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ ΠΡΥ019 - Πληροφορική Δρ.Βάσος Βασιλείου
PASCAL Η PASCAL σχεδιάστηκε από τον Worth το 1968 στη Ζυρίχη, αρχικά σαν εργαλείο για τη διδασκαλία προγραμματισμού. Είναι γλώσσα για σειριακό προγραμματισμό.
Πλεονεκτήματα Απλή και εύκολη στην εκμάθηση Περιλαμβάνει ικανοποιητικό σύνολο εντολών ελέγχου Διαχειρίζεται πολλούς τύπους δεδομένων Είναι γλώσσα γενικού σκοπού Υπάρχουν μεταφραστές της PASCAL για τα περισσότερα υπολογιστικά συστήματα Ιδανική για διδασκαλία βασικών αρχών προγραμματισμού
ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΕΝΟΣ PASCAL ΠΡΟΓΡΑΜΜΑΤΟΣ Σύνολο χαρακτήρων Γράμματα : a. . Z , A. . Z Ψηφία : 0. .9 Ειδικά σύμβολα: + - * / : , . ΄= < > ( ) ^ .. { } [ ]
Λεξιλόγιο ονόματα αριθμοί χαρακτήρες αλυσίδες χαρακτήρων τελεστές διαχωριστές λέξεις κλειδιά
Ονόματα Αποτελούνται από ένα γράμμα που ακολουθείται από έναν ή οποιοδήποτε αριθμό γραμμάτων και ψηφίων π.χ. Value1, result, mkd, Το μήκος τους είναι μέχρι και 12 χαρακτήρες επιτρέπεται η χρήση του χαρακτήρα “_”, p.x. value_1, value_of_x δεν επιτρέπεται η χρήση ονομάτων με ειδική σημασία στην PASCAL
Αριθμοί ακέραιοι (integers). Ακολουθίες ψηφίων που μπορεί να προηγείται το πρόσημο + (προαιρετικό) ή - Οι τιμές είναι : [ -MAXINT,..-1,0,+1,..,+MAXINT ] MAXINT=32767
Πραγματικοί / real Αριθμοί αρνητικοί ή θετικοί που μπορεί να περιέχουν και δεκαδικά ψηφία. Περιέχουν υποδιαστολή ή είναι εκφρασμένοι σε εκθετική μορφή π.χ. 38Ε27 38x1027 -0,092Ε-19 -0,092x10-19
Χαρακτήρες είναι χαρακτήρες από το σύνολο των χαρακτήρων που υποστηρίζει το υπολογιστικό σύστημα μέσα σε αποστρόφους. Π.χ. ‘α’, ‘Α’, ‘&’, ‘4’ ‘5’ διαφέρει από το 5 ‘Α’ διαφέρει από το ‘α’ ‘ ‘ ο κενός χαρακτήρας
Αλυσίδες Χαρακτήρων Αλυσίδα χαρακτήρων (string) είναι μια ακολουθία χαρακτήρων μεταξύ αποστρόφων. Π.χ. ’algorithm’ , ‘Pascal Vers’, ‘5’ ‘236’, ‘5+2’
Τελεστές Είναι σύμβολα που δηλώνουν μια αριθμητική ή λογική πράξη μεταξύ αριθμητικών ή αλφαριθμητικών δεδομένων. Αριθμητικοί σύγκρισης λογικοί
Λογικοί Τελεστές
Διαχωριστές Είναι χαρακτήρες με συγκεκριμένη λειτουργία στην PASCAL. := καταχώρηση ( ) παρενθέσεις [ ] αγκύλες για τους πίνακες και τα σύνολα ,.;: σημεία στίξης
Δεσμευμένες Λέξεις And end array file begin for case function Nil set not then of to or type packed until procedure var program while record with repeat And end array file begin for case function const goto div if do in downto label else mod
Τύποι Δεδομένων integer : τα δεδομένα παίρνουν ακέραιες τιμές real : τα δεδομένα παίρνουν πραγματικές τιμές boolean : παίρνουν μόνο από τις δύο λογικές τιμές TRUE ή FALSE char : δέχονται σαν τιμές ένα χαρακτήρα π.χ. ‘a’ , ‘G’ , ‘4’ , ‘&’ string : αλυσίδα χαρακτήρων π.χ. ‘Monday’, ‘Στέφανος’
Εκφράσεις Σειρά προτεραιότητας NOT * / DIV MOD AND + - OR = <> > < >= <=
Αριθμητικές Συναρτήσεις ABS(num) abs(-2.54)=2.54 COS(num) EXP(num) FRAC(num) frac(3.78)=0.78 INT(num) int(3.78)=3.0 SQR(num) sqr(2)=4 SQRT(num) sqrt(9)=3
Βαθμωτές Συναρτήσεις PRED(num) π.χ. Pred(10)=9 ODD(num) -περιττός π.χ. Odd(7)=true SUCC(num) π.χ. Succ(10)=11
Συναρτήσεις Μετατροπής ORD(num) π.χ. (A,B,C,D,E,F) Ord(C)=2 ROUND(num) π.χ. Round(3.78)=4 TRUNC(num) π.χ. Trunc(3.78)=3
Δομή ενός προγράμματος PASCAL Επικεφαλίδα του προγράμματος Τμήμα Δηλώσεων επιγραφές, σταθερές, τύποι, μεταβλητές υποπρογράμματα Τμήμα προτάσεων
Επικεφαλίδα Προγραμματος PROGRAM όνομα (αρχείο1,..); π.χ. Program Factorial; Program Second_example; Program test(input,output);
Περιοχή Σταθερών CONST όνομα = τιμή; π.χ. CONST meres=5; pi=3.14159; flag=true; aster=‘*’;
Περιοχή Τύπων TYPE όνομα = σύνολο τιμών; π.χ. TYPE day=(Mon,Tues,Wed); number=integer; color=(blue,red,green); DayNum=1..31;
Περιοχή Μεταβλητών VAR όνομα : τύπος δεδομένων; π.χ. VAR letter:char; aktina:real; ok:boolean; mikos:integer; weekday:day;
Τελεστής Ανάθεσης Όνομα μεταβλητής:= έκφραση; π.χ. a:=5+2; b:=4.1*2; c:=‘F’; x:=3>1;
Εντολή READ Εισαγωγή τιμών από τη μονάδα εισόδου και ανάθεση τους σε μεταβλητές READ(input,v1,v2,..vn) ή READ(v1,v2,..vn); π.χ. READ(x); READ(a,b);
Εντολή READLN Η επόμενη εισαγωγή δεδομένων γίνεται από την αρχή της επόμενης σειράς δεδομένων . READLN(input,v1,v2,..vn) ή READLN(v1,v2,..vn); π.χ. READLN(x); READLN(a,b);
Παράδειγμα της READLN Δεδομένα: 23 4 7 10 8 79 6 84 91 30 Δεδομένα: 23 4 7 10 8 79 6 84 91 30 readln(a,b);readln(c);readln(d,e); αποτέλεσμα: a=23, b=4, c=10, d=84, e=91
Μεταφέρει δεδομένα στη μονάδα εξόδου WRITE(output,v1,v2,..vn) ή WRITE(v1,v2,..vn); π.χ. WRITE(x); WRITE(a,b); WRITE(‘a=‘,a,’b=‘,b,’sum=‘,a+b);
Εντολή WRITELN Η επόμενη εντολή εξόδου θα ξεκινήσει την εγγραφή δεδομένων στη νέα σειρά WRITELN(output,v1,v2,..vn) ή WRITELN(v1,v2,..vn); π.χ. WRITELN(x); WRITELN(a,b); WRITELN; κενή γραμμή
Παράδειγμα της WRITELN writeln(5 div 2, 5 mod 2); αποτέλεσμα: 7 3 10 2 1
Program όνομα; const δήλωση σταθεράς..δήλωση σταθ; type δήλωση τύπου..δήλωση τύπου; var δήλωση μεταβλητής..δήλ.μεταβλ ; ορισμοί διαδικασιών και συναρτήσεων begin πρόταση ..πρόταση; end.
Παράδειγμα προγράμματος στην PASCAL επικεφαλίδα Program sum_dif(input,output); var x,y,sum,dif:integer; begin read(x,y); sum:=x+y; dif:=x-y; writeln(‘άθροισμα=‘,sum); writeln(‘διαφορά=‘,dif); end. δηλώσεις προτάσεις