Этот тип позволяет описывать алгоритмы в понятиях, близких к общепринятым в математике и в повседневной жизни. Например, дни недели, стороны света, направления движения и другие данные, значения которых можно перечислить, в программах можно представить числами или строками (словами). Но применение перечисляемого типа в такой ситуации является предпочтительным.
Перечисляемый типзадает упорядоченное множество значений путем перечисленияимен констант, обозначающих эти значения. В разделе Typeв общем виде он описывается так
Type
Имя=(Значение1, Значение2,…,ЗначениеN);
Порядковый номер первой из перечисленных констант равен 0, следующей – 1 и т.д. Максимальное количество констант равно 256.
Объявленные типы могут использоваться для описания переменных в разделе Var.
Пример Var
Days,Week_End : Week_Days;
Curs: Side;
Имена констант должны удовлетворять всем требованиям образования имен идентификаторов (в частности, кириллица недопустима).
Перечисляемые типы невозможно вводить с клавиатуры или выводить на экран (к ним нельзя применять операторы Read и Write). Для них разрешен ограниченный набор операций: сравнение (равно, не равно, больше, меньше и т.д.), а также функции:
Pred(аргумент) – дает элемент, предшествующий аргументу; результат определен для всех элементов списка, кроме первого;
Succ(аргумент) – дает элемент, сдедующий за аргументом; результат определен для всех элементов списка, кроме последнего.
Пример Pred(Tuesday) = Monday,
Succ(Tuesday) = Wednesday.
Рассмотрим пример программы, использующей перечисляемый тип.
Задача. Составить алгоритм и программу, определяющую новый курс корабля по предшествующему курсу и команде. Для простоты будем считать, что курс соответствует сторонам света:
Север, Восток, Юг, Запад.
Команда вводится с клавиатуры и может принимать следующие значения:
Вперед, Вправо, Назад, Влево, Стоп.
Последняя команда приводит к окончанию работы программы.
При разработке алгоритма будем ориентироваться на использование перечисляемого типа для задания курса корабля. Команду же будем задавать в виде обычной строки (слова).