Типы данных, встроенные в большинство современных языков программирования, можно представить в виде следующего дерева (Рис. 1.5):
Все типы делятся на простые и составные. Составные типы являются комбинацией простых. Простые типы, в свою очередь, делятся на базовые и производные. Базовые типы, как правило, встроены в язык программирования и представляются соответствующими операторами.
Рис. 4.5. Иерархия типов данных.
Простейшим типом данных является перечислимый. При его задании программист просто явно указывает (перечисляет) все значения, которые может принимать переменная такого типа. Например, рассмотрим следующие описания:
TYPE Tcolor=(red, green, blue);
TDay=(Sun, Mon, Tue, Wed, Thu, Fri, Sat);
Здесь создаются два новых типа данных. Переменная типа Tcolor сможет принимать лишь три значения: red, green, blue, а переменная типа TDay – значения Sun, Mon, Tue, Wed, Thu, Fri, Sat. Слова red, green, blue представляют собой константы, за которыми на самом деле скрываются некоторые числовые значения. Но нам в программе гораздо удобнее работать со словами, чем с числами. Было бы очень неудобно закодировать цвета цифрами и мучительно вспоминать, что "0" – это красный цвет, а "2" – синий.
Значения в перечислимом типе упорядочены по возрастанию. Green больше, чем blue, а Mon меньше, чем Tue. Поэтому их можно сравнивать не только на равенство, но и на отношения "больше - меньше".
Для работы с переменными перечислимого типа предназначены следующие функции и процедуры:
INC(v) – записать в v следующее значение;
DEC(v) - записать в v предыдущее значение.
Например:
c:Tday;
…
c:=Mon;
INC(c); { теперь c = Tue}
Обратите внимание, что эти процедуры меняют значение переменных, подаваемых им на вход в качестве аргументов. Если это нежелательно, следует использовать функции:
PRED(v) – предыдущее значение перечислимого типа;
SUCC(v) – последующее значение перечислимого типа.
Например,
c1:=PRED(c); { c1= Sun }
c2:=SUCC(c); { c2=Mon }