ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 13 : Τύποι Δεδοµένων Κατηγορίες τύπων 1. Κατηγορίες τύπων δεδοµένων Τι είναι τύπος δεδοµένων Τιµές µεταβλητών σταθερών και πράξεις Βασικοί τύποι δεδοµένων της Pascal Integer Real Boolean - Char Integer (Τυπική περιγραφή) Μαθηµατικά : Ακέραιοι : έως + Pascal : Ακέραιοι : -MaxInt έως MaxInt (υποσύνολο ακεραίων) Πράξεις : + - / mod div < = > Real (Τυπική περιγραφή) Μαθηµατικά : Πραγµατικοί : έως + Pascal : Πραγµατικοί : υποσύνολο πραγµατικών (εύρος και ακρίβεια [πλήθος δεκαδικών] ανάλογα µε τον τύπο του υπολογιστή και το compiler) Πράξεις : + - < = > ΟΧΙ DIV και MOD Boolean (Τυπική περιγραφή) Άλγεβρα Boole : True - False Πράξεις : AND OR NOT < = > Char (Τυπική περιγραφή) Το σύνολο χαρακτήρων που µπορεί να αναπαραστήσει ο υπολογιστής Pascal : ASCII ιάταξη : A<B<C<D.και Πράξεις : < = > Μονόµετροι ή βαθµωτοί τύποι (scalar data types) Pascal : Integer, Real, Boolean, Char 1. Αδιαίρετα ή ατοµικά στοιχεία (atomic) 2. Διατεταγµένος (ordered) Τακτικοί τύποι (ordinal data types) Pascal : Integer, Boolean, Char Μοναδική προηγούµενη επόµενη τιµή (εκτός από πρώτη και τελευταία τιµή) π.χ. O MaxInt δεν έχει προηγούµενο και ο MaxInt δεν έχει επόµενο Real : 56.97-56.98 56.99 56.979-56.980-56.981 1
1.1. Απλοί και σύνθετοι τύποι δεδοµένων Απλοί τύποι δεδοµένων Οι τιµές των δεδοµένων είναι ατοµικές (µοναδικές). Π.χ. Βαθµωτοί τύποι Σύνθετοι τύποι δεδοµένων (δοµές δεδοµένων) Η τιµή ενός δεδοµένου είναι µια ενότητα (συλλογή) τιµών απλού τύπου. Κατασκευάζονται από απλούς τύπους. Π.χ. String Με δόµηση (structured) (συλλογή στοιχείων µε κάποια σχέση : πίνακες. αρχεία) Χωρίς δόµηση (unstructured) (συλλογή στοιχείων : εγγραφή, σύνολα) Στατικές δοµές δεδοµένων Το πλήθος των στοιχείων που αποτελούν τη δοµή είναι σταθερό και καθορίζεται από τη δήλωση του τύπου (π.χ. πίνακας) Δυναµικές δοµές δεδοµένων Το πλήθος των στοιχείων της δοµής καθορίζεται κατά τη διάρκεια της εκτέλεσης του προγράµµατος. 2. Παραδείγµατα Παρακάτω δίνονται παραδείγµατα προγραµµάτων Pascal όπου φαίνονται οι ιδιότητες των διαφορετικών κατηγοριών τύπων δεδοµένων. (Υλικό Μαθήµατος Εργαστηριακές ραστηριότητες Κεφάλαιο 13 Κεφ_13_01.zip) Παράδειγµα 01 (Integer) Στο πρόγραµµα akeraioi που δίνεται παρακάτω τυπώνονται ο µεγαλύτερος (MaxInt) και ο µικρότερος (-MaxInt) ακέραιος αριθµός που µπορεί να αναπαρασταθεί από την Pascal, το εύρος των ακεραίων και παρουσιάζεται η λειτουργία των πράξεων div και mod. Αρχείο Παράδειγµα_01.pas program akeraioi(input,output); var x,y:integer; writeln('maxint : ',MaxInt); writeln('-maxint : ',-MaxInt); writeln('εύρος ακεραίων : ',-MaxInt, '...',MaxInt); x:=130; y:=33; writeln('x = ',x); writeln('y = ',y); writeln('x div y = ',x div y); writeln('x mod y = ',x mod y); 2
MaxInt : 32767 -MaxInt : -32767 Εύρος ακεραίων : -32767...32767 x = 130 y = 33 x div y = 3 x mod y = 31 Παράδειγµα 02 (Boolean) Στο πρόγραµµα logikoi που δίνεται παρακάτω τυπώνεται καταρχήν ο πίνακας αλήθειας των πράξεων AND OR και NOT που µπορούν να γίνουν µεταξύ τιµών τύπου Boolean. Στη συνέχεια δείχνεται ότι οι πράξεις συσχέτισης (που εδώ εφαρµόζονται µεταξύ ακεραίων) έχουν αποτέλεσµα τύπου Boolean. Τέλος δείχνεται ότι οι πράξεις συσχέτισης µπορούν να εφαρµοστούν και µεταξύ τιµών τύπου Boolean και διαπιστώνουµε ότι ισχύει FALSE < TRUE. Αρχείο Παράδειγµα_02.pas program logikoi(input,output); var X,Y:boolean; a,b,c:integer; writeln('x':10,'y':10,'not X':10,'X AND Y':10,'X OR Y':10); for X := FALSE to TRUE do for Y := FALSE to TRUE do writeln(x:10,y:10,not X:10,X AND Y:10, X OR Y:10); end; a:=130; b:=33; c:=130; writeln('a = ',a); writeln('b = ',b); writeln('c = ',c); writeln('a > b έχει αποτέλεσµα ',a > b); writeln('a < b έχει αποτέλεσµα ',a < b); writeln('a = b έχει αποτέλεσµα ',a = b); writeln('a = c έχει αποτέλεσµα ',a = c); X:=true; Y:=false; writeln(); writeln(x,' < ',Y,' έχει αποτέλεσµα ',X<Y); writeln(x,' > ',Y,' έχει αποτέλεσµα ',X>Y); writeln(x,' = ',Y,'έχει αποτέλεσµα ',X=Y); writeln(x,' = ',X,' έχει αποτέλεσµα ',X=X); 3
X Y not X X AND Y X OR Y FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE a = 130 b = 33 c = 130 a > b έχει αποτέλεσµα TRUE a < b έχει αποτέλεσµα FALSE a = b έχει αποτέλεσµα FALSE a = c έχει αποτέλεσµα TRUE TRUE < FALSE έχει αποτέλεσµα FALSE TRUE > FALSE έχει αποτέλεσµα TRUE TRUE = FALSEέχει αποτέλεσµα FALSE TRUE = TRUE έχει αποτέλεσµα TRUE Παράδειγµα 03 (Char) Στο πρόγραµµα charaktires που δίνεται παρακάτω δείχνεται η σχέση ισότητα ανισότητας µεταξύ διαδοχικών γραµµάτων του ελληνικού αλφαβήτου και µπορούµε να διακρίνουµε τη διάταξή τους στο σύνολο χαρακτήρων του υπολογιστή µας (Α<Β<Γ< <Χ<Ψ<Ω) Αρχείο Παράδειγµα_03.pas program xharaktires(input,output); var i,j:char; j := 'Α'; for i:= 'Β' to 'Ω' do writeln(j, ' < ', i, ' : ', j<i); j:=i; end; Α < Β : TRUE Β < Γ : TRUE Γ < : TRUE < Ε : TRUE Ε < Ζ : TRUE Ζ < Η : TRUE Η < Θ : TRUE Θ < Ι : TRUE Ι < Κ : TRUE Κ < Λ : TRUE Λ < Μ : TRUE Μ < Ν : TRUE 4
Ν < Ξ : TRUE Ξ < Ο : TRUE Ο < Π : TRUE Π < Ρ : TRUE Ρ < : TRUE < Σ : TRUE Σ < Τ : TRUE Τ < Υ : TRUE Υ < Φ : TRUE Φ < Χ : TRUE Χ < Ψ : TRUE Ψ < Ω : TRUE 5