Τακτικοί και απαριθμημένοι τύποι δεδομένων για τους Δελφούς

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

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

Τύποι σειράς

Τα καθοριστικά χαρακτηριστικά των σειριακών τύπων δεδομένων είναι: πρέπει να αποτελούνται από ένα πεπερασμένο αριθμό στοιχείων και πρέπει να παραγγέλλονται με κάποιο τρόπο.

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

instagram viewer
τύπος. Πιο συγκεκριμένα, ο Object Pascal έχει 12 προκαθορισμένους σειριακούς τύπους: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool και Char. Υπάρχουν επίσης δύο άλλες κλάσεις οριζόμενων από το χρήστη σειριακών τύπων: απαριθμημένοι τύποι και τύποι υποδιαιρέσεων.

Σε οποιουσδήποτε κανονικούς τύπους, πρέπει να έχει νόημα να μετακινείται προς τα πίσω ή προς τα εμπρός στο επόμενο στοιχείο. Για παράδειγμα, οι πραγματικοί τύποι δεν είναι κανονικοί επειδή η κίνηση προς τα πίσω ή προς τα εμπρός δεν έχει νόημα. Το ερώτημα "Ποιο είναι το επόμενο πραγματικό μετά το 2,5;" δεν έχει νόημα.

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

Λειτουργία Αποτέλεσμα
Ord (X) Δίνει το δείκτη του στοιχείου
Pred (X) Πηγαίνει στο στοιχείο που αναγράφεται πριν από τον Χ στον τύπο
Succ (X) Πηγαίνει στο στοιχείο που αναγράφεται μετά το Χ στον τύπο
Δεκ (Χ; n) Μετακινεί τα στοιχεία n πίσω (αν το n παραλείπεται μετακινεί 1 στοιχείο πίσω)
Inc (Χ; n) Μετακινεί τα στοιχεία n προς τα εμπρός (αν το n παραλείπεται μετακινεί 1 στοιχείο προς τα εμπρός)
Χαμηλή (X) Επιστρέφει τη χαμηλότερη τιμή στην περιοχή του σειριακού τύπου δεδομένων X
Υψηλή (X) Επιστρέφει την υψηλότερη τιμή στην περιοχή του σειριακού τύπου δεδομένων X


Για παράδειγμα, το High (Byte) επιστρέφει 255 επειδή η υψηλότερη τιμή του τύπου Byte είναι 255 και το Succ (2) επιστρέφει 3 επειδή ο 3 είναι ο διάδοχος του 2.

Σημείωση: Αν προσπαθήσουμε να χρησιμοποιήσουμε το Succ όταν στο τελευταίο στοιχείο οι Delphi θα δημιουργήσουν a Εξαίρεση χρόνου εκτέλεσης αν ο έλεγχος εμβέλειας είναι ενεργοποιημένος.

Δελφικός απαριθμημένος τύπος

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

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

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

var SomeDay: TWeekDays;

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

Ο Δελφός μας επιτρέπει να δουλεύουμε με τα στοιχεία σε έναν απαριθμημένο τύπο χρησιμοποιώντας ένα ευρετήριο που προέρχεται από τη σειρά στην οποία απαριθμούνται. Στο προηγούμενο παράδειγμα, τη Δευτέρα στο TWeekDays η δήλωση τύπου έχει τον δείκτη 0, την Τρίτη έχει το δείκτη 1 και ούτω καθεξής. Οι λειτουργίες που αναγράφονται στον πίνακα προτού αφήσουμε, για παράδειγμα, να χρησιμοποιήσουμε το Succ (Παρασκευή) για να "πάμε" το Σάββατο.

Τώρα μπορούμε να δοκιμάσουμε κάτι σαν:

Για SomeDay: = Δευτέρα προς το Κυριακή κάνωαν SomeDay = Τρίτη έπειτα
ShowMessage ('Τρίτη είναι!');

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

TPposition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter).

Χρησιμοποιούμε τη θέση (μέσω του Επιθεωρητή αντικειμένων) για να πάρουμε ή να ορίσουμε το μέγεθος και την τοποθέτηση του μορφή.

Υποκατηγορίες

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

τύπος TWorkDays = Δευτέρα.. Παρασκευή;

Εδώ οι TWorkDays περιλαμβάνουν τις αξίες Δευτέρα, Τρίτη, Τετάρτη, Πέμπτη και Παρασκευή.

Αυτό είναι όλα - τώρα πηγαίνετε να απαριθμήσετε!