Ποιοι τύποι μεταβλητών χρησιμοποιούνται στο pascal. Τύποι δεδομένων σε Pascal (μεταβλητές, σταθερές), τύποι και περιγραφή τους

Οι τακτικοί τύποι περιλαμβάνουν (βλ. Εικόνα 4.1) τύπους ακέραιων, λογικών, χαρακτήρων, απαριθμημένων και εύρους. Η συνάρτηση ORD(X) είναι εφαρμόσιμη σε οποιαδήποτε από αυτές, η οποία επιστρέφει τον τακτικό αριθμό της τιμής της παράστασης X. Για ακέραιους τύπους, η συνάρτηση ORD(X) επιστρέφει την τιμή του ίδιου του X, δηλ. ORD(X) = X για X που ανήκει σε οποιοδήποτε τύπο κελύφους. Η εφαρμογή του ORD(X) σε τύπους boolean, χαρακτήρων και απαρίθμησης παράγει έναν θετικό ακέραιο αριθμό στο εύρος 0 έως 1 (boolean), 0 έως 155 (χαρακτήρας), 0 έως 65535 (απαρίθμηση). Ένας τύπος εύρους διατηρεί όλες τις ιδιότητες του υποκείμενου τακτικού τύπου, επομένως το αποτέλεσμα της εφαρμογής της συνάρτησης ORD(X) σε αυτόν εξαρτάται από τις ιδιότητες αυτού του τύπου.

Μπορείτε επίσης να εφαρμόσετε συναρτήσεις σε τακτικούς τύπους:

PRED (X) - επιστρέφει την προηγούμενη τιμή του τακτικού τύπου (την τιμή που αντιστοιχεί στον τακτικό αριθμό ORD(X) - 1), δηλ.

ORD(PRED(X)) = ORD(X) - 1;

SUCC (X) - επιστρέφει την επόμενη τακτική τιμή που ταιριάζει με τον τακτικό αριθμό ORD(X) +1, δηλ.

ORD(SUCC(X)) = ORD(X) + 1.

Για παράδειγμα, εάν ένα πρόγραμμα ορίζει μια μεταβλητή

τότε η συνάρτηση PRED(C) θα επιστρέψει την τιμή "4", και η συνάρτηση SUCC(C) θα επιστρέψει την τιμή "6".

Αν φανταστούμε οποιονδήποτε τακτικό τύπο ως ένα διατεταγμένο σύνολο τιμών, που αυξάνεται από αριστερά προς τα δεξιά και καταλαμβάνει ένα συγκεκριμένο τμήμα στον άξονα αριθμών, τότε η συνάρτηση PRED(X) δεν ορίζεται για τα αριστερά και η SUCC(X) για το δεξί τέλος αυτού του τμήματος.

Ολόκληροι τύποι. Το εύρος των πιθανών τιμών των ακέραιων τύπων εξαρτάται από την εσωτερική τους αναπαράσταση, η οποία μπορεί να είναι ένα, δύο ή τέσσερα byte. Στον πίνακα Το 4.1 δείχνει το όνομα των τύπων ακεραίων, το μήκος της εσωτερικής αναπαράστασής τους σε byte και το εύρος των πιθανών τιμών.

Πίνακας 4.1

Όταν χρησιμοποιείτε διαδικασίες και συναρτήσεις με ακέραιες παραμέτρους, θα πρέπει να καθοδηγηθείτε από την «φωλιοποίηση» των τύπων, π.χ. Όπου μπορεί να χρησιμοποιηθεί το WORD, μπορεί να χρησιμοποιηθεί BYTE (αλλά όχι το αντίστροφο), το LONGINT "περιλαμβάνει" ΑΚΕΡΑΙΟΣ, το οποίο, με τη σειρά του, περιλαμβάνει SHORTINT.

Ο κατάλογος των διαδικασιών και των συναρτήσεων που ισχύουν για ακέραιους τύπους δίνεται στον Πίνακα 4.2. Γράμματα b, s, w, i, lΟι εκφράσεις του τύπου BYTE, SHORTINT, WORD, INTEGER και LONGINT ορίζονται αντίστοιχα, το x είναι μια έκφραση οποιουδήποτε από αυτούς τους τύπους. γράμματα vb, vs, vw, vi, vl, vxδηλώνουν μεταβλητές των αντίστοιχων τύπων. Μια προαιρετική παράμετρος υποδεικνύεται σε αγκύλες.

Πίνακας 4.2

Τυπικές διαδικασίες και λειτουργίες που ισχύουν για ολόκληρους τύπους
Εφεση Τύπος αποτελέσματος Δράση
κοιλιακοί (x) Χ Επιστρέφει την ενότητα x
chr(b) Απανθρακώνω Επιστρέφει έναν χαρακτήρα από τον κωδικό του
dec(vx[, i]) - Μειώνει την τιμή του vx κατά i και ελλείψει i - κατά 1
inc(vx[, i]) - Αυξάνει την τιμή του vx κατά i και ελλείψει i - κατά 1
Γεια (i) Ψηφιόλεξη Επιστρέφει το υψηλό byte του ορίσματος
Γεια σου Ιδιο Ιδιο
Lo(i) " Επιστρέφει το χαμηλό byte του ορίσματος
Χαμηλός) " Ιδιο
περίεργο(l) Boolean Επιστρέφει True εάν το όρισμα είναι περιττός αριθμός
Τυχαία (w) Το ίδιο με την παράμετρο Επιστρέφει έναν ψευδοτυχαίο αριθμό ομοιόμορφα κατανεμημένο στο εύρος 0...(w-l)
sgr(x) Χ Επιστρέφει το τετράγωνο του επιχειρήματος
swap(i) Ακέραιος αριθμός Ανταλλάσσει byte με μια λέξη
swap(w) Λέξη

Όταν λειτουργούμε με ακέραιους αριθμούς, ο τύπος του αποτελέσματος θα αντιστοιχεί στον τύπο των τελεστών και εάν οι τελεστές είναι διαφορετικών ακέραιων τύπων, ο τύπος του τελεστή που έχει τη μέγιστη ισχύ (μέγιστο εύρος τιμών). Πιθανή υπερχείλιση του αποτελέσματος δεν ελέγχεται με κανέναν τρόπο, γεγονός που μπορεί να οδηγήσει σε παρεξηγήσεις, για παράδειγμα:

a:= 32767; (Μέγιστη δυνατή τιμή INTEGER)

x:= a + 2; (Υπερχείλιση κατά την αξιολόγηση αυτής της έκφρασης !}

y:= LongInt(a)+2; (Καμία υπερχείλιση μετά τη ρίψη της μεταβλητής σε πιο ισχυρό τύπο)

WriteLn(x:10:0, y:10:0)

Ως αποτέλεσμα της εκτέλεσης του προγράμματος παίρνουμε

Τύπος Boolean. Οι τιμές Boole μπορεί να είναι μία από τις προ-δηλωμένες σταθερές FALSE ή TRUE. Οι κανόνες ισχύουν για αυτούς:

Ψευδής< True;

succ(Λάθος)= Σωστό;

pred(True) = Λάθος.

Δεδομένου ότι ο τύπος Boolean είναι ένας τακτικός τύπος, μπορεί να χρησιμοποιηθεί σε έναν μετρήσιμο τελεστή τύπου, για παράδειγμα:

για 1:= Λάθος έως Σωστό κάνε ....

Τύπος χαρακτήρα.Η τιμή ενός τύπου χαρακτήρα είναι το σύνολο όλων των χαρακτήρων του υπολογιστή. Σε κάθε χαρακτήρα εκχωρείται ένας ακέραιος αριθμός στην περιοχή 0...255. Αυτός ο αριθμός χρησιμεύει ως ο κωδικός για την εσωτερική αναπαράσταση του συμβόλου που επιστρέφεται από τη συνάρτηση ORD.

Ο κωδικός ASCII χρησιμοποιείται για την κωδικοποίηση ( Αμερικανικός τυποποιημένος κώδικας ανταλλαγής πληροφοριών- Αμερικανικός τυποποιημένος κώδικας ανταλλαγής πληροφοριών). Αυτός είναι ένας κωδικός 7-bit, δηλ. μπορεί να κωδικοποιήσει μόνο 128 χαρακτήρες στην περιοχή από 0 έως 127. Ταυτόχρονα, στο byte των 8 bit που διατίθεται για την αποθήκευση ενός χαρακτήρα στο Turbo Pascal, μπορείτε να κωδικοποιήσετε διπλάσιο αριθμό χαρακτήρων στην περιοχή από 0 έως 255. Το πρώτο μισό των χαρακτήρων PC με κωδικούς 0...127 αντιστοιχεί στο πρότυπο ASCII (Πίνακας 4.3). Το δεύτερο μισό των χαρακτήρων με κωδικούς 128...255 δεν περιορίζεται από το άκαμπτο πλαίσιο του προτύπου και μπορούν να αλλάξουν σε διαφορετικούς τύπους υπολογιστών (το Παράρτημα 2 δείχνει μερικές κοινές επιλογές κωδικοποίησης για αυτούς τους χαρακτήρες).

Πίνακας 4.3

Κωδικοποίηση χαρακτήρων σύμφωνα με το πρότυπο ASCII
Κώδικας Σύμβολο Κώδικας Σύμβολο Κώδικας Σύμβολο Κώδικας Σύμβολο
NUL B.L. ® "
ΖΩΝ ! ΕΝΑ ένα
STX " ΣΕ σι
ETX # ΜΕ Με
ΕΟΤ $ ρε ρε
ENQ % μι μι
ΠΑΡΑΚΑΛΩ & φά φά
BEL " σολ σολ
B.S. ( H η
NT ) Εγώ Εγώ
LF * J ι
VT + κ κ
FF , μεγάλο Εγώ
CR - Μ Μ
ΕΤΣΙ . Ν n
ΣΙ. / ΣΧΕΤΙΚΑ ΜΕ
ΔΕΛ Π Π
DC1 Q q
DC2 R r
DC3 μικρό μικρό
DC4 Τ t
Ν.Α.Κ. U u
ΣΥΝ V V
ETB w w
ΜΠΟΡΩ Χ Χ
Η Ε.Μ. U U
ΥΠΟ : z z
ESC / [ {
FS < \ μεγάλο
Γ.Σ. = ] }
R.S. > ^ ~
ΜΑΣ ? - n

Οι χαρακτήρες με κωδικούς 0...31 αναφέρονται σε κωδικούς υπηρεσίας. Εάν αυτοί οι κωδικοί χρησιμοποιούνται στο κείμενο χαρακτήρων του προγράμματος, θεωρούνται κενά. Όταν χρησιμοποιούνται σε λειτουργίες I/O, μπορούν να έχουν την ακόλουθη ανεξάρτητη σημασία:

Σύμβολο Κώδικας Εννοια
BEL Κλήση; Η εμφάνιση αυτού του συμβόλου συνοδεύεται από ηχητικό σήμα
NT Οριζόντιος πίνακας; όταν εμφανίζεται στην οθόνη, μετακινεί τον κέρσορα σε μια θέση που είναι πολλαπλάσιο του 8 συν 1 (9, 17, 25, κ.λπ.)
LF Γραμμική μετάφραση; όταν εμφανίζεται στην οθόνη, όλοι οι επόμενοι χαρακτήρες θα εξάγονται ξεκινώντας από την ίδια θέση, αλλά στην επόμενη γραμμή
VT Κάθετη καρτέλα? όταν εμφανίζεται στην οθόνη, αντικαθίσταται με έναν ειδικό χαρακτήρα
FF Εκτέλεση σελίδας. όταν εξάγεται σε έναν εκτυπωτή, σχηματίζει μια σελίδα όταν εξάγεται στην οθόνη, αντικαθίσταται με έναν ειδικό χαρακτήρα
CR Επιστροφή μεταφοράς; εισάγεται πατώντας το πλήκτρο Enter (όταν εισάγεται χρησιμοποιώντας READ ή READLN, σημαίνει την εντολή "Enter" και δεν τοποθετείται στην προσωρινή μνήμη εισόδου, όταν εξέρχεται, σημαίνει την εντολή "Συνέχεια εξόδου από την αρχή της τρέχουσας γραμμής")
ΥΠΟ Τέλος αρχείου. εισάγεται από το πληκτρολόγιο πατώντας Ctrl-Z. όταν βγαίνει αντικαθίσταται με ειδικό σήμα
SSC Τέλος εργασίας; εισάγεται από το πληκτρολόγιο πατώντας το πλήκτρο ESC. όταν βγαίνει αντικαθίσταται με ειδικό σήμα

Οι σχεσιακές λειτουργίες, καθώς και οι ενσωματωμένες συναρτήσεις, ισχύουν για τον τύπο CHAR: СНR(В) - συνάρτηση τύπου CHAR. μετατρέπει μια έκφραση Β τύπου BYTE σε χαρακτήρα και την επιστρέφει με την τιμή της.

UPCASE(CH) - Λειτουργία τύπου CHAR. επιστρέφει το κεφαλαίο γράμμα εάν το CH είναι πεζό λατινικό γράμμα, διαφορετικά επιστρέφει τον ίδιο τον χαρακτήρα CH, για παράδειγμα:

cl:= UpCase("s");

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Εφόσον η συνάρτηση UPCASE δεν επεξεργάζεται κυριλλικά, το αποτέλεσμα της εκτέλεσης αυτής

τα προγράμματα θα εμφανιστούν στην οθόνη

Τύπος Enum. Ένας απαριθμημένος τύπος καθορίζεται από μια απαρίθμηση των τιμών που μπορεί να λάβει. Κάθε τιμή ονομάζεται από κάποιο αναγνωριστικό και βρίσκεται σε μια λίστα που περιβάλλεται από παρενθέσεις, για παράδειγμα:

χρώματα =(κόκκινο, λευκό, μπλε);

Η χρήση απαριθμημένων τύπων κάνει τα προγράμματα πιο οπτικά. Εάν, για παράδειγμα, το πρόγραμμα χρησιμοποιεί δεδομένα που σχετίζονται με τους μήνες του έτους, τότε το ακόλουθο τμήμα του προγράμματος:

TypeMonth=(Ιαν, Φεβ, Μάρτιος, Απρίλιος, Μάιος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπ, Οκτώβριος, Νοέμβριος, Δεκέμβριος);

μήνας: ΤύποςΜήνας;

αν μήνας = Αύγουστος τότε WriteLn("Θα ήταν ωραίο να πάμε στη θάλασσα!");

Θα ήταν, βλέπετε, πολύ ξεκάθαρο. Αλίμονο! Στο Turbo Pascal δεν μπορείτε να χρησιμοποιήσετε κυριλλικά σε αναγνωριστικά, οπότε αναγκαζόμαστε να γράψουμε ως εξής:

TypeMonth=(Ιαν, Φεβ, Μάρτιος, Μάιος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπ, Οκτώβριος, Νοέμβριος, Δεκ);

μήνας: ΤύποςΜήνας;

αν μήνας = αυγ. τότε WriteLn("Θα ήταν ωραίο να πάμε στη θάλασσα!");

Η αντιστοιχία μεταξύ των τιμών ενός απαριθμημένου τύπου και των τακτικών αριθμών αυτών των τιμών καθορίζεται με τη σειρά απαρίθμησης: η πρώτη τιμή στη λίστα λαμβάνει τον τακτικό αριθμό 0, η δεύτερη - 1 κ.λπ. Η μέγιστη χωρητικότητα ενός απαριθμημένου τύπου είναι 65536 τιμές, επομένως στην πραγματικότητα ένας απαριθμημένος τύπος ορίζει ένα συγκεκριμένο υποσύνολο ολόκληρου του τύπου WORD και μπορεί να θεωρηθεί ως συμπαγής δήλωση μιας ομάδας ακεραίων σταθερών με τιμές 0, 1, κ.λπ.

Η χρήση απαριθμημένων τύπων αυξάνει την αξιοπιστία των προγραμμάτων επιτρέποντάς σας να ελέγχετε τις τιμές που λαμβάνουν οι αντίστοιχες μεταβλητές. Για παράδειγμα, ας δοθούν οι παρακάτω απαριθμηθέντες τύποι:

χρώματα = (μαύρο, κόκκινο, λευκό);

ordenal= (ένα, δύο, τρία);

ημέρες = (Δευτέρα, Τρίτη, Τετάρτη);

Όσον αφορά την ισχύ και την εσωτερική εκπροσώπηση, και οι τρεις τύποι είναι ισοδύναμοι:

ord(μαύρο)=0, ..., ord(λευκό)=2,

ord(one)=0, ...ord(τρία)=2,

ord(Δευτέρα)=0, ...ord(Τετάρτη)=2.

Ωστόσο, εάν οριστούν οι μεταβλητές

col:colors; num:ordenal;

τότε επιτρέπονται οι χειριστές

num:= succ(δύο);

day:= pred(Tuesday);

αλλά απαράδεκτο

Όπως ήδη αναφέρθηκε, υπάρχει μια αντιστοιχία ένα προς ένα μεταξύ των τιμών ενός απαριθμημένου τύπου και του συνόλου των ακεραίων, που καθορίζονται από τη συνάρτηση ORD(X). Το Turbo Pascal επιτρέπει επίσης την αντίστροφη μετατροπή: οποιαδήποτε έκφραση τύπου WORD μπορεί να μετατραπεί σε τιμή τύπου enum, αρκεί η τιμή της ακέραιας έκφρασης να μην υπερβαίνει το power1™ του τύπου απαρίθμησης. Αυτή η μετατροπή επιτυγχάνεται χρησιμοποιώντας μια αυτόματα δηλωμένη συνάρτηση με το όνομα του απαριθμούμενου τύπου (βλ. ενότητα 4.4). Για παράδειγμα, για τη δήλωση τύπου που συζητήθηκε παραπάνω, οι ακόλουθες εκχωρήσεις είναι ισοδύναμες:

col:= χρώματα(0);

Φυσικά, ανάθεση

θα είναι απαράδεκτη.

Οι μεταβλητές οποιουδήποτε απαριθμημένου τύπου μπορούν να δηλωθούν χωρίς να δηλωθεί πρώτα αυτός ο τύπος, για παράδειγμα:

col: (μαύρο, λευκό, πράσινο);

Εύρος τύπου. Ένας τύπος εύρους είναι ένα υποσύνολο του βασικού του τύπου, ο οποίος μπορεί να είναι οποιοσδήποτε τακτικός τύπος εκτός από έναν τύπο εύρους. Ένας τύπος εύρους ορίζεται από τα όρια των τιμών του εντός του βασικού τύπου:

<мин.знач.>..<макс.знач.>

Εδώ<мин.знач. >- ελάχιστη τιμή εύρους τύπου·

<макс.знач.>- η μέγιστη τιμή του.

Για παράδειγμα:

ψηφίο = "0".."9";

Ο τύπος εύρους δεν χρειάζεται να περιγράφεται στην ενότητα TYPE, αλλά μπορεί να καθοριστεί απευθείας κατά τη δήλωση μιας μεταβλητής, για παράδειγμα:

Ichr: "A".."Z";.

Κατά τον προσδιορισμό ενός τύπου εύρους, πρέπει να ακολουθείτε τους ακόλουθους κανόνες:

  • δύο χαρακτήρες ".." αντιμετωπίζονται ως ένας χαρακτήρας, επομένως δεν επιτρέπονται κενά μεταξύ τους.
  • το αριστερό περίγραμμα του εύρους δεν πρέπει να υπερβαίνει το δεξί του όριο. Ένας τύπος εύρους κληρονομεί όλες τις ιδιότητες του βασικού του τύπου, αλλά με τους περιορισμούς της χαμηλότερης ισχύος του. Ειδικότερα, εάν οριστεί μια μεταβλητή

ημέρες = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa .. su;

τότε το ORD(W) θα επιστρέψει την τιμή 5, ενώ το PRED(W) θα οδηγήσει σε σφάλμα.

Η τυπική βιβλιοθήκη Turbo Pascal περιλαμβάνει δύο λειτουργίες που υποστηρίζουν την εργασία με τύπους εύρους:

HIGH(X) - επιστρέφει τη μέγιστη τιμή του τύπου εύρους στον οποίο ανήκει η μεταβλητή X.

LOW(X) - επιστρέφει την ελάχιστη τιμή του τύπου εύρους.

Το παρακάτω σύντομο πρόγραμμα θα εκτυπώσει τη γραμμή

WriteLn(Low(k),"..",High(k))

Το σύνολο των ακεραίων είναι άπειρο, αλλά μπορούμε πάντα να επιλέξουμε τον αριθμό των bit για να αναπαραστήσουμε κάθε ακέραιο που προκύπτει κατά την επίλυση ενός συγκεκριμένου προβλήματος. Το σύνολο των πραγματικών αριθμών δεν είναι μόνο άπειρο, αλλά και συνεχές, οπότε όσα bits και να πάρουμε, αναπόφευκτα θα συναντήσουμε αριθμούς που δεν έχουν ακριβή αναπαράσταση. Οι αριθμοί κινητής υποδιαστολής είναι ένας πιθανός τρόπος αναπαράστασης πραγματικών αριθμών, ο οποίος είναι ένας συμβιβασμός μεταξύ της ακρίβειας και του εύρους των αποδεκτών τιμών.

Ένας αριθμός κινητής υποδιαστολής αποτελείται από ένα σύνολο μεμονωμένων ψηφίων, που χωρίζονται συμβατικά σε πρόσημο, εκθέτη και μάντισσα. Ο εκθέτης και η μάντισσα είναι ακέραιοι αριθμοί που μαζί με το πρόσημο δίνουν την ακόλουθη αναπαράσταση ενός αριθμού κινητής υποδιαστολής:

Μαθηματικά γράφεται ως εξής:

(-1) s × M × B E, όπου s είναι το πρόσημο, B είναι η ρίζα, E είναι ο εκθέτης και M είναι η μάντισσα.

Η βάση καθορίζει το σύστημα ψηφίων. Έχει αποδειχθεί μαθηματικά ότι οι αριθμοί κινητής υποδιαστολής με βάση B=2 (δυαδική αναπαράσταση) είναι πιο ανθεκτικοί σε σφάλματα στρογγυλοποίησης, επομένως στην πράξη συναντάμε μόνο τις βάσεις 2 και, λιγότερο συχνά, 10, για περαιτέρω παρουσίαση, θα υποθέτουμε πάντα B= 2, και ο τύπος για έναν αριθμό με κινητή υποδιαστολή θα μοιάζει με:

(-1) s × M × 2 E

Τι είναι η μάντισσα και η τάξη; Μάντισσαείναι ένας ακέραιος αριθμός σταθερού μήκους που αντιπροσωπεύει τα πιο σημαντικά bits ενός πραγματικού αριθμού. Ας υποθέσουμε ότι η μάντισσα μας αποτελείται από τρία bit (|M|=3). Πάρτε, για παράδειγμα, τον αριθμό "5", ο οποίος στο δυαδικό σύστημα θα είναι ίσος με 101 2. Το πιο σημαντικό bit αντιστοιχεί στο 2 2 =4, το μεσαίο bit (που ισούται με μηδέν) είναι 2 1 =2 και το λιγότερο σημαντικό bit είναι 2 0 =1. Σειρά– αυτή είναι η ισχύς της βάσης (δύο) του υψηλότερου ψηφίου. Στην περίπτωσή μας Ε=2. Είναι βολικό να γράφετε τέτοιους αριθμούς με τη λεγόμενη "επιστημονική" τυπική μορφή, για παράδειγμα "1.01e+2". Είναι αμέσως σαφές ότι η μάντισσα αποτελείται από τρία ζώδια και η σειρά είναι δύο.

Ας υποθέσουμε ότι θέλουμε να πάρουμε έναν κλασματικό αριθμό χρησιμοποιώντας τα ίδια 3 bit της μάντισσας. Μπορούμε να το κάνουμε αυτό αν πάρουμε, ας πούμε, E=1. Τότε ο αριθμός μας θα είναι ίσος

1,01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0,5=2,5

Προφανώς, με αυτόν τον τρόπο ο ίδιος αριθμός μπορεί να αναπαρασταθεί με διαφορετικούς τρόπους. Ας εξετάσουμε ένα παράδειγμα με το μήκος της μάντισσας |M|=4. Ο αριθμός "2" μπορεί να αναπαρασταθεί ως εξής:

2 = 10 (σε δυαδικό) = 1.000e+1 = 0.100e+2 = 0.010e+3.

Επομένως, ήδη στις πρώτες μηχανές, οι αριθμοί αντιπροσωπεύονταν στο λεγόμενο κανονικοποιημένη μορφή, όταν το πρώτο κομμάτι της μάντισσας θεωρούνταν πάντα ίσο με ένα.

Αυτό εξοικονομεί ένα bit (καθώς το σιωπηρό δεν χρειάζεται να αποθηκευτεί στη μνήμη) και διασφαλίζει ότι ο αριθμός αναπαρίσταται μοναδικά. Στο παράδειγμά μας, το "2" έχει μια ενιαία αναπαράσταση ("1.000e+1") και το mantissa αποθηκεύεται στη μνήμη ως "000", επειδή η κύρια μονάδα υπονοείται σιωπηρά. Αλλά ένα νέο πρόβλημα προκύπτει στην κανονικοποιημένη αναπαράσταση των αριθμών - είναι αδύνατο να αναπαραστήσουμε το μηδέν σε αυτή τη μορφή.

  • Ανάλυση δεδομένων χρησιμοποιώντας τις εντολές Επιλογή παραμέτρων και Αναζήτηση λύσεων
  • Ανάλυση και ερμηνεία δεδομένων πειραματικής ψυχολογικής έρευνας.
  • Ανάλυση δεδομένων πηγής. Τεχνικά πρότυπα για αστικούς δρόμους.
  • ΑΝΑΛΥΣΗ ΣΤΟΙΧΕΙΩΝ ΠΟΥ ΛΗΦΘΗΚΑΝ. ΛΗΨΗ ΑΠΟΦΑΣΗΣ ΓΙΑ ΤΗΝ ΕΠΑΡΚΕΙΑ Ή ΑΝΕΠΑΡΚΕΙΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ ΥΔΡΕΥΣΗΣ ΓΙΑ ΤΙΣ ΑΝΑΓΚΕΣ ΤΟΥ ΑΡΔΕΥΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ.
  • Εξοπλισμός γραμμής επικοινωνίας: εξοπλισμός μετάδοσης δεδομένων, τερματικός εξοπλισμός, ενδιάμεσος εξοπλισμός.

  • Το μάθημα καλύπτει τους κύριους τυπικούς τύπους δεδομένων στο Pascal, την έννοια μιας μεταβλητής και μιας σταθεράς. εξηγεί πώς να εργαστείτε με αριθμητικές πράξεις

    Το Pascal είναι μια δακτυλογραφημένη γλώσσα προγραμματισμού.Αυτό σημαίνει ότι οι μεταβλητές που αποθηκεύουν δεδομένα είναι συγκεκριμένου τύπου δεδομένων. Εκείνοι. Το πρόγραμμα πρέπει να υποδεικνύει απευθείας ποια δεδομένα μπορούν να αποθηκευτούν σε μια συγκεκριμένη μεταβλητή: δεδομένα κειμένου, αριθμητικά δεδομένα, αν είναι αριθμητικά, τότε ακέραια ή κλασματικά κ.λπ. Αυτό είναι απαραίτητο κυρίως για να «γνωρίζει» ο υπολογιστής ποιες λειτουργίες μπορούν να εκτελεστούν με αυτές τις μεταβλητές και πώς να τις εκτελέσει σωστά.

    Για παράδειγμα, η προσθήκη δεδομένων κειμένου ή όπως σωστά λέγεται στον προγραμματισμό - συνένωση - είναι η συνήθης συγχώνευση συμβολοσειρών, ενώ η προσθήκη αριθμητικών δεδομένων γίνεται bitwise, επιπλέον προστίθενται και κλασματικοί και ακέραιοι αριθμοί διαφορετικά. Το ίδιο ισχύει και για άλλες λειτουργίες.

    Ας δούμε τους πιο συνηθισμένους τύπους δεδομένων στο Pascal.

    Ακέραιοι τύποι δεδομένων στο Pascal

    Τύπος Εύρος Απαιτούμενη μνήμη (bytes)
    ψηφιόλεξη 0..255 1
    σύντομο -128..127 1
    ακέραιος αριθμός -32768.. 32767 2
    λέξη 0..65535 2
    λαχτάρα -2147483648..2147483647 4

    Πρέπει να έχετε κατά νου ότι όταν γράφετε προγράμματα σε Pascal ακέραιος αριθμός(μεταφρασμένο από τα αγγλικά στο σύνολό του) είναι το πιο συχνά χρησιμοποιούμενο, καθώς το εύρος των τιμών είναι πιο απαιτητικό. Εάν χρειάζεται μεγαλύτερο εύρος, χρησιμοποιήστε λαχτάρα(long integer, μεταφρασμένο από τα αγγλικά ως long integer). Τύπος ψηφιόλεξηστο Pascal χρησιμοποιείται όταν δεν χρειάζεται να δουλέψουμε με αρνητικές τιμές, το ίδιο ισχύει και για τον τύπο λέξη(μόνο το εύρος τιμών εδώ είναι πολύ μεγαλύτερο).

    Παραδείγματα για το πώς περιγράφονται (δηλώνονται) οι μεταβλητές στο Pascal:

    πρόγραμμα α1; var x,y:ακέραιος; (ακέραιος τύπος) myname:string; (τύπος συμβολοσειράς) αρχίζει x:=1; y:=x+16; myname:="Peter"; writeln("name: ",myname, ", age: ", y) τέλος.

    Αποτέλεσμα:
    Όνομα: Πέτρος, ηλικία: 17

    Σχόλια σε Pascal

    Παρατηρήστε πώς Τα σχόλια χρησιμοποιούνται στο Pascal. Στα σχόλια του παραδείγματος, π.χ. Το κείμενο υπηρεσίας που "δεν είναι ορατό" στον μεταγλωττιστή περικλείεται σε σγουρά άγκιστρα. Συνήθως, τα σχόλια γίνονται από προγραμματιστές για να εξηγήσουν κομμάτια κώδικα.

    Εργασία 3.Ο πληθυσμός της Μόσχας είναι α = 9.000.000 κάτοικοι. Ο πληθυσμός του Νέου Βασιούκι είναι b=1000 κάτοικοι. Γράψτε ένα πρόγραμμα που να καθορίζει τη διαφορά στον αριθμό των κατοίκων μεταξύ δύο πόλεων. Χρησιμοποιήστε μεταβλητές

    Πραγματικοί τύποι δεδομένων στο Pascal

    Οι πραγματικοί αριθμοί στο Pascal και στον προγραμματισμό γενικά είναι το όνομα των κλασματικών αριθμών.

    Τύπος Εύρος Απαιτούμενη μνήμη (bytes)
    πραγματικός 2,9 * 10E-39 .. 1,7 * 10E38 6
    μονόκλινο 1,5 * 10 E-45 .. 3,4 * 10E38 4
    διπλό 5 * 10E-324 .. 1,7 * 10E308 8
    επεκτάθηκε 1,9 * 10E-4951 .. 1,1 * 10E4932 10

    Ο πραγματικός τύπος στο Pascal είναι ο πιο συχνά χρησιμοποιούμενος πραγματικός τύπος.

    Παρουσιάστηκαν τα παραπάνω απλοί τύποι δεδομένων στο Pascal, οι οποίοι περιλαμβάνουν:

    • Τακτικός
    • Ολόκληρος
    • σπαζοκεφαλιά
    • Χαρακτήρας
    • Καταχωρίσιμο
    • Διάστημα
    • Πραγματικός

    Για την εμφάνιση των τιμών των μεταβλητών πραγματικού τύπου, χρησιμοποιείται συνήθως μορφοποιημένη έξοδος:

  • η μορφή χρησιμοποιεί είτε έναν αριθμό, υποδεικνύοντας τον αριθμό των θέσεων που έχουν εκχωρηθεί σε αυτόν τον αριθμό σε εκθετική μορφή.
  • p:=1234.6789; Writeln(p:6:2); (1234,68)

    Μαζί με απλούς τύπους χρησιμοποιεί και η γλώσσα δομημένους τύπους δεδομένων και δείκτες, το οποίο θα αποτελέσει αντικείμενο επόμενων μαθημάτων για τον Pascal.

    Σταθερές στον Πασκάλ

    Συχνά σε ένα πρόγραμμα είναι γνωστό εκ των προτέρων ότι μια μεταβλητή θα λάβει μια συγκεκριμένη τιμή και δεν θα την αλλάξει κατά τη διάρκεια της εκτέλεσης ολόκληρου του προγράμματος. Σε αυτή την περίπτωση, πρέπει να χρησιμοποιήσετε μια σταθερά.

    Η δήλωση μιας σταθεράς στο Pascal συμβαίνει πριν από τη δήλωση των μεταβλητών (πριν από τη λέξη υπηρεσίας var) και μοιάζει με αυτό:

    Ένα παράδειγμα μιας σταθερής περιγραφής στον Pascal:

    1 2 3 4 5 6 const x= 17 ; var myname: string ; Begin myname: = "Peter" ; writeln ("όνομα: " , το όνομα μου, ", ηλικία: " , x) τέλος .

    const x=17; var myname:string; Begin myname:="Peter"; writeln("name: ",myname, ", age: ", x) end.

    "Όμορφη" έξοδος ακεραίων και πραγματικών αριθμών

    Προκειμένου να διασφαλιστεί ότι μετά την εμφάνιση των τιμών των μεταβλητών υπάρχουν εσοχές, ώστε οι τιμές να μην «συγχωνεύονται» μεταξύ τους, είναι συνηθισμένο να υποδεικνύεται μέσω άνω και κάτω τελείας πόσοι χαρακτήρες πρέπει να παρέχονται για την εμφάνιση του αξία:


    Αριθμητικές πράξεις σε Pascal

    Σειρά εργασιών

    1. αξιολόγηση των εκφράσεων σε παρένθεση.
    2. πολλαπλασιασμός, διαίρεση, div, mod από αριστερά προς τα δεξιά.
    3. πρόσθεση και αφαίρεση από αριστερά προς τα δεξιά.

    Τυπικές Αριθμητικές Διαδικασίες και Συναρτήσεις Pascal

    Εδώ αξίζει να σταθούμε αναλυτικότερα σε ορισμένες αριθμητικές πράξεις.

    • Η λειτουργία inc στο Pascal, προφέρεται αύξηση, είναι μια τυπική διαδικασία Pascal που σημαίνει αύξηση κατά ένα.
    • Παράδειγμα λειτουργίας inc:

      x:=1; Inc(x); (Αυξάνει το x κατά 1, δηλ. x=2) writeln(x)

      Πιο περίπλοκη χρήση της διαδικασίας inc:
      Inc(x,n) όπου x είναι τακτικός τύπος, n είναι ακέραιος τύπος. διαδικασία προσαυξήσεις x επί n.

    • Η διαδικασία Dec στο Pascal λειτουργεί παρόμοια: Dec(x) - μειώνεται το x κατά 1 (μείωση) ή Dec(x,n) - μειώνεται το x κατά n.
    • Ο τελεστής abs αντιπροσωπεύει το μέτρο συντελεστή ενός αριθμού. Δουλεύει κάπως έτσι:
    • α: =- 9; b:=abs(a); (b=9)

      a:=-9; b:=abs(a); (b=9)

    • Ο τελεστής div στο Pascal χρησιμοποιείται συχνά, καθώς ένας αριθμός εργασιών περιλαμβάνει τη λειτουργία ολόκληρης της διαίρεσης.
    • Το υπόλοιπο της διαίρεσης ή ο χειριστής mod στο Pascal είναι επίσης απαραίτητος για την επίλυση ορισμένων προβλημάτων.
    • Αξιοσημείωτη είναι η τυπική περιττή συνάρτηση του Pascal, η οποία καθορίζει εάν ένας ακέραιος είναι περιττός. Δηλαδή, επιστρέφει true για περιττούς αριθμούς, false για ζυγούς αριθμούς.
    • Ένα παράδειγμα χρήσης της περιττής συνάρτησης:

      var x:ακέραιος; έναρξη x:=3; writeln(sqr(x)); (απάντηση 9) τέλος.

    • Λειτουργία εκθέσεως σε Pascalλείπει ως τέτοιο. Αλλά για να αυξήσετε έναν αριθμό σε δύναμη, μπορείτε να χρησιμοποιήσετε τη συνάρτηση exp.
    • Ο τύπος είναι: exp(ln(a)*n), όπου a είναι ένας αριθμός, n είναι ένας βαθμός (a>0).

      Ωστόσο, στον μεταγλωττιστή Pascal abc, η εκθετικότητα είναι πολύ πιο απλή:

      var x:ακέραιος; έναρξη x:=9; writeln(sqrt(x)); (απάντηση 3) τέλος.

    Εργασία 4.Οι διαστάσεις ενός σπιρτόκουτου είναι γνωστές: ύψος - 12,41 cm, πλάτος - 8 cm, πάχος - 5 cm Υπολογίστε το εμβαδόν της βάσης του κουτιού και τον όγκο του
    (S=πλάτος*πάχος, V=εμβαδόν*ύψος)

    Εργασία 5.Ο ζωολογικός κήπος έχει τρεις ελέφαντες και αρκετά κουνέλια, με τον αριθμό των κουνελιών να αλλάζει συχνά. Ένας ελέφαντας υποτίθεται ότι τρώει εκατό καρότα την ημέρα και ένα κουνέλι - δύο. Κάθε πρωί, ο φύλακας του ζωολογικού κήπου λέει στον υπολογιστή τον αριθμό των κουνελιών. Ο υπολογιστής, ως απάντηση σε αυτό, πρέπει να πει στον συνοδό τον συνολικό αριθμό των καρότων που πρέπει να ταΐσουν τα κουνέλια και οι ελέφαντες σήμερα.

    Εργασία 6.Είναι γνωστό ότι Χκιλά γλυκά κοστίζει έναρούβλια Προσδιορίστε πόσο κοστίζει yκιλά από αυτά τα γλυκά, καθώς και σε πόσα κιλά γλυκών μπορείτε να αγοράσετε κρούβλια Όλες οι τιμές εισάγονται από τον χρήστη.

    Η έννοια των δεδομένων είναι μια από τις βασικές στον προγραμματισμό και στην επιστήμη των υπολογιστών γενικότερα. Σε γενικές γραμμές, τα δεδομένα στην επιστήμη των υπολογιστών είναι πληροφορίες που βρίσκονται σε κατάσταση αποθήκευσης, επεξεργασίας ή μετάδοσης για μια ορισμένη χρονική περίοδο. Στις μηχανές Turing, η πληροφορία έχει έναν τύπο, και αυτό με τη σειρά του εξαρτάται από το είδος της πληροφορίας.

    Οι τύποι δεδομένων στο Pascal καθορίζουν τις πιθανές τιμές μεταβλητών, σταθερών, παραστάσεων και συναρτήσεων. Είναι ενσωματωμένα και προσαρμοσμένα. Οι ενσωματωμένοι τύποι υπάρχουν αρχικά στη γλώσσα προγραμματισμού και οι προσαρμοσμένοι τύποι δημιουργούνται από τον προγραμματιστή.

    Σύμφωνα με τη μέθοδο παρουσίασης και επεξεργασίας, οι τύποι δεδομένων είναι:

    • απλός
    • δομημένος
    • δείκτες
    • αντικείμενα
    • διαδικασίες

    Αυτό το άρθρο θα εξετάσει μόνο τους απλούστερους τύπους δεδομένων, καθώς στα αρχικά στάδια της εκπαίδευσης, θα είναι ευκολότερο για το πρόγραμμά σας να το κάνει χωρίς, για παράδειγμα, αρχεία και εγγραφές παρά χωρίς μεταβλητές ακέραιων ή συμβολοσειρών.

    Ακέραιος τύπος

    Αυτό περιλαμβάνει αρκετούς ακέραιους τύπους, οι οποίοι διαφέρουν ως προς το εύρος τιμών, τον αριθμό των byte που διατίθενται για την αποθήκευσή τους και τη λέξη με την οποία δηλώνεται ο τύπος.

    Τύπος Εύρος Μέγεθος σε byte
    σύντομο -128…127 1
    ακέραιος αριθμός -32 768…32 767 2
    λαχτάρα -2 147 483 648…2 147 483 647 4
    ψηφιόλεξη 0…255 1
    λέξη 0…65 535 2

    Μπορείτε να δηλώσετε μια ακέραια μεταβλητή στην ενότητα Var, για παράδειγμα:

    Όλες οι αριθμητικές και λογικές πράξεις μπορούν να εκτελεστούν σε μεταβλητές αυτής της κατηγορίας με εξαίρεση τη διαίρεση (/), η οποία απαιτεί πραγματικό τύπο. Ενδέχεται επίσης να ισχύουν ορισμένες τυπικές λειτουργίες και διαδικασίες.

    Πραγματικός τύπος

    Στο Pascal υπάρχουν οι ακόλουθοι πραγματικοί τύποι δεδομένων:

    Τύπος Εύρος Μνήμη, byte Αριθμός ψηφίων
    Πραγματικός 2,9e-39 … 1,7e38 6 11-12
    Μονόκλινο 1,5e-45 … 3,4e38 4 7-8
    Διπλό 5.0e-324…1.7e308 8 15-16
    Επεκτάθηκε 3.4e-4932 … 1.1e493 10 19-20
    Comp -9,2e63…(9,2e63)-1 8 19-20

    Περισσότερες πράξεις και συναρτήσεις μπορούν να εκτελεστούν σε αυτά παρά σε ακέραιους αριθμούς. Για παράδειγμα, αυτές οι συναρτήσεις επιστρέφουν ένα πραγματικό αποτέλεσμα:

    sin(x) – sine;

    cos(x) – συνημίτονο;

    arctan(x) – arctangent;

    ln(x) – φυσικός λογάριθμος.

    sqrt(x) – τετραγωνική ρίζα;

    exp(x) – εκθέτης;

    Τύπος Boolean

    Μια μεταβλητή ενός τύπου δεδομένων Boolean μπορεί να λάβει μόνο δύο τιμές: true και false. Εδώ, το true αντιστοιχεί στην τιμή 1 και το false αντιστοιχεί στο μηδέν. Μπορείτε να δηλώσετε μια μεταβλητή Boolean ως εξής:

    Η σύγκριση και οι λογικές πράξεις μπορούν να εκτελεστούν σε δεδομένα αυτού του τύπου: not, and, or, xor.

    Τύπος χαρακτήρα

    Ένας τύπος δεδομένων χαρακτήρων είναι μια συλλογή χαρακτήρων που χρησιμοποιούνται σε έναν συγκεκριμένο υπολογιστή. Μια μεταβλητή αυτού του τύπου παίρνει την τιμή ενός από αυτούς τους χαρακτήρες και καταλαμβάνει 1 byte στη μνήμη του υπολογιστή. Λέξη Απανθρακώνωορίζει μια τιμή αυτού του τύπου. Υπάρχουν διάφοροι τρόποι για να γράψετε μια μεταβλητή χαρακτήρων (ή σταθερά):

    1. ως ενιαίος χαρακτήρας που περικλείεται σε απόστροφους: «W», «V», «p»·
    2. καθορίζοντας τον κωδικό χαρακτήρων, η τιμή του οποίου πρέπει να είναι στην περιοχή από 0 έως 255.
    3. χρησιμοποιώντας την κατασκευή ^K, όπου K είναι ο κωδικός χαρακτήρα ελέγχου. Η τιμή του K πρέπει να είναι 64 μεγαλύτερη από τον αντίστοιχο κωδικό χαρακτήρων ελέγχου.

    Οι σχεσιακές λειτουργίες και οι ακόλουθες συναρτήσεις ισχύουν για τιμές ενός τύπου δεδομένων χαρακτήρων:

    Succ(x)- επιστρέφει τον επόμενο χαρακτήρα.

    Pred(x)- επιστρέφει τον προηγούμενο χαρακτήρα.

    Παραγγελία(x)- επιστρέφει την τιμή του κωδικού χαρακτήρα.

    Chr(x)- επιστρέφει την τιμή ενός συμβόλου με τον κωδικό του.

    UpCase(x)- μετατρέπει γράμματα από το διάστημα ‘a’..’z’ σε κεφαλαία.

    Για να εργαστείτε αποτελεσματικά με έναν τύπο χαρακτήρων, προτείνω να χρησιμοποιήσετε .

    Τύπος χορδής

    Μια συμβολοσειρά στο Pascal είναι μια ακολουθία χαρακτήρων που περικλείονται σε απόστροφους και συμβολίζεται με τη λέξη Σειρά. Ο αριθμός των χαρακτήρων (μήκος γραμμής) δεν πρέπει να υπερβαίνει τους 255. Εάν το μήκος της γραμμής δεν έχει καθοριστεί, θα καθοριστεί αυτόματα ότι είναι 255 χαρακτήρες. Η γενική μορφή μιας δήλωσης μεταβλητής συμβολοσειράς μοιάζει με αυτό:

    Var<имя_переменной>:σειρά[<длина строки>];

    Κάθε χαρακτήρας σε μια γραμμή έχει το δικό του ευρετήριο (αριθμό). Ο δείκτης του πρώτου byte είναι 0, αλλά δεν αποθηκεύει τον πρώτο χαρακτήρα, αλλά το μήκος ολόκληρης της συμβολοσειράς, πράγμα που σημαίνει ότι μια μεταβλητή αυτού του τύπου θα καταλαμβάνει 1 byte περισσότερο από τον αριθμό των μεταβλητών σε αυτήν. Ο αριθμός του πρώτου χαρακτήρα είναι 1, για παράδειγμα, αν έχουμε τη συμβολοσειρά S=‘stroka’, τότε S=s;. Σε ένα από τα ακόλουθα μαθήματα, ο τύπος δεδομένων συμβολοσειράς θα συζητηθεί με περισσότερες λεπτομέρειες.

    Απαριθμημένος τύπος δεδομένων

    Ένας απαριθμημένος τύπος δεδομένων αντιπροσωπεύει περιορισμένο αριθμό αναγνωριστικών. Αυτά τα αναγνωριστικά περικλείονται σε παρένθεση και χωρίζονται με κόμμα.

    Τύπος Ημέρα=(Δευτέρα, Τρίτη, Τετάρτη, Πέμπτη, Παρασκευή, Σάββατο, Κυριακή);

    Η μεταβλητή Α μπορεί να λάβει μόνο τις τιμές που καθορίζονται στην ενότητα Τύπος. Μπορείτε επίσης να δηλώσετε μια μεταβλητή απαριθμημένου τύπου στην ενότητα Var:

    Var A: (Δευτέρα, Τρίτη);

    Οι σχεσιακές πράξεις ισχύουν για αυτόν τον τύπο και είναι προκαθορισμένο εκείνη τη Δευτέρα

    Τύπος δεδομένων διαστήματος

    Όταν είναι απαραίτητο να καθοριστεί ένα εύρος τιμών, τότε σε τέτοιες περιπτώσεις χρησιμοποιείται ο τύπος δεδομένων διαστήματος. Η κατασκευή που χρησιμοποιήθηκε για τη δήλωση είναι μ..ν, Οπου Μείναι η ελάχιστη (αρχική) τιμή και n– μέγιστο (τελικό) Εδώ τα m και n είναι σταθερές, οι οποίες μπορεί να είναι ακέραιου, χαρακτήρα, απαρίθμησης ή boolean τύπου. Οι τιμές του τύπου διαστήματος μπορούν να περιγραφούν τόσο στην ενότητα τύπων όσο και στην ενότητα περιγραφής μεταβλητών.

    Γενική μορφή:

    ΤΥΠΟΣ<имя_типа> = <мин. значение>..<макс. значение>;

    Ομοσπονδιακή Υπηρεσία για την Εκπαίδευση

    Εκθεση ΙΔΕΩΝ

    "ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΕ PASCAL"

    1. Τύποι δεδομένων

    Οποιαδήποτε δεδομένα, δηλ. Οι σταθερές, οι μεταβλητές, οι ιδιότητες, οι τιμές συναρτήσεων ή οι εκφράσεις χαρακτηρίζονται από τους τύπους τους. Ένας τύπος ορίζει το σύνολο των έγκυρων τιμών που μπορεί να έχει ένα αντικείμενο, καθώς και το σύνολο των έγκυρων πράξεων που μπορούν να εφαρμοστούν σε αυτό. Επιπλέον, ο τύπος καθορίζει επίσης τη μορφή της εσωτερικής αναπαράστασης των δεδομένων στη μνήμη του υπολογιστή.

    Γενικά, η γλώσσα Object Pascal χαρακτηρίζεται από μια διακλαδισμένη δομή τύπων δεδομένων (Εικ. 1.1). Η γλώσσα παρέχει έναν μηχανισμό για τη δημιουργία νέων τύπων, χάρη στον οποίο ο συνολικός αριθμός των τύπων που χρησιμοποιούνται σε ένα πρόγραμμα μπορεί να είναι όσο μεγάλος επιθυμείτε.

    Τα δεδομένα που επεξεργάζονται στο πρόγραμμα χωρίζονται σε μεταβλητές, σταθερές και κυριολεκτικά:

    Σταθερές αντιπροσωπεύουν δεδομένα των οποίων οι τιμές ορίζονται στην ενότητα σταθερής δήλωσης και δεν αλλάζουν κατά την εκτέλεση του προγράμματος.

    Μεταβλητές δηλώνονται στην ενότητα δήλωσης μεταβλητής, αλλά σε αντίθεση με τις σταθερές, λαμβάνουν τις τιμές τους κατά την εκτέλεση του προγράμματος και αυτές οι τιμές μπορούν να αλλάξουν. Οι σταθερές και οι μεταβλητές μπορούν να αναφέρονται ονομαστικά.

    Κατά γράμμα δεν έχει αναγνωριστικό και αντιπροσωπεύεται απευθείας από την τιμή στο κείμενο του προγράμματος.

    Τύποςορίζει το σύνολο των τιμών που μπορούν να λάβουν τα στοιχεία δεδομένων και το σύνολο των λειτουργιών που επιτρέπονται σε αυτά.

    Αυτό και τα τέσσερα επόμενα κεφάλαια παρέχουν λεπτομερείς περιγραφές για κάθε τύπο.

    1.1 Απλοί τύποι

    Οι απλοί τύποι περιλαμβάνουν τύπους τακτικού, πραγματικού και ημερομηνίας.

    Τακτικοί τύποιδιαφέρουν στο ότι καθένα από αυτά έχει έναν πεπερασμένο αριθμό πιθανών τιμών. Αυτές οι τιμές μπορούν να ταξινομηθούν με συγκεκριμένο τρόπο (εξ ου και το όνομα των τύπων) και, επομένως, καθεμία από αυτές μπορεί να συσχετιστεί με κάποιον ακέραιο αριθμό - τον τακτικό αριθμό της τιμής.

    Πραγματικοί τύποι, αυστηρά μιλώντας, έχουν επίσης έναν πεπερασμένο αριθμό τιμών, ο οποίος καθορίζεται από τη μορφή της εσωτερικής αναπαράστασης ενός πραγματικού αριθμού. Ωστόσο, ο αριθμός των πιθανών τιμών των πραγματικών τύπων είναι τόσο μεγάλος που δεν είναι δυνατόν να συσχετιστεί ένας ακέραιος αριθμός (ο αριθμός του) με καθένα από αυτούς.

    Τύπος ημερομηνίας-ώραςσχεδιασμένο για αποθήκευση ημερομηνίας και ώρας. Στην πραγματικότητα, χρησιμοποιεί την πραγματική μορφή για αυτούς τους σκοπούς.

    1.1.1 Τακτικοί τύποι

    Οι τακτικοί τύποι περιλαμβάνουν (βλ. Εικόνα 1.1) τύπους ακέραιων, λογικών, χαρακτήρων, απαριθμημένων και εύρους. Η συνάρτηση Ord(x) μπορεί να εφαρμοστεί σε οποιαδήποτε από αυτές, η οποία επιστρέφει τον τακτικό αριθμό της τιμής της παράστασης X.


    Ρύζι. 1.1 - Δομή τύπου δεδομένων

    Για ολόκληροςτύπους, η συνάρτηση ord(x) επιστρέφει την τιμή του ίδιου του x, δηλαδή Ord(X) = x για x που ανήκει σε οποιοδήποτε ολόκληροςτύπος. Εφαρμογή της σειράς (x) σε λογικός , συμβολική και απαρίθμητητύπους δίνει έναν θετικό ακέραιο στην περιοχή 0 έως 1 ( boolean τύπου), από 0 έως 255 ( συμβολικός), από 0 έως 65535 ( αναρίθμητος). Εύρος τύπουδιατηρεί όλες τις ιδιότητες του βασικού τακτικού τύπου, επομένως το αποτέλεσμα της εφαρμογής της συνάρτησης ord(x) σε αυτόν εξαρτάται από τις ιδιότητες αυτού του τύπου.

    Μπορείτε επίσης να εφαρμόσετε συναρτήσεις σε τακτικούς τύπους:

    pred(x)- επιστρέφει την προηγούμενη τιμή του τακτικού τύπου (η τιμή που αντιστοιχεί στον τακτικό αριθμό ord(x) -1, δηλαδή ord(pred(x)) = ord(x) - 1;

    succ(x)- επιστρέφει την επόμενη τιμή του τακτικού τύπου, που αντιστοιχεί στον τακτικό αριθμό ord(x) +1, δηλαδή ord(Succ(x)) = ord(x) + 1.

    Για παράδειγμα, εάν ένα πρόγραμμα ορίζει μια μεταβλητή

    τότε η συνάρτηση PRED(c) θα επιστρέψει τον χαρακτήρα "4", και η συνάρτηση SUCC(c) θα επιστρέψει τον χαρακτήρα "6".

    Αν φανταστούμε οποιονδήποτε τακτικό τύπο ως ένα διατεταγμένο σύνολο τιμών που αυξάνεται από αριστερά προς τα δεξιά και καταλαμβάνει ένα συγκεκριμένο τμήμα στον άξονα αριθμών, τότε η συνάρτηση pred(x) δεν ορίζεται για το αριστερό άκρο και η succ (x) είναι δεν έχει οριστεί για το δεξί άκρο αυτού του τμήματος.

    Ακέραιοι τύποι . Το εύρος των πιθανών τιμών των ακέραιων τύπων εξαρτάται από την εσωτερική τους αναπαράσταση, η οποία μπορεί να είναι ένα, δύο, τέσσερα ή οκτώ byte. Στον πίνακα Το 1.1 δείχνει τα ονόματα των ακέραιων τύπων, το μήκος της εσωτερικής τους αναπαράστασης σε byte και το εύρος των πιθανών τιμών.

    Πίνακας 1.1 - Ακέραιοι τύποι

    Ονομα Μήκος, byte Εύρος τιμών
    Καρδινάλιος 4 0. .. 2 147 483 647
    Ψηφιόλεξη 1 0...255
    Shortint 1 -128...+127
    Smallint 2 -32 768...+32 767
    Λέξη 2 0...65 535
    Ακέραιος αριθμός 4
    Longint 4 -2 147 483 648...+2 147 483 647
    Int64 8 -9*1018...+9*1018
    LongWord 4 0. . .4 294 967 295

    Τύποι LongWordΚαι Int64παρουσιάστηκαν για πρώτη φορά στην έκδοση 4, και οι τύποι SmallintΚαι Καρδινάλιοςδεν είναι διαθέσιμο στους Δελφούς 1. Πληκτρολογήστε ακέραιος αριθμόςγια αυτήν την έκδοση χρειάζεται 2 byte και έχει εύρος τιμών από -32768 έως +32767, δηλαδή το ίδιο με Smallint .

    Όταν χρησιμοποιείτε διαδικασίες και συναρτήσεις με ακέραιες παραμέτρους, θα πρέπει να καθοδηγηθείτε από την «φωλιοποίηση» των τύπων, π.χ. όπου μπορεί να χρησιμοποιηθεί λέξη, επιτρέπεται η χρήση Ψηφιόλεξη(αλλά όχι το αντίστροφο), στο Longint«μπαίνει» Smallint, το οποίο με τη σειρά του περιλαμβάνει Shortint .

    Η λίστα των διαδικασιών και των συναρτήσεων που ισχύουν για ακέραιους τύπους δίνεται στον πίνακα. 1.2. Τα γράμματα b, s, w, i, l δηλώνουν εκφράσεις του παρακάτω τύπου: Ψηφιόλεξη , Shortint, Word, Integer και Longint ,

    Το x είναι μια έκφραση οποιουδήποτε από αυτούς τους τύπους. τα γράμματα vb, vs, vw, vi, vl, vx δηλώνουν μεταβλητές των αντίστοιχων τύπων. Μια προαιρετική παράμετρος υποδεικνύεται σε αγκύλες.

    Πίνακας 1.2 - Τυπικές διαδικασίες και λειτουργίες που ισχύουν για ολόκληρους τύπους

    Εφεση Τύπος αποτελέσματος Δράση
    κοιλιακοί (x) Χ Επιστρέφει την ενότητα x
    chr(b) Απανθρακώνω Επιστρέφει έναν χαρακτήρα από τον κωδικό του
    dec(vx[,i]) - Μειώνει την τιμή του vx κατά i και ελλείψει i - κατά 1
    inc(vx[,i]) - Αυξάνει την τιμή του vx κατά i και ελλείψει i - κατά 1
    Γεια σου Ψηφιόλεξη Επιστρέφει το υψηλότερο τόξο του επιχειρήματος
    Γεια (εγώ) Ιδιο Επιστρέφει το τρίτο byte
    Lo(i) Επιστρέφει το χαμηλό byte του ορίσματος
    Χαμηλός) Ιδιο
    περίεργο(l) Boolean Επιστρέφει True εάν το όρισμα είναι περιττός αριθμός
    Τυχαίο(w) Το ίδιο με την παράμετρο Επιστρέφει έναν ψευδοτυχαίο αριθμό ομοιόμορφα κατανεμημένο στο εύρος 0...(w-l)
    sqr(x) Χ Επιστρέφει το τετράγωνο του επιχειρήματος
    swap(i) Ακέραιος αριθμός Ανταλλάσσει byte με μια λέξη
    swap(w) Λέξη Ιδιο

    Όταν λειτουργούμε με ακέραιους αριθμούς, ο τύπος αποτελέσματος θα αντιστοιχεί στον τύπο των τελεστών και εάν οι τελεστές είναι διαφορετικών ακέραιων τύπων, ο γενικός τύπος που περιλαμβάνει και τους δύο τελεστές. Για παράδειγμα, όταν λειτουργεί με σύντομοΚαι λέξηο κοινός τύπος θα είναι ακέραιος αριθμός. Στην προεπιλεγμένη ρύθμιση, ο μεταγλωττιστής Delphi δεν παράγει κώδικα για να ελέγξει εάν μια τιμή είναι εκτός εύρους, κάτι που μπορεί να οδηγήσει σε παρεξηγήσεις.

    Boolean τύποι . Οι λογικοί τύποι περιλαμβάνουν Boolean, ByteBool, Bool, wordBoolΚαι LongBool. Στο τυπικό Pascal, ορίζεται μόνο ο τύπος Boolean, άλλοι λογικοί τύποι εισάγονται στο Object Pascal για συμβατότητα με Windows: τύπους BooleanΚαι ByteBoolτο καθένα καταλαμβάνει ένα byte, BoolΚαι WordBool- 2 byte το καθένα, LongBool- 4 byte. Οι τιμές Boole μπορεί να είναι μία από τις προ-δηλωμένες σταθερές False ή True.

    Δεδομένου ότι ο τύπος Boolean είναι ένας τακτικός τύπος, μπορεί να χρησιμοποιηθεί σε μια πρόταση βρόχου ενός μετρήσιμου τύπου. Στους Δελφούς 32 για Booleanέννοια

    Ord (True) = +1, ενώ για άλλους τύπους ( Bool, WordBoolκαι τα λοιπά.)

    Ord(True) = -1, επομένως αυτού του είδους οι τελεστές πρέπει να χρησιμοποιούνται με προσοχή! Για παράδειγμα, για την έκδοση Delphi 6, η εκτελέσιμη δήλωση showMessage(" --- ") στον ακόλουθο βρόχο Γιαδεν θα εκτελεστεί ποτέ:

    για L:= False to True do

    ShowMessage("--);

    Αν αντικαταστήσουμε την παράμετρο βρόχου τύπου L στο προηγούμενο παράδειγμα με Boolean, ο βρόχος θα τρέξει και το μήνυμα θα εμφανιστεί στην οθόνη δύο φορές. [Για τις εκδόσεις Delphi 1 και 2 ord (True) =+1 για οποιονδήποτε τύπο boolean.]

    Τύπος χαρακτήρα . Η τιμή ενός τύπου χαρακτήρα είναι το σύνολο όλων των χαρακτήρων του υπολογιστή. Σε κάθε χαρακτήρα εκχωρείται ένας ακέραιος αριθμός στην περιοχή 0...255. Αυτός ο αριθμός χρησιμεύει ως κωδικός για την εσωτερική αναπαράσταση του συμβόλου και επιστρέφεται από τη συνάρτηση ord.

    Για την κωδικοποίηση στα Windows, χρησιμοποιείται ο κώδικας ANSI (ονομάστηκε έτσι από το Αμερικανικό Εθνικό Ινστιτούτο Προτύπων, το αμερικανικό ινστιτούτο τυποποίησης που πρότεινε αυτόν τον κωδικό). Το πρώτο μισό των χαρακτήρων υπολογιστή με κωδικούς 0... 127 αντιστοιχεί στον Πίνακα 1.3. Το δεύτερο μισό των χαρακτήρων με κωδικούς 128...255 διαφέρει για διαφορετικές γραμματοσειρές. Οι τυπικές γραμματοσειρές των Windows Arial Cyr, Courier New Cyr και Times New Roman χρησιμοποιούν τους τελευταίους 64 κωδικούς (από 192 έως 256) για να αντιπροσωπεύουν κυριλλικούς χαρακτήρες (χωρίς τα γράμματα "ё" και "Ё"): "A"... "Z" είναι κωδικοποιημένες τιμές 192..223, "a"... "i" - 224...255. Τα σύμβολα «Ё» και «ε» έχουν κωδικούς 168 και 184, αντίστοιχα.

    Πίνακας 1.3 - Κωδικοποίηση χαρακτήρων σύμφωνα με το πρότυπο ANSI

    Κώδικας Σύμβολο Κώδικας. Σύμβολο Κώδικας. Σύμβολο Κώδικας Σύμβολο
    0 NUL 32 B.L. 64 @ 96 "
    1 ΖΩΝ 33 ! 65 ΕΝΑ 97 ΕΝΑ
    2 STX 34 66 ΣΕ 98 σι
    3 ETX 35 # 67 ΜΕ 99 Με
    4 ΕΟΤ 36 $ 68 ρε 100 ρε
    5 ENQ 37 % 69 μι 101 μι
    6 ACK 38 & 70 φά 102 φά
    7 BEL 39 " 71 σολ 103 ρε
    8" B.S. 40 ( 72 Ν 104 η
    9 HT 41 ) 73 Εγώ 105 Εγώ
    10 LF 42 * 74 J 106 ι
    11 VT 43 + 75 ΠΡΟΣ ΤΗΝ 107 κ
    12 FF 44 φά 76 μεγάλο 108 1
    13 CR 45 - 77 Μ 109 Μ
    14 ΕΤΣΙ 46 78 Ν 110 n
    15 ΣΙ. 47 / 79 0 111 Ο
    16 ΔΕΛ 48 0 80 R 112 Π
    17 DC1 49 1 81 Q 113 q
    18 DC2 50 2 82 R 114 r
    19 DC3 51 3 83 μικρό 115 μικρό
    20 DC 4 52 4 84 Τ 116 t
    21 Ν.Α.Κ. 53 5 85 U 117 u
    22 ΣΥΝ 54 6 86 V 118 v
    23 ETB 55 7 87 W 119 W
    24 ΜΠΟΡΩ 56 8 88 Χ 120 Χ
    25 Η Ε.Μ. 57 9 89 Υ 121 U
    26 ΥΠΟ 58 : 90 Ζ .122 z
    27 ESC 59 ; 91 t 123 {
    28 FS 60 < 92 \ 124 1
    29 Γ.Σ. 61 = 93 ] 125 }
    30 R.S. 62 > 94 μεγάλο 126 ~
    31 ΜΑΣ 63 φά 95 127 r

    Οι χαρακτήρες με κωδικούς 0...31 αναφέρονται σε κωδικούς υπηρεσίας. Εάν αυτοί οι κωδικοί χρησιμοποιούνται στο κείμενο χαρακτήρων του προγράμματος, θεωρούνται κενά.

    Για να πληκτρολογήσετε απανθρακώνωισχύουν σχεσιακές λειτουργίες, καθώς και ενσωματωμένες λειτουργίες:

    Χαρακτήρας (γ)- λειτουργία τύπου απανθρακώνω; μετατρέπει μια έκφραση σε τύπο Ψηφιόλεξησε ένα σύμβολο και το επιστρέφει με την αξία του.

    UpCase(CH)- λειτουργία τύπου απανθρακώνω; επιστρέφει ένα κεφαλαίο γράμμα αν το сн είναι πεζό λατινικό γράμμα, διαφορετικά επιστρέφει το ίδιο το σύμβολο сн (για Κυριλλικό, επιστρέφει τον αρχικό χαρακτήρα).

    Τύπος Enum . Ένας απαριθμημένος τύπος καθορίζεται από μια απαρίθμηση των τιμών που μπορεί να λάβει. Κάθε τιμή ονομάζεται από κάποιο αναγνωριστικό και βρίσκεται σε μια λίστα που περιβάλλεται από παρενθέσεις, για παράδειγμα:

    χρώματα = (κόκκινο, λευκό, μπλε).

    Η χρήση απαριθμημένων τύπων κάνει τα προγράμματα πιο οπτικά.

    Η αντιστοιχία μεταξύ των τιμών ενός απαριθμημένου τύπου και των τακτικών αριθμών αυτών των τιμών καθορίζεται από τη σειρά απαρίθμησης: η πρώτη τιμή στη λίστα λαμβάνει τον τακτικό αριθμό 0, η δεύτερη - 1, κ.λπ. Η μέγιστη χωρητικότητα του ένας απαριθμημένος τύπος είναι 65536 τιμές, οπότε στην πραγματικότητα ο απαριθμημένος τύπος καθορίζει κάποιο υποσύνολο ολόκληρου του τύπου λέξηκαι μπορεί να θεωρηθεί ως συμπαγής δήλωση μιας ομάδας ακεραίων σταθερών με τιμές 0, 1, κ.λπ.

    Η χρήση απαριθμημένων τύπων αυξάνει την αξιοπιστία των προγραμμάτων επιτρέποντάς σας να ελέγχετε τις τιμές που λαμβάνουν οι αντίστοιχες μεταβλητές. Το Object Pascal επιτρέπει την αντίστροφη μετατροπή: οποιαδήποτε έκφραση τύπου Λέξημπορεί να μετατραπεί σε τιμή ενός απαριθμημένου τύπου, εκτός εάν η τιμή της ακέραιας έκφρασης υπερβαίνει την καρδινάτητα αυτού του τύπου. Αυτή η μετατροπή επιτυγχάνεται χρησιμοποιώντας μια αυτόματα δηλωμένη συνάρτηση με το όνομα του απαριθμούμενου τύπου.

    Εύρος τύπου . Ένας τύπος εύρους είναι ένα υποσύνολο του βασικού του τύπου, ο οποίος μπορεί να είναι οποιοσδήποτε τακτικός τύπος εκτός από έναν τύπο εύρους.

    Ένας τύπος εύρους ορίζεται από τα όρια των τιμών του εντός του βασικού τύπου:

    <мин.знач.>..<макс.знач.>

    Εδώ<мин. знач. >- ελάχιστη τιμή εύρους τύπου·<макс. знач. >- η μέγιστη τιμή του.

    Ο τύπος εύρους δεν χρειάζεται να περιγράφεται στην ενότητα τύπου, αλλά μπορεί να καθοριστεί απευθείας κατά τη δήλωση της μεταβλητής.

    Κατά τον προσδιορισμό ενός τύπου εύρους, πρέπει να ακολουθείτε τους ακόλουθους κανόνες:

    δύο χαρακτήρες ".." αντιμετωπίζονται ως ένας χαρακτήρας, επομένως δεν επιτρέπονται κενά μεταξύ τους. το αριστερό περίγραμμα του εύρους δεν πρέπει να υπερβαίνει το δεξί του όριο.

    Ένας τύπος εύρους κληρονομεί όλες τις ιδιότητες του βασικού του τύπου, αλλά με τους περιορισμούς της χαμηλότερης ισχύος του. Ειδικότερα, εάν οριστεί μια μεταβλητή.

    Η τυπική βιβλιοθήκη Object Pascal περιλαμβάνει δύο λειτουργίες που υποστηρίζουν την εργασία με τύπους εύρους:

    Υψηλό (x)- επιστρέφει τη μέγιστη τιμή του τύπου εύρους στον οποίο ανήκει η μεταβλητή x.

    Χαμηλό (x)- επιστρέφει την ελάχιστη τιμή του τύπου εύρους.

    1.1.2 Πραγματικοί τύποι

    Σε αντίθεση με τους τακτικούς τύπους, των οποίων οι τιμές αντιστοιχίζονται πάντα σε μια σειρά από ακέραιους αριθμούς και επομένως αντιπροσωπεύονται με απόλυτη ακρίβεια στον υπολογιστή, οι τιμές των πραγματικών τύπων ορίζουν έναν αυθαίρετο αριθμό μόνο με κάποια πεπερασμένη ακρίβεια ανάλογα με την εσωτερική μορφή του πραγματικού αριθμού .

    Πίνακας 1.4 - Πραγματικοί τύποι

    Σε προηγούμενες εκδόσεις του τύπου Delphi 1...3 Πραγματικόςκαταλάμβανε 6 byte και είχε εύρος τιμών από 2,9*10-39 έως 1,7*1038. Στις εκδόσεις 4 και 5 αυτός ο τύπος είναι ισοδύναμος με τον τύπο Διπλό. Εάν απαιτείται (για λόγους συμβατότητας) χρησιμοποιήστε 6-byte Πραγματικός, πρέπει να καθορίσετε μια οδηγία μεταγλωττιστή (SREALCOMPATIBILITY ON).

    Όπως φαίνεται από τον πίνακα. 1.4, ένας πραγματικός αριθμός στο Object Pascal καταλαμβάνει από 4 έως 10 συνεχόμενα byte και έχει την ακόλουθη δομή στη μνήμη του υπολογιστή.

    Εδώ s είναι το ψηφίο πρόσημου του αριθμού. e - εκθετικό μέρος. περιέχει δυαδική σειρά. Το m είναι η μάντισσα του αριθμού.

    ΜάντισσαΤο m έχει μήκος 23 (για μονόκλινο) έως 63 (για Επεκτάθηκε) δυαδικά bit, που εξασφαλίζει ακρίβεια 7...8 για μονόκλινοκαι 19...20 για Επεκτάθηκεδεκαδικά ψηφία. Η υποδιαστολή (κόμμα) υπονοείται πριν από το αριστερό (πιο σημαντικό) ψηφίο της μάντισσας, αλλά όταν λειτουργεί σε έναν αριθμό, η θέση του μετατοπίζεται προς τα αριστερά ή προς τα δεξιά σύμφωνα με τη δυαδική σειρά του αριθμού που είναι αποθηκευμένος στο εκθετικό τμήμα , επομένως οι πράξεις σε πραγματικούς αριθμούς ονομάζονται αριθμητική κινητής υποδιαστολής (κόμμα).

    Σημειώστε ότι ο αριθμητικός συνεπεξεργαστής επεξεργάζεται πάντα αριθμούς στη μορφή Επεκτάθηκε, και οι άλλοι τρεις πραγματικοί τύποι σε αυτήν την περίπτωση λαμβάνονται με απλή περικοπή των αποτελεσμάτων στο απαιτούμενο μέγεθος και χρησιμοποιούνται κυρίως για εξοικονόμηση μνήμης.

    Οι τύποι καταλαμβάνουν μια ειδική θέση στο Object Pascal συνθΚαι Νόμισμα, οι οποίοι αντιμετωπίζονται ως πραγματικοί αριθμοί με κλασματικά μέρη σταθερού μήκους: in συνθτο κλασματικό μέρος έχει μήκος 0 ψηφία, δηλαδή απλά απουσιάζει, σε νόμισματο μήκος του κλασματικού μέρους είναι 4 δεκαδικά ψηφία. Στην πραγματικότητα, και οι δύο τύποι ορίζουν έναν μεγάλο υπογεγραμμένο ακέραιο που αποθηκεύει 19...20 σημαντικά δεκαδικά ψηφία (εσωτερικά καταλαμβάνουν 8 συνεχόμενα byte). Ταυτόχρονα, σε εκφράσεις συνθΚαι νόμισμαείναι πλήρως συμβατά με οποιουσδήποτε άλλους πραγματικούς τύπους: όλες οι πραγματικές πράξεις ορίζονται σε αυτές, μπορούν να χρησιμοποιηθούν ως ορίσματα σε μαθηματικές συναρτήσεις κ.λπ. Ο καταλληλότερος τομέας εφαρμογής για αυτούς τους τύπους είναι οι λογιστικοί υπολογισμοί.

    1.1.3 Τύπος ημερομηνίας-ώρας

    Ο τύπος ημερομηνίας ώρας ορίζεται από ένα τυπικό αναγνωριστικό TDateTimeκαι έχει σχεδιαστεί για να αποθηκεύει ταυτόχρονα την ημερομηνία και την ώρα. Στην εσωτερική αναπαράσταση καταλαμβάνει 8 byte και παρόμοια νόμισμαείναι ένας πραγματικός αριθμός με σταθερό κλασματικό μέρος: το ακέραιο μέρος του αριθμού αποθηκεύει την ημερομηνία και το κλασματικό μέρος αποθηκεύει την ώρα. Η ημερομηνία ορίζεται ως ο αριθμός των ημερών που έχουν περάσει από τις 30 Δεκεμβρίου 1899 και ο χρόνος ως το κλάσμα μιας ημέρας που έχει περάσει από 0 ώρες, επομένως η τιμή 36444.837 αντιστοιχεί στην ημερομηνία 10/11/1999 και την ώρα 20:05. Ο αριθμός των ημερών μπορεί να είναι αρνητικός, αλλά τιμές μικρότερες από -693594 (που αντιστοιχεί στην ημερομηνία 00.00.0000 από τη Γέννηση του Χριστού) αγνοούνται από τις συναρτήσεις για τη μετατροπή μιας ημερομηνίας σε τύπο συμβολοσειράς.

    Πάνω από τον τύπο δεδομένων TDateTimeορίζονται οι ίδιες πράξεις όπως στους πραγματικούς αριθμούς και οι εκφράσεις αυτού του τύπου μπορούν να περιλαμβάνουν σταθερές και μεταβλητές ακεραίων και πραγματικών τύπων.

    Επειδή ο τύπος TDateTimeσυμβατό με τη μορφή πραγματικών αριθμών, μπορείτε εύκολα να προσδιορίσετε μια ημερομηνία που είναι αρκετές ημέρες πριν ή πίσω από μια δεδομένη: για να γίνει αυτό, αρκεί να προσθέσετε ή να αφαιρέσετε τον επιθυμητό ακέραιο αριθμό από τη δεδομένη ημερομηνία, αντίστοιχα.

    1.2 Δομημένοι τύποι

    Οποιοσδήποτε από τους δομημένους τύπους (και στο Object Pascal υπάρχουν τέσσερις από αυτούς: πίνακες, εγγραφές, σύνολα και αρχεία) χαρακτηρίζεται από την πολλαπλότητα των στοιχείων που σχηματίζουν αυτόν τον τύπο. Κάθε στοιχείο, με τη σειρά του, μπορεί να ανήκει σε έναν δομημένο τύπο, ο οποίος μας επιτρέπει να μιλάμε για πιθανή ένθεση τύπων. Το αντικείμενο Pascal επιτρέπει αυθαίρετο βάθος ένθεσης τύπων, αλλά το συνολικό μήκος οποιουδήποτε από αυτά στην εσωτερική αναπαράσταση δεν πρέπει να υπερβαίνει τα 2 GB.

    Για συμβατότητα με το τυπικό Pascal, το Object Pascal επιτρέπει την τοποθέτηση μιας δεσμευμένης λέξης πριν από μια δήλωση δομημένου τύπου συσκευασμένα, δίνοντας εντολή στον μεταγλωττιστή να αποθηκεύει όποτε είναι δυνατόν τη μνήμη που έχει εκχωρηθεί για αντικείμενα δομημένου τύπου. αλλά ο μεταγλωττιστής στην πραγματικότητα αγνοεί αυτήν την οδηγία: η "συσκευασία" δεδομένων στο Object Pascal γίνεται αυτόματα όπου είναι δυνατόν.

    1.2.1 Πίνακες

    Οι πίνακες στο Object Pascal είναι από πολλές απόψεις παρόμοιοι με παρόμοιους τύπους δεδομένων σε άλλες γλώσσες προγραμματισμού. Ένα χαρακτηριστικό γνώρισμα των πινάκων είναι ότι όλα τα στοιχεία τους είναι δεδομένα του ίδιου τύπου (πιθανώς δομημένα). Αυτά τα εξαρτήματα μπορούν εύκολα να οργανωθούν και σε οποιοδήποτε από αυτά είναι προσβάσιμο απλά προσδιορίζοντας τον αύξοντα αριθμό του.

    Η περιγραφή του τύπου πίνακα καθορίζεται ως εξής:

    <имя типа>= πίνακας [<сп.инд.типов>] του<тип>;

    Εδώ<имя типа>- σωστό αναγνωριστικό συστοιχία, από- δεσμευμένες λέξεις (πίνακας, από);<сп.инд.типов>- μια λίστα με έναν ή περισσότερους τύπους ευρετηρίου, διαχωρισμένους με κόμματα. Οι αγκύλες που πλαισιώνουν τη λίστα αποτελούν συντακτική απαίτηση.<тип>- οποιοδήποτε είδος Αντικειμένου Pascal.

    Οποιοιδήποτε τακτικοί τύποι με χωρητικότητα όχι μεγαλύτερη από 2 GB μπορούν να χρησιμοποιηθούν ως τύποι ευρετηρίου στο Object Pascal (δηλ. εκτός LongWordΚαι Int64)

    Το βάθος της ένθεσης των δομημένων τύπων γενικά και, κατά συνέπεια, των πινάκων, είναι αυθαίρετο, επομένως ο αριθμός των στοιχείων στη λίστα τύπων ευρετηρίου (μέγεθος πίνακα) δεν είναι περιορισμένος, ωστόσο, το συνολικό μήκος της εσωτερικής αναπαράστασης οποιουδήποτε ο πίνακας δεν μπορεί να είναι μεγαλύτερος από 2 GB. Στη μνήμη του υπολογιστή, τα στοιχεία του πίνακα διαδέχονται το ένα το άλλο με τέτοιο τρόπο ώστε όταν μετακινούνται από τις χαμηλές στις υψηλές διευθύνσεις, το δεξιότερο ευρετήριο του πίνακα αλλάζει πιο γρήγορα.

    Στο Object Pascal, μπορείτε να χρησιμοποιήσετε έναν μόνο τελεστή εκχώρησης για να μεταφέρετε όλα τα στοιχεία ενός πίνακα σε έναν άλλο πίνακα του ίδιου τύπου.

    1.2.2 Εγγραφές

    Ρεκόρ είναι μια δομή δεδομένων που αποτελείται από έναν σταθερό αριθμό στοιχείων που ονομάζονται πεδία μιας εγγραφής. Σε αντίθεση με έναν πίνακα, τα στοιχεία (πεδία) μιας εγγραφής μπορεί να είναι διαφορετικών τύπων. Για να καταστεί δυνατή η αναφορά σε ένα ή άλλο στοιχείο μιας εγγραφής, τα πεδία ονομάζονται.

    Η δομή μιας δήλωσης τύπου post είναι:

    <имятипа>= εγγραφή<сп.полей>τέλος;

    Εδώ<имя типа>- σωστό αναγνωριστικό εγγραφή/τέλος- δεσμευμένες λέξεις (ρεκόρ, τέλος).<сп.полей>- λίστα πεδίων. είναι μια ακολουθία τμημάτων μιας εγγραφής που χωρίζονται με ερωτηματικό.

    Κάθε τμήμα μιας εγγραφής αποτελείται από ένα ή περισσότερα αναγνωριστικά πεδίων, διαχωρισμένα με κόμμα.

    Προσφορά περίπτωση που, το οποίο ανοίγει το τμήμα παραλλαγής, είναι επιφανειακά παρόμοιο με τον αντίστοιχο τελεστή επιλογής, αλλά στην πραγματικότητα παίζει μόνο το ρόλο ενός είδους λέξης υπηρεσίας που υποδηλώνει την αρχή του τμήματος παραλλαγής. Αυτός είναι ο λόγος για τον οποίο στο τέλος της παραλλαγής δεν πρέπει να βάλετε τέλοςσαν ένα ζευγάρι να περίπτωση που. (Δεδομένου ότι το μέρος της παραλλαγής είναι πάντα το τελευταίο στην εγγραφή, ακολουθείται από το τέλος, αλλά μόνο ως ζευγάρι για εγγραφή). Κλειδί επιλογής πρότασης περίπτωση πουουσιαστικά αγνοείται από τον μεταγλωττιστή: η μόνη απαίτηση για αυτό στο Object Pascal είναι ότι το κλειδί ορίζει κάποιο τυπικό ή προδηλωμένο τύπο τακτικού.

    Τα ονόματα πεδίων πρέπει να είναι μοναδικά μέσα στην εγγραφή όπου δηλώνονται, ωστόσο, εάν οι εγγραφές περιέχουν πεδία εγγραφών, δηλαδή είναι ένθετα μεταξύ τους, τα ονόματα μπορούν να επαναληφθούν σε διαφορετικά επίπεδα ένθεσης.

    1.2.3 Σετ

    Σκηνικά - πρόκειται για σύνολα αντικειμένων του ίδιου τύπου που σχετίζονται λογικά μεταξύ τους. Η φύση των σχέσεων μεταξύ των αντικειμένων υπονοείται μόνο από τον προγραμματιστή και δεν ελέγχεται με κανέναν τρόπο από το Object Pascal. Ο αριθμός των στοιχείων που περιλαμβάνονται σε ένα σύνολο μπορεί να κυμαίνεται από 0 έως 256 (ένα σύνολο που δεν περιέχει στοιχεία ονομάζεται κενό). Είναι η ασυνέπεια του αριθμού των στοιχείων τους που τα σύνολα διαφέρουν από τους πίνακες και τις εγγραφές.

    Δύο σύνολα θεωρούνται ισοδύναμα εάν και μόνο εάν όλα τα στοιχεία τους είναι ίδια και η σειρά των στοιχείων στο σύνολο είναι αδιάφορη. Εάν όλα τα στοιχεία ενός συνόλου περιλαμβάνονται επίσης σε ένα άλλο, το πρώτο σύνολο λέγεται ότι περιλαμβάνεται στο δεύτερο. Ένα κενό σύνολο περιλαμβάνεται σε οποιοδήποτε άλλο σύνολο.

    Η περιγραφή του τύπου συνόλου είναι:

    <имя типа>= σύνολο από<базовый тип>;

    Εδώ<имя типа>- σωστό αναγνωριστικό σύνολο απο- δεσμευμένες λέξεις (σύνολο, από);<базовый тип>- ο βασικός τύπος στοιχείων συνόλου, που μπορεί να είναι οποιοσδήποτε τακτικός τύπος, εκτός Word, Integer, Longint, Int64 .

    Για τον ορισμό ενός συνόλου, χρησιμοποιείται ο λεγόμενος κατασκευαστής συνόλου: μια λίστα προδιαγραφών των στοιχείων του συνόλου, διαχωρισμένες με κόμματα. ο κατάλογος περιβάλλεται από αγκύλες. Οι προδιαγραφές στοιχείων μπορεί να είναι σταθερές ή εκφράσεις ενός βασικού τύπου ή ένας τύπος εύρους του ίδιου βασικού τύπου.

    Η εσωτερική δομή του συνόλου είναι τέτοια που σε κάθε στοιχείο του εκχωρείται ένα δυαδικό ψηφίο (ένα bit). εάν ένα στοιχείο περιλαμβάνεται σε ένα σύνολο, το αντίστοιχο bit έχει τιμή 1, διαφορετικά - 0. Ταυτόχρονα, η ελάχιστη μονάδα μνήμης είναι ένα byte που περιέχει 8 bit, οπότε ο μεταγλωττιστής εκχωρεί ένα byte στα σύνολα, και με αποτέλεσμα η ισχύς καθενός από αυτά να γίνει ίση με 8 στοιχεία. Η μέγιστη χωρητικότητα του σετ είναι 256 στοιχεία. Για τέτοια σύνολα, ο μεταγλωττιστής εκχωρεί 16 γειτονικά byte.

    Και ένα ακόμη πείραμα: αλλάξτε το εύρος του βασικού τύπου σε 1..256. Αν και η χωρητικότητα αυτού του τύπου είναι 256 στοιχεία, κατά την προσπάθεια μεταγλώττισης ενός προγράμματος ο μεταγλωττιστής θα αναφέρει το σφάλμα: Τα σύνολα μπορεί να έχουν το πολύ 256 στοιχεία επειδή η αρίθμηση των στοιχείων συνόλου ξεκινά από το μηδέν ανεξάρτητα από το κάτω όριο που δηλώνεται στο πρόγραμμα. Ο μεταγλωττιστής επιτρέπει τη χρήση ως βασικού τύπου ενός τύπου ακέραιου εύρους με ελάχιστο όριο 0 και μέγιστο 255 ή οποιουδήποτε απαριθμημένου τύπου με όχι περισσότερα από 256 στοιχεία (η μέγιστη καρδινάτητα ενός απαριθμημένου τύπου είναι 65536 στοιχεία).

    1.3 Χορδές

    Οι ακόλουθοι τύποι χρησιμοποιούνται για την επεξεργασία κειμένου στο Object Pascal:

    κοντό κορδόνι shortstringή συμβολοσειρά [n], όπου n<= 255;

    μακρύ κορδόνι σειρά ;

    φαρδιά γραμμή WideString ;

    μηδενική συμβολοσειρά τερματικού pchar .

    Το κοινό χαρακτηριστικό αυτών των τύπων είναι ότι κάθε συμβολοσειρά αντιμετωπίζεται ως ένας μονοδιάστατος πίνακας χαρακτήρων, ο αριθμός των χαρακτήρων στους οποίους μπορεί να αλλάξει σε ένα πρόγραμμα που εκτελείται: για τη συμβολοσειρά [n], το μήκος συμβολοσειράς αλλάζει από 0 σε n, για σειράΚαι pchar- από 0 έως 2 GB.

    Το Standard Pascal χρησιμοποιεί μόνο σύντομες χορδές Συμβολοσειρά [n]. Στη μνήμη, σε μια τέτοια συμβολοσειρά εκχωρούνται n+i byte, το πρώτο byte περιέχει το τρέχον μήκος της συμβολοσειράς και οι ίδιοι οι χαρακτήρες βρίσκονται ξεκινώντας από το 2ο byte. Δεδομένου ότι το μήκος της συμβολοσειράς σε αυτήν την περίπτωση είναι ένα byte, το μέγιστο μήκος μιας μικρής συμβολοσειράς δεν μπορεί να υπερβαίνει τους 255 χαρακτήρες. Ο τυπικός τύπος χρησιμοποιείται για να δηλώσει μια μικρή συμβολοσειρά μέγιστου μήκους ShortString(ισοδύναμος Σειρά).

    Τα Windows χρησιμοποιούν ευρέως συμβολοσειρές μηδενικού τερματικού, οι οποίες είναι συμβολοσειρές χαρακτήρων που οριοθετούνται από τον χαρακτήρα #o. Το μέγιστο μήκος μιας τέτοιας συμβολοσειράς περιορίζεται μόνο από τη διαθέσιμη μνήμη και μπορεί να είναι πολύ μεγάλο.

    Ένας νέος τύπος έχει εισαχθεί σε εκδόσεις 32-bit του Delphi σειρά, συνδυάζοντας τις ανέσεις και των δύο τύπων. Όταν εργάζεστε με αυτόν τον τύπο, η μνήμη εκχωρείται όπως απαιτείται (δυναμικά) και περιορίζεται από τη διαθέσιμη μνήμη που είναι διαθέσιμη στο πρόγραμμα.

    1.4 Δείκτες και δυναμική μνήμη

    1.4.1 Δυναμική μνήμη

    Δυναμική μνήμη- αυτή είναι η μνήμη RAM του υπολογιστή που παρέχεται στο πρόγραμμα κατά τη λειτουργία του. Δυναμική τοποθέτηση δεδομένων σημαίνει τη χρήση δυναμικής μνήμης απευθείας κατά την εκτέλεση του προγράμματος. Αντίθετα, η στατική κατανομή γίνεται από τον μεταγλωττιστή Object Pascal όταν το πρόγραμμα μεταγλωττίζεται. Με τη δυναμική τοποθέτηση, ούτε ο τύπος ούτε η ποσότητα των δεδομένων που πρόκειται να τοποθετηθούν είναι γνωστά εκ των προτέρων.

    1.4.2 Πινακίδες

    Η RAM PC είναι μια συλλογή κελιών για την αποθήκευση πληροφοριών - bytes, καθένα από τα οποία έχει τον δικό του αριθμό. Αυτοί οι αριθμοί ονομάζονται διευθύνσεις, σας επιτρέπουν να έχετε πρόσβαση σε οποιοδήποτε byte μνήμης. Το Object Pascal παρέχει στον προγραμματιστή ένα ευέλικτο μέσο διαχείρισης δυναμικής μνήμης - τους λεγόμενους δείκτες. Ένας δείκτης είναι μια μεταβλητή που περιέχει ως τιμή τη διεύθυνση ενός byte μνήμης. Χρησιμοποιώντας δείκτες, μπορείτε να τοποθετήσετε οποιονδήποτε από τους τύπους δεδομένων που είναι γνωστοί στο Object Pascal στη δυναμική μνήμη. Μόνο μερικά από αυτά ( Byte, Char, ShortInt, Boolean) καταλαμβάνουν ένα byte στην εσωτερική αναπαράσταση, τα υπόλοιπα - πολλά γειτονικά. Επομένως, ο δείκτης απευθύνεται στην πραγματικότητα μόνο στο πρώτο byte δεδομένων.

    Συνήθως, ένας δείκτης συσχετίζεται με κάποιο τύπο δεδομένων. Θα ονομάσουμε τέτοιους δείκτες πληκτρολογημένους. Για να δηλώσετε έναν πληκτρολογημένο δείκτη, χρησιμοποιήστε το εικονίδιο ^, το οποίο βρίσκεται μπροστά από τον αντίστοιχο τύπο.

    Στο Object Pascal, μπορείτε να δηλώσετε έναν δείκτη χωρίς να χρειάζεται να τον συσχετίσετε με κάποιον συγκεκριμένο τύπο δεδομένων. Αυτό γίνεται χρησιμοποιώντας τον τυπικό τύπο δείκτης, Για παράδειγμα:

    Οι δείκτες αυτού του είδους θα ονομάζονται untyped. Δεδομένου ότι οι μη πληκτρολογημένοι δείκτες δεν σχετίζονται με έναν συγκεκριμένο τύπο, μπορούν να χρησιμοποιηθούν για τη δυναμική κατανομή δεδομένων των οποίων η δομή και ο τύπος αλλάζουν καθώς εκτελείται το πρόγραμμα.

    Όπως αναφέρθηκε, οι τιμές των δεικτών είναι οι διευθύνσεις των μεταβλητών στη μνήμη, επομένως θα περίμενε κανείς ότι η τιμή ενός δείκτη μπορεί να μεταβιβαστεί σε έναν άλλο. Στην πραγματικότητα αυτό δεν είναι αλήθεια. Στο Object Pascal, μπορείτε να μεταβιβάσετε μόνο τιμές μεταξύ δεικτών που σχετίζονται με τον ίδιο τύπο δεδομένων.

    1.4.3 Εκχώρηση και απελευθέρωση δυναμικής μνήμης

    Όλη η δυναμική μνήμη στο Object Pascal αντιμετωπίζεται ως ένας συνεχής πίνακας byte, ο οποίος ονομάζεται σωρό.

    Η μνήμη για οποιαδήποτε δυναμικά εκχωρημένη μεταβλητή εκχωρείται με τη διαδικασία New. Η παράμετρος για την κλήση αυτής της διαδικασίας είναι ένας πληκτρολογημένος δείκτης. Ως αποτέλεσμα της πρόσβασης, ο δείκτης αποκτά μια τιμή που αντιστοιχεί στη διεύθυνση από την οποία μπορούν να τοποθετηθούν τα δεδομένα. Η τιμή στην οποία δείχνει ο δείκτης, δηλαδή τα πραγματικά δεδομένα που έχουν εκχωρηθεί στο σωρό, υποδεικνύεται από το σύμβολο ^, το οποίο τοποθετείται αμέσως μετά τον δείκτη. Εάν δεν υπάρχει σύμβολο ^ μετά τον δείκτη, τότε αυτό σημαίνει τη διεύθυνση όπου βρίσκονται τα δεδομένα. Έχει νόημα να σκεφτούμε ξανά αυτό που μόλις ειπώθηκε: η τιμή οποιουδήποτε δείκτη είναι μια διεύθυνση και για να υποδείξουμε ότι δεν μιλάμε για τη διεύθυνση, αλλά για τα δεδομένα που βρίσκονται σε αυτήν τη διεύθυνση, τοποθετείται ένα ^ μετά το δείκτης (μερικές φορές αναφέρεται ως δείκτης αποαναφοράς).

    Τα δυναμικά εκχωρημένα δεδομένα μπορούν να χρησιμοποιηθούν οπουδήποτε στο πρόγραμμα όπου είναι έγκυρα για σταθερές και μεταβλητές του κατάλληλου τύπου

    Η δυναμική μνήμη όχι μόνο μπορεί να αφαιρεθεί από το σωρό, αλλά και να επιστραφεί πίσω. Για να το κάνετε αυτό, χρησιμοποιήστε τη διαδικασία Διάθεσης. Για παράδειγμα, χειριστές

    Dispose(pJ);

    Dispose(pR);

    θα επιστρέψει στο σωρό τη μνήμη που είχε εκχωρηθεί προηγουμένως στους δείκτες pJ και pR (βλ. παραπάνω).

    Σημειώστε ότι η διαδικασία Διάθεση (pPtr) δεν αλλάζει την τιμή του δείκτη pPtr, αλλά επιστρέφει μόνο τη μνήμη που είχε συσχετιστεί προηγουμένως με αυτόν τον δείκτη στο σωρό. Ωστόσο, η εκ νέου εφαρμογή της διαδικασίας σε έναν ελεύθερο δείκτη θα οδηγήσει σε σφάλμα χρόνου εκτέλεσης. Ο προγραμματιστής μπορεί να επισημάνει τον ελευθερωμένο δείκτη με τη δεσμευμένη λέξη μηδέν.

    1.5 Ψευδώνυμα τύπου

    Για οποιοδήποτε τύπο μπορείτε να δηλώσετε όσα ψευδώνυμα θέλετε. Για παράδειγμα:

    TMyInteger = Ακέραιος;

    Στο μέλλον, το ψευδώνυμο μπορεί να χρησιμοποιηθεί με τον ίδιο τρόπο όπως ο βασικός τύπος:

    Mylnt: TMyInteger;

    Mylnt:= 2*Round(pi);

    Αυτού του είδους τα ψευδώνυμα χρησιμοποιούνται συνήθως για τη βελτίωση της ορατότητας του κώδικα προγράμματος. Ωστόσο, στο Object Pascal μπορείτε να δηλώσετε ψευδώνυμα με ισχυρή πληκτρολόγηση προσθέτοντας τον τύπο δεσμευμένης λέξης πριν από το όνομα του βασικού τύπου:

    TMyIntegerType = τύπος Integer;

    MylntVar: TMyIntegerType;

    Από την άποψη του μεταγλωττιστή, τα δακτυλογραφημένα ψευδώνυμα είναι συμβατά με τον βασικό τύπο σε διάφορα είδη εκφράσεων, αλλά στην πραγματικότητα δηλώνουν έναν νέο τύπο δεδομένων, επομένως δεν μπορούν να χρησιμοποιηθούν ως επίσημες παράμετροι για την κλήση υπορουτίνων αντί του βασικού τύπου. Αν, για παράδειγμα, δηλωθεί μια διαδικασία

    συνάρτηση MylntFunc(APar: ακέραιος): Ακέραιος;

    τότε μια τέτοια έκκληση προς αυτήν

    MylntFunc(MylntVar)

    θα θεωρηθεί λανθασμένη από τον μεταγλωττιστή.

    Τα ισχυρά πληκτρολογημένα ψευδώνυμα αναγκάζουν τον μεταγλωττιστή να δημιουργήσει πληροφορίες τύπου χρόνου εκτέλεσης (RTTI). Αυτές οι πληροφορίες χρησιμοποιούνται συνήθως από το περιβάλλον των Delphi για την υποστήριξη της λειτουργίας διαφόρων τύπων συντακτών.

    Η γνώση και η κατανόηση των τύπων δεδομένων είναι αναπόσπαστο μέρος του προγραμματισμού.

    Σε αυτό το μάθημα θα μάθουμε για τους τύπους δεδομένων στη γλώσσα προγραμματισμού Turbo Pascal.

    Στη γλώσσα Pascal, οποιαδήποτε αντικείμενα, π.χ. Οι σταθερές, οι μεταβλητές, οι τιμές συναρτήσεων ή οι εκφράσεις χαρακτηρίζονται από τους τύπους τους. Ένας τύπος ορίζει το σύνολο των έγκυρων τιμών για ένα αντικείμενο, καθώς και το σύνολο των λειτουργιών που ισχύουν για αυτό. Επιπλέον, ο τύπος καθορίζει τη μορφή της εσωτερικής αναπαράστασης δεδομένων στη μνήμη του υπολογιστή. Όσον αφορά τους τύπους αντικειμένων, η Pascal είναι μια στατική γλώσσα. Αυτό σημαίνει ότι ο τύπος ενός αντικειμένου, όπως μια μεταβλητή, καθορίζεται όταν δηλώνεται και δεν μπορεί να αλλάξει αργότερα.

    Δομή τύπων δεδομένων στο Pascal:

    Απλοί τύποι γλώσσας
    Οι απλοί τύποι περιλαμβάνουν τύπους τακτικού, πραγματικού, συμβολοσειράς και διεύθυνσης (δείκτη). Όλα καθορίζουν τον τύπο μιας μόνο τιμής.

    Τακτικοί τύποιχαρακτηρίζεται από το γεγονός ότι καθένα από αυτά έχει έναν πεπερασμένο αριθμό πιθανών τιμών, μεταξύ των οποίων καθιερώνεται μια γραμμική τάξη. Κάθε μία από τις τιμές μπορεί να συσχετιστεί με κάποιον ακέραιο αριθμό - τον αύξοντα αριθμό του.

    Ακέραιοι τύποι- δηλώνουν σύνολα ακεραίων σε διαφορετικά εύρη. Υπάρχουν πέντε ακέραιοι τύποι, που διαφέρουν ως προς το εύρος των έγκυρων τιμών και το μέγεθος της μνήμης RAM που καταλαμβάνουν. Οι τύποι ακέραιων αριθμών προσδιορίζονται με αναγνωριστικά: Byte, ShortInt, Word, Integer, LongInt. Τα χαρακτηριστικά τους φαίνονται στον παρακάτω πίνακα.

    Οι τιμές των τύπων ακεραίων γράφονται στο πρόγραμμα με τον συνήθη τρόπο:
    123 4 -3 +345 -699
    Η παρουσία υποδιαστολής σε συμβολισμό ακέραιου αριθμού είναι απαράδεκτη. Θα ήταν λάθος να γράψετε έναν ακέραιο όπως αυτό:
    123.0
    Εκτός από τον συνηθισμένο δεκαδικό συμβολισμό, είναι δυνατή η εγγραφή ακεραίων σε δεκαεξαδική μορφή χρησιμοποιώντας το πρόθεμα $, για παράδειγμα:
    $01AF $FF $1A $F0A1B
    Η περίπτωση των γραμμάτων Α, Β, ..., ΣΤ δεν έχει σημασία.

    Έγκυρες λειτουργίες:

    • - ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ;
    • - όλα τα αριθμητικά: +, - ,*, /, div, mod (με συνηθισμένη διαίρεση [/] το αποτέλεσμα είναι πραγματικό!)
    • - σύγκριση<, >, >=, <=, <>, =.
    Τύπος Boolean- αποτελείται από δύο μόνο τιμές: False (false) και True (true). Οι λέξεις False και True ορίζονται στη γλώσσα και είναι, στην πραγματικότητα, λογικές σταθερές. Η περίπτωση των γραμμάτων στη γραφή τους είναι ασήμαντη: ΛΑΘΟΣ = ψεύτικο. Οι τιμές αυτού του τύπου είναι αποτέλεσμα αξιολόγησης των υπό όρους και λογικών εκφράσεων και συμμετέχουν σε όλα τα είδη τελεστών υπό όρους της γλώσσας.
    Έγκυρες λειτουργίες:
    • - ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ;
    • - σύγκριση:<, >, >=, <=, <>, =;
    • - λογικές πράξεις: NOT, OR, AND, XOR
    Τύπος χαρακτήρα (χαρακτήρας)- αυτός είναι ένας τύπος δεδομένων που αποτελείται από έναν χαρακτήρα (σύμβολο, γράμμα, κωδικός). Μια τιμή Char μπορεί να είναι οποιοσδήποτε χαρακτήρας από το σύνολο χαρακτήρων ASCII. Εάν ένα σύμβολο έχει γραφική αναπαράσταση, τότε στο πρόγραμμα γράφεται περικλείεται σε μονά εισαγωγικά (απόστροφα), για παράδειγμα:
    "w" "s" "." "*" " "-(χώρος)
    Για να αναπαραστήσει την ίδια την απόστροφο, η εικόνα της διπλασιάζεται: """".
    Εάν ο χαρακτήρας δεν έχει γραφική αναπαράσταση, για παράδειγμα, χαρακτήρα tab ή χαρακτήρα επιστροφής, τότε μπορείτε να χρησιμοποιήσετε μια ισοδύναμη μορφή εγγραφής της τιμής του χαρακτήρα, που αποτελείται από το πρόθεμα # και τον κωδικό ASCII του χαρακτήρα:
    #9 #32 #13
    Έγκυρες λειτουργίες:
    • - ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ;
    • - σύγκριση:<, >, >=, <=, <>, =. Ο μεγαλύτερος χαρακτήρας είναι αυτός που έχει μεγαλύτερο αριθμό ASCII.
    Τύπος συμβολοσειράς (String, String[n])- Αυτός ο τύπος δεδομένων ορίζει ακολουθίες χαρακτήρων - συμβολοσειρών. Η παράμετρος n καθορίζει τον μέγιστο αριθμό χαρακτήρων ανά γραμμή. Εάν δεν προσδιορίζεται, θεωρείται n=255. Μια τιμή τύπου "string" σε ένα πρόγραμμα γράφεται ως μια ακολουθία χαρακτήρων που περικλείονται σε μονά εισαγωγικά (απόστροφα), για παράδειγμα
    "Αυτό είναι μια χορδή"
    Το "1234" είναι επίσης μια συμβολοσειρά, όχι ένας αριθμός
    "" - κενή γραμμή

    Έγκυρες λειτουργίες:
    • - ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ;
    • - προσθήκη (σύνδεση, συγχώνευση). για παράδειγμα, S:= "Ο χειμώνας"+" "+"έφθασε!";
    • - σύγκριση:<, >, >=, <=, <>, =. Οι συμβολοσειρές θεωρούνται ίσες εάν έχουν το ίδιο μήκος και είναι ισοδύναμες χαρακτήρα προς χαρακτήρα.
    Πραγματικοί τύποι- δηλώνουν σύνολα πραγματικών αριθμών σε διαφορετικά εύρη. Υπάρχουν πέντε πραγματικοί τύποι, που διαφέρουν ως προς το εύρος των αποδεκτών τιμών και το μέγεθος της κατειλημμένης μνήμης RAM. Οι πραγματικοί τύποι προσδιορίζονται με αναγνωριστικά: Real, Single, Double, Extended, Comp; Τα χαρακτηριστικά τους φαίνονται στον παρακάτω πίνακα.

    Τύπος Compαν και ταξινομείται ως πραγματικός τύπος, είναι στην πραγματικότητα ένας ακέραιος με ένα πολύ τεράστιο εύρος τιμών.
    Οι τιμές των πραγματικών τύπων μπορούν να γραφτούν σε ένα πρόγραμμα με διάφορους τρόπους:
    1.456 0.000134 -120.0 65432
    +345 0 -45 127E+12
    -1,5E-5 -1,6E+12 5E4 0,002E-6

    Θα ήταν λάθος να γράψετε έναν πραγματικό αριθμό όπως αυτό:
    0,5 (σωστό 0,5)
    12. (σωστά 12.0 ή 12)

    Ένας πραγματικός αριθμός σε μορφή κινητής υποδιαστολής (επιστημονική μορφή) γράφεται ως ζεύγος
    <мантисса>μι<порядок>
    Αυτός ο προσδιορισμός γίνεται κατανοητός ως «η μάντισσα πολλαπλασιασμένη επί δέκα σε δύναμη ίση με τη σειρά». Για παράδειγμα,
    -1,6E+12 αντιστοιχεί σε -1,6 1012

    Έγκυρες λειτουργίες:
    - ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ;
    - όλα τα αριθμητικά: +, - ,*, /;
    - σύγκριση:<, >, >=, <=, <>, =.

    Όταν συγκρίνετε πραγματικούς αριθμούς, θα πρέπει να θυμάστε ότι λόγω της ανακρίβειας της αναπαράστασής τους στη μνήμη του υπολογιστή (λόγω της αναπόφευκτης στρογγυλοποίησης), θα πρέπει να αποφύγετε να προσπαθήσετε να προσδιορίσετε την αυστηρή ισότητα δύο πραγματικών τιμών. Υπάρχει πιθανότητα η ισότητα να είναι ψευδής, ακόμα κι αν στην πραγματικότητα δεν είναι.

    Ένα εύρος ή (περιορισμένος τύπος) δεν είναι ένας προκαθορισμένος τύπος γλώσσας (όπως Integer ή Char) και επομένως δεν έχει κανένα αναγνωριστικό που να σχετίζεται με αυτό. Αυτός ο τύπος είναι είσοδος χρήστη. Χρησιμοποιώντας το μπορούμε να ορίσουμε έναν νέο τύπο που θα περιέχει τιμές μόνο από ένα περιορισμένο υποεύρος κάποιου βασικού τύπου. Ο βασικός τύπος μπορεί να είναι μόνο ένας ακέραιος τύπος, ένας τύπος Char (χαρακτήρας) και οποιοσδήποτε από τους τύπους απαρίθμησης που εισήγαγε ο προγραμματιστής.

    Για να εισαγάγετε έναν νέο τύπο - ένα εύρος - πρέπει να υποδείξετε στο μπλοκ περιγραφής τύπου TYPE το όνομα του εισαγόμενου τύπου και τα όρια του εύρους μέσω του ειδικού συμβόλου εύρους ".." (δύο κουκκίδες στη σειρά):
    ΤΥΠΟΣ
    Αιώνας = 1..21; (ακέραιος τύπος υποπεριοχής)
    CapsLetters = "A"."Z"; (υποκατηγορία τύπου Char)

    Δομημένοι τύποι γλώσσας

    Οι δομημένοι τύποι περιλαμβάνουν: πίνακα, εγγραφή, σύνολο, αρχείο κ.λπ. Όλοι ορίζουν τον τύπο (ή τους τύπους) κάποιας δομής δεδομένων.

    Πίνακας- μια διατεταγμένη δομή δεδομένων του ίδιου τύπου που τα αποθηκεύει διαδοχικά. Ο πίνακας πρέπει να έχει διαστάσεις που καθορίζουν πόσα στοιχεία είναι αποθηκευμένα στη δομή. Οποιοδήποτε στοιχείο σε έναν πίνακα μπορεί να προσεγγιστεί από το ευρετήριό του.

    Ο τύπος του πίνακα καθορίζεται από την κατασκευή:
    Πίνακας [εύρος] ElementType.

    Το εύρος σε αγκύλες υποδεικνύει τις τιμές του δείκτη του πρώτου και του τελευταίου στοιχείου στη δομή. Παραδείγματα δηλώσεων τύπων και μεταβλητών:

    TYPE Διάνυσμα = πίνακας Real; VAR V1: Διάνυσμα; V2: πίνακας Byte.
    Εδώ η μεταβλητή V1 ορίζεται χρησιμοποιώντας τον τύπο Vector που περιγράφεται παραπάνω. ο τύπος της μεταβλητής V2 κατασκευάζεται απευθείας στο στάδιο της περιγραφής της.

    Ως τύπος στοιχείου πίνακα, μπορείτε επίσης να καθορίσετε έναν πίνακα, σχηματίζοντας έτσι πολυδιάστατες δομές. Για παράδειγμα, μια περιγραφή μιας δισδιάστατης δομής (μήτρας) θα μοιάζει με αυτό:
    VAR M1: πίνακας πίνακα Byte. Το ίδιο πράγμα μπορεί να γραφτεί πολύ πιο συμπαγή: VAR M2: πίνακας Byte;
    Εδώ οι πίνακες M1 και M2 έχουν ακριβώς την ίδια δομή - μια τετράγωνη μήτρα μεγέθους 3x3.

    Η πρόσβαση σε ένα στοιχείο πίνακα γίνεται με τον καθορισμό του ευρετηρίου του, για παράδειγμα:

    Writeln(V1); (εμφάνιση του πρώτου στοιχείου του πίνακα V1) readln(M2) (εισαγωγή του τρίτου στοιχείου της δεύτερης σειράς του πίνακα M2)
    Αυτό ολοκληρώνει το μάθημα σχετικά με τους τύπους δεδομένων, το κείμενο αντιγράφηκε και επικολλήθηκε σχεδόν πλήρως (ο σύνδεσμος θα είναι παρακάτω), επειδή Δεν βλέπω το νόημα να πω αυτό το υλικό με δικά μου λόγια. Εάν η διαφορά μεταξύ των τύπων δεδομένων είναι τουλάχιστον λίγο σαφής, τότε αυτό είναι ήδη καλό.

    mob_info