Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο χαρακτήρων της γλώσσας) Αλφαριθµητικός χαρκακτήρας Ονόµατα Ταυτότητες (identifiers) κανόνες σχηµατισµού ονοµάτων Σχόλια Τύπος δεδοµένων Ο ρόλος των τύπων δεδοµένων σε ένα πρόγραµµα Pascal Ποιοι είναι οι στοιχειώδεις (απλοί) τύποι δεδοµένων στην Pascal Τι είναι οι σύνθετοι τύποι δεδοµένων στην Pascal Ακέραιος (Integer) - Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Πραγµατικός (Real) - Αναπαράσταση πραγµατικής τιµής: - Πότε χρησιµοποιούµε τον τύπο real: - Εύρος πραγµατικών αριθµών: - Τύποι πραγµατικών αριθµών: - Πράξεις µε πραγµατικούς: Αριθµητικές εκφράσεις: - Προτεραιότητα πράξεων: Λογικός (Boolean) - Τιµές λογικού τύπου: - Πότε χρησιµοποιείται ο πραγµατικός τύπος: - Λογικές πράξεις (τελεστές): - Λογικές παραστάσεις (εκφράσεις): - Συσχέτιση και σχεσιακοί τελεστές: - Προτεραιότητα λογικών πράξεων: (προσοχή στο συνδυασµό συσχετίσεων και λογικών πράξεων) 1
Χαρακτήρας (char) Αλφαριθµητικός τύπος (string) - Τιµές αλφαριθµητικού τύπου: - Μήκος string κενό string: Δοµή προγράµατος 2. Υποδείξεις - Συµβουλές Ονόµατα Κάθε µεταβλητή σταθερά υποπρόγραµµα πρέπει να δηλωθεί µε ένα όνοµα Κανόνες σύνταξης ονοµάτων Κάθε όνοµα γράφετε µε µικρά ή κεφαλαία γράµµατα του λατινικού αλφαβήτου και αριθµούς. Η Pascal δεν κάνει διάκριση µεταξύ µικρών και κεφαλαίων. Τα παρακάτω ονόµατα είναι ίδια στην Pascal o Aktina o aktina o AkTiNa o aktina o Integer o integer o integer o InTeGeR o input o Input o input o INPUT Δηλώσεις Συντακτικό Μπορεί να χρησιµοποιηθεί ο χαρακτήρας _ (Turbo Pascal) αλλά δεν µπορεί να είναι ο τελευταίος Ο πρώτος χαρακτήρας πρέπει να είναι υποχρεωτικά γράµµα. Κάθε όνοµα αναφέρεται σε ένα µόνον αντικείµενο του προγράµµατος. Δεν µπορείς να δηλώσεις δύο διαφορετικές µεταβλητές ή σταθερές µε το ίδιο όνοµα. Δεν µπορείς να χρησιµοποιήσεις σαν ονόµατα λεξικά σύµβολα της Pascal. Μπορείς να χρησιµοποιήσεις προσηλωµένα ονόµατα της Pascal ως ονόµατα δικών σου µεταβλητών αλλά µε παρενέργειες. Κάθε όνοµα θα πρέπει να έχει σχέση µε το αντικείµενο που παριστάνει προκειµένου να είναι πιο ευανάγνωστο το πρόγραµµα. Στο τέλος της επικεφαλίδας του προγράµµατος βάζουµε ; (ελληνικό ερωτηµατικό) Στο τέλος κάθε δήλωσης (σταθερά µεταβλητή) βάζουµε το χαρακτήρα ; (ελληνικό ερωτηµατικό) Οι λέξεις begin και end δεν είναι εντολές. Μπορούµε να τις θεωρήσουµε σαν δύο παρενθέσεις που περικλείουν εντολές. Ο χαρακτήρας ; (ελληνικό ερωτηµατικό) χωρίζει µεταξύ τους δύο διαδοχικές εντολές. 2
ΕΠΑ.Λ Χρυσούπολης Στο τέλος κάθε εντολής βάζουµε το χαρακτήρα ; (ελληνικό ερωτηµατικό) Ο χαρακτήρας ; (ελληνικό ερωτηµατικό) µπορεί να παραλείπεται στο τέλος µιας εντολής αν την εντολή ακολουθεί end (αφού το end δεν είναι εντολή). Μεταξύ δύο διαδοχικών εντολών (εκτός του ;) µπορεί να υπάρχουν οσαδήποτε κενά ή αλλαγές γραµµής. Το end που ορίζει το τέλος του κυρίως προγράµµατος ακολουθείται από. (τελεία) Το end που ορίζει το τέλος µιας σύνθετης (compound) εντολής ακολουθείται από ; (ελληνικό ερωτηµατικό) 3. Ειδικά σύµβολα, λεξικά σύµβολα και προδηλωµένα ονόµατα της Turbo Pascal 3.1. Ειδικά σύµβολα + ; 3.2. * ( / ) = <> < <= > >= [ := ]... @, : Λεξικά σύµβολα absolute and array begin case const div do downto else end file for function goto if implementation in interface interrupt label mod nil not of or packed procedure program record repeat set shl shr string then to type unit until uses var while with xor 3.3. Προδηλωµένα ονόµατα 3
4. Ασκήσεις 1. Ποια από τα παρακάτω είναι επιτρεπτά ονόµατα στην Pascal και ποια όχι; Δικαιολογήστε την απάντησή σας Όνοµα Επιτρεπτό (ΝΑΙ/ΟΧΙ) ΑΙΤΙΟΛΟΓΙΑ 1 Name s ΟΧΙ Έχει ' 2 Elem_Mumber ΝΑΙ 3 Elem-mumber ΟΧΙ - 4 Elem number ΟΧΙ κενό 5 1k ΟΧΙ ξεκινάει µε αριθµό 6 K1 ΝΑΙ 7 For ΟΧΙ Λεξικό σύµβολο 8 ForNumbers ΝΑΙ 9 F10k2 ΝΑΙ 10 alpaha ΟΧΙ ' 11 Var ΟΧΙ Λεξικό σύµβολο 12 a*b ΟΧΙ * 13 800.1 ΟΧΙ. 14 Num(1) ΟΧΙ () 15 NuM_1 ΝΑΙ 16 num_1 ΝΑΙ 2. Ποιοι από τους παρακάτω αριθµούς είναι Integer, ποιοι είναι Real και ποιοι τίποτα από τα δύο Integer/Real 1 322767 I 2-56700.0 R 3 0,0 4 3,14 5 7x10 3 6 19. 7 1A9 8 5.67e4 R 3. Ποιες από τις παρακάτω παραστάσεις είναι αποδεκτές (συντακτικά) από τη Pascal και τι τύπου αποτέλεσµα δίνουν; Παράσταση ΔΕΚΤΗ? (ναι / όχι Τύπος αποτελέσµατος 1 8.1+6 NAI REAL 2-10 mod 2 NAI Integer 3 8/3 NAI real 4 3*5.18 NAI real 5 8 div 3 NAI Integer 6 10.5 div 3 OXI 7 8.75/6.0 NAI real 4
8 20 mod 3.2 OXI 9 1.0 7 DIV 3 NAI real 10 17 MOD 6/3 NAI real 4. Να υπολογίσετε την τιµή των παρακάτω αριθµητικών εκφράσεων α. 2 * 4 3 * 5 + 8 div 2 =-3 β. 20MOD3*4 =8 γ. 6*3/2*4 =36 δ. 6*3/(2*3)=3 ε. 6+3/(2*3)=6.5 5. Ποιες από τις παρακάτω εκφράσεις αποδίδουν σωστά το αποτέλεσµα της παράστασης 1 15 7 y α. 15 / ( 7 y ) β. 15 / 7 y γ. (1 / 7 y ) * 15 δ. 1 / ( 7 y ) * 15 ε. 1 / ( ( 7 y ) * 15 ) 6. Να βρεθεί το αποτέλεσµα των παρακάτω εκφράσεων, αν είναι Χ = 2 Υ = 3 και Α = True α. (Χ > 0) AND (Χ =< 2) = True AND True = True β. (Χ <> Υ) OR NOT (Χ = Υ) AND Α = True OR NOT False AND True = True OR True AND True = True OR True = True γ. (Χ < Υ) AND (((Υ Χ) > 0) OR NOT Α) = True AND ((1 > 0) OR False) = True AND (True OR False) = True AND True = True 7. Μια εταιρία κρατάει αποθηκευµένα το ΟΝΟΜΑ, το ΤΜΗΜΑ, την ΗΛΙΚΙΑ και το ΜΙΣΘΟ των υπαλλήλων της. Να δώσετε τις λογικές εκφράσεις που εκφράζουν τις παρακάτω προτάσεις α. ΗΛΙΚΙΑ µεγαλύτερη από 25 ΗΛΙΚΙΑ > 25 β. ΗΛΙΚΙΑ όχι µεγαλύτερη από 30 και ΜΙΣΘΟ όχι µικρότερο από 200000 (ΗΛΙΚΙΑ <= 30) AND (ΜΙΣΘΟ >= 200000) γ. ΟΝΟΜΑ ΑΝΤΩΝΙΟΥ και δουλεύουν στο τµήµα ΜΗΧΑΝΟΡΓΑΦΗΣΗ (ΟΝΟΜΑ = 'ΑΝΤΩΝΙΟΥ') AND (ΤΜΗΜΑ = 'ΜΗΧΑΝΟΓΡΑΦΗΣΗ') δ. ΜΙΣΘΟ όχι µικρότερο από 1000 και δεν δουλεύουν στο τµήµα ΓΡΑΜΜΑΤΕΙΑ 5
(ΜΙΣΘΟ >= 1000) AND (ΤΜΗΜΑ <> 'ΓΡΑΜΜΑΤΕΙΑ') 8. Αντιστοιχίστε τα στοιχεία της πρώτης στήλης σε καθένα από τους παρακάτω τρεις πίνακες µε αυτά της δεύτερης Τιµή Τύπος Δεδοµένων 1. 345 α. Αλφαριθµητικός (string) 2. 'Αληθής' 3. False β. Αριθµητικός (ακέραιος, πραγµατικός) γ. Λογικός 4. -15.3 1 β, 2 α, 3 γ, 4 β Τελεστές 1. > 2. MOD 3. * 4. ΝΟΤ Σύµβολα α. αριθµητικός β. λογικός γ. σχεσιακός 1γ 2α, 3α, 4β Σύµβολο τελεστή Είδος τελεστή 1. MOD α. Σχεσιακός τελεστής 2. * β. Λογικός τελεστής 3. + γ. Αριθµητικός τελεστής 4. > 5. AND 6. = 7.OR 8. < > 1γ, 2γ, 3γ, 4α, 5β,6α, 7β, βα 9. Ποιο είναι το λάθος σε κάθε µια από τις παρακάτω δηλώσεις µεταβλητών var div:real; 6
X:Integer; var Integer:Real; X:Integer; var Α-1:Real; 7