Тип символів та інші перелічувані
Мова Паскаль дозволяє програмісту означати свої власні перелічувані типи. Вони називаються типами-переліками та типами-діапазонами. Переліки наочно подають множини таких значень, що природно позначаються словами. Наприклад, сигнали світлофора або дні тижня.
Множину днів тижня, позначену {Пн, Вт, Ср, Чт, Пт, Сб, Нд} у мові Паскаль можна задати, означивши тип-перелік з ім'ям, наприклад, Weekd:
type Weekd=(Mon, Tue, Wed, Thu, Fri, Sat, Sun).
Тут ужито скорочення від англійських слів Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday – понеділок, вівторок тощо до неділі.
Аналогічно сигнали світлофора можна задати, определив тип Lights:
type Lights=(red, yellow, green) {червоний, жовтий, зелений}
Як бачимо, перелік задається виразом вигляду
( список ідентифікаторів )
Ідентифікатори списку після цього означення виступають сталими відповідного типу. Сталі не можуть повторюватися в означеннях того самого блока. Наприклад, якщо разом із типом сигналів світлофора означити ще тип кольорів райдуги, то використовувати імена red, yellow, green не можна.
Порядок сталих у списку задає операції ord, pred і succ, означені для всякого переліку. Наприклад, ord(Mon)=0, ord(Tue)=1 тощо, ord(Sun)=6, succ(Mon)=Tue, pred(Sat)=Fri. У відповідності зі значеннями ord означено й порівняння, наприклад, red
Вираз із сталими перелічуваних типів можна присвоювати однотипним із ними змінним.
Сталі й змінні перелічуваних типів, на відміну від базових типів, не можна вказувати у викликах процедур виведення та введення.
Будь-який перелічуваний тип, стандартний або тип-перелік, означений вище в програмі, може виступати базовим для типу-діапазону. Він задається виразом вигляду
стала1..стала2,
де стала1 <= стала2. Наприклад, ми можемо означити типи
type hundred=0..99; chesslet='A'..'H'; Workd=Mon..Fri
або змінні var stop : red..yellow; column : chesslet тощо.
Для діапазону означено ті самі операції, що для його базового типу.
Задачі
6.7. У розкладі рейсів літаків дні тижня позначаються номерами від 1 до 7. Припустимо, що в програмі дні тижня подаються типом Weekd. Написати вираз, що задає обчислення:
а) за номером дня тижня відповідного елемента типу Weekd;
б) за елементом типу Weekd номера дня тижня.