Υποδιαστήματα Τακτικών Τύπων

Υποδιαστήματα Τακτικών Τύπων

Διάστημα τιμών

Συχνά κρίνεται σκόπιμο να περιοριστεί η χρήση μιας μεταβλητής μόνο σ’ ένα διάστημα τιμών.

Η Pascal διαθέτει τον τύπο του υποδιαστήματος με τον οποίο μπορούμε να ορίσουμε δικά μας υποδιαστήματα τακτικών τύπων περιορίζοντας το εύρος τους.

Το υποδιάστημα πρέπει να είναι ένα υποσύνολο ενός τακτικού τύπου , ο οποίος καλείται πατρικός (host).

Το διάστημα τιμών πρέπει να είναι ΣΥΝΕΧΕΣ.
Για να οριστεί ένα υποδιάστημα, απλά δηλώνουμε το όνομα του υποδιαστήματος, την κατώτατη και την ανώτατη τιμή του υποδιαστήματος και οι δύο αυτές τιμές διαχωρίζονται με δύο τελείες, ως εξής :
Όνομα_Υποδιαστήματος = Κατώτατη_Τιμή..Ανώτατη_Τιμή
<br/><br/>Οι δύο τιμές πρέπει να είναι σταθερές του ίδιου τύπου και η κατώτατη τιμή να είναι διατεταγμένη πριν από την ανώτατη τιμή, δηλ. :
Ord(Κατώτατη_Τιμή) <= Ord(Ανώτατη_Τιμή)
Η Pascal ελέγχει αυτόματα τα όρια των υποδιαστημάτων σε προτάσεις άμεσης εκχώρησης.

Υποδιαστήματα Ακεραίων

Με τα ακέραια υποδιαστήματα ορίζουμε ένα όριο έγκυρων ακέραιων τιμών, ως εξής :

Type
    screen_columns = 1..80;
    days = 1..31;
    months = 1..12;
    seconds = 0..59;
    minutes = 0..59;
    hours = 0..23;

Η Pascal επιτρέπει ακόμη και εκφράσεις με τους ορισμούς υποδιαστημάτων :

Const
    max_col = 80;
    max_row = 25;
    max_days_per_month = 31;
    months_per_year = 12;
    sec_per_minute = 60;
    minute_per_hour = 60;
    hour_per_day = 24;
Type
    screen_columns = 1..max_col;
    screen_rows = 1..max_row;
    days = 1..max_days_per_month;
    months = 1..months_per_year;
    seconds = 0..sec_per_minute-1;
    minutes = 0..minute_per_hour-1;
    hours = 0..hour_per_day-1;

Υποδιαστήματα Χαρακτήρων

Με τα υποδιαστήματα χαρακτήρων ορίζουμε ένα όριο αποδεκτών τιμών τύπου char, ως εξής :

Type
    up_case_char = 'A'..'Z';
    lo_case_char = 'a'..'z';
    digit_char = '0'..'9';

Απαριθμητά Υποδιαστήματα

Με αυτά ορίζουμε ένα όριο αποδεκτών απαριθμητών τιμών, ως εξής :

Type
    vehicles = (volkswagen, honda, toyota, corvette, porsche, ferrari, bronco);
    economy_cars = volkswagen..toyota;
    sports_cars = corvette..ferrari;

Απάντηση

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