Данные – это общее понятие всего того, с чем оперирует ЭВМ. Любой тип данных определяет множество значений, которые может принимать та или иная переменная, и те операции, которые можно к ним применять. Каждая встречающаяся в программе переменная может иметь один и только один тип.
В Паскале имеется три типа данных: простые, составные и специальные. Рассмотрим сначала простой тип данных, представленный на рис. 7.
Начнем рассмотрение с ординальных типов. Под данными ординального типа понимают те, для каждого из которых можно найти их порядковый номер в данном типе. Ординальные типы, таким образом, представляют собой упорядоченные множества.
К любому ординальному значению X применимы три следующие встроенные функции:
• ORD (X) – дает порядковый номер, соответствующий X. Результат относится к типу INTEGER.
• SUCC (X) – дает следующее за X значение, если X не максимальный элемент соответствующего типа. В последнем случае SUCC(X) суть ошибка.
• PRED (X) – дает предыдущее X значение, если только X не минимальный элемент соответствующего типа. В последнем случае PRED (X) суть ошибка.
Рис. 7. Типизация данных
Наиболее простыми из ординальных типов являются предописанные, или встроенные типы: INTEGER, BOOLEAN и CHAR, которые определяют, соответственно, числовые, логические (булевские) и литерные (символьные) величины. К встроенному (но не ординальному) типу данных относится также тип REAL.
Кроме предописанных, в Паскале существует возможность задавать свои типы данных. К ним относятся перечислимый и диапазонный типы. Каждый из них состоит из элементов предописанных типов, однако в совокупности они дают совершенно новый тип.
Перечислимый тип задается перечислением всех своих элементов (см. рис. 8).
Рис. 8. Синтаксическая диаграмма перечислимого типа
Например:
DEN_NED = (MO, TU, WE, TH, FR, SA, SU);
MONETA = (1, 2, 3, 5, 10, 20, 50).
Диапазонный тип представляет собой подмножество одного из ординальных типов (см. рис. 9). Его часто называют еще интервальным.
Рис. 9. Синтаксическая диаграмма диапазонного типа
Например:
DEN_MES = 1..31;
RAB_DEN = MO..SA;
LATBUKW = 'A'..'Z'.
Следует помнить, что при задании диапазонного типа первая константа должна быть меньше второй. Подробнее на задании типов остановимся в разделе «Объявления данных».
Замечание. Все типы, рассмотренные ранее, включая перечислимый и символьный, называются скалярными. Величины, принадлежащие скалярному типу, упорядочены (не путать с ординальностью):