Ορισμός Τύπων (Απαριθμητοί και άλλοι)
Στην Pascal μπορούμε να ορίσουμε δικού μας τύπους που μπορεί να είναι απαριθμητοί ή και όχι. Ο σκοπός αυτής της δυνατότητας είναι η δημιουργία κατανοητών προγραμμάτων, τόσο για τους προγραμματιστές, όσο και για άλλους, που ίσως ασχοληθούν μελλοντικά με τα προγράμματα αυτά.
Ένα παράδειγμα τύπων δεδομένων της Pascal είναι οι: Boolean, Char, Integer και LongInt.
Το τμήμα ορισμού τύπων ξεκινάει με τη δεσμευμένη λέξη Type, την οποία ακολουθούν ένας ή περισσότεροι ορισμοί τύπων. Κάθε ορισμός αποτελείται από ένα όνομα, ένα σύμβολο ισότητας, την περιγραφή του τύπου που καθορίζεται και τελειώνει με το ελληνικό ερωτηματικό “;”.
Η συντακτική μορφή ενός απαριθμητού τύπου είναι η εξής :
Type Όνομα = (προσδιοριστικό1[, προσδιοριστικό2...]);
Οι απαριθμητοί τύποι δεδομένων αποτελούνται από μια διατεταγμένη σειρά ΜΟΝΑΔΙΚΩΝ προσδιοριστικών. Η Pascal δίνει αύξοντες αριθμούς στα προσδιοριστικά του απαριθμητού τύπου, αρχίζοντας από το ΜΗΔΕΝ. Με τον τρόπο αυτό επιτυγχάνεται μια εσωτερική αναπαράσταση των προσδιοριστικών.
Ακολουθεί ένα παράδειγμα ορισμού απαριθμητού τύπου:
Type japanese_cars = (honda, isuzu, nissan, toyota); Var rental_car : japanese_cars; Begin rental_car := nissan;
Έτσι το προσδιοριστικό nissan με την τιμή 2, εκχωρείται στην μεταβλητή rental_car με τύπο japanese_cars.
Όπως είπαμε στην αρχή εκτός από απαριθμητούς τύπους, με τη δεσμευμένη λέξη Type μπορούμε να ορίσουμε οποιονδήποτε δικό μας τύπο.
Παράδειγμα:
type days, age = integer; yes, true = boolean; name, city = string; fees, expenses = real; {* έτσι τώρα μπορούν να δημιουργηθούν μεταβλητές από τους τύπους που φτιάξαμε: *} var weekdays, holidays : days; choice: yes; student_name, emp_name : name; capital: city; cost: expenses;
Στα παραπάνω παραδείγματα τα days, age, yes, true, name, city, fees, expenses είναι τύποι και τα weekdays, holidays, choice, student_name, emp_name, capital, cost είναι μεταβλητές.
Χρησιμοποίηση τύπων στα προγράμματα
Για να χρησιμοποιήσουμε δικούς μας τύπους, πρώτα ορίζουμε τον τύπο, μετά ορίζουμε μεταβλητή αυτού του τύπου και τέλος καταχωρούμε στη μεταβλητή μια αρχική τιμή. Στη συνέχεια μπορούμε να χρησιμοποιήσουμε τη μεταβλητή αυτή στο προγραμμά μας.
Με τη σειρά:
- Ορισμός τύπου σε ξεχωριστό τμήμα κώδικα (τμήμα ορισμού τύπων)
- Ορισμός μεταβλητής αυτού του τύπου σε κάποιο τμήμα ορισμού μεταβλητών (συνάρτησης, προγράμματος)
- Εκχώρηση αρχικής τιμής στη μεταβλητή αυτή μέσα στο πεδίο της (variable scope)
Ακολουθεί η παρουσίαση των συναρτήσεων και των διαδικασιών που χρησιμοποιεί η Pascal για τον χειρισμό των απαριθμητών τύπων.
[table id=7 /]
Όλοι οι τύποι ακεραίων όπως επίσης ο τύπος Boolean και Char είναι απαριθμητοί.
Η διαφορά με τα ζευγάρια συναρτήσεων Succ, Pred και Inc, Dec είναι ότι οι πρώτες επιστρέφουν αντίστοιχα το επόμενο και προηγούμενο στοιχείο του τύπου ενώ οι δεύτερες αυξάνει και μειώνει αντίστοιχα την τιμή τους.
Στην περίπτωση των τύπων ακεραίων δεν υπάρχει διαφορά, όμως στις περιπτώσεις όπου ορίζουμε δικό μας απαριθμητό τύπο μπορεί να υπάρχει διαφορά γιατί μπορούμε να δώσουμε δικές μας τιμές στα προσδιοριστικά διαφορετικές απο αυτές που τους δίνει η Pascal.