Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгор_ТХТК_пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.6 Mб
Скачать

Глава 5 Типы данных, определяемые пользователем

5.1 Пользовательский тип данных

Пользовательский тип данных - это тип данных, определяемый программистом в программе. Объявление пользовательских типов данных происходит в разделе объявления типов, который открывается зарезервирован­ным словом TYPE. За словом TYPE следуют разделенные знаком равенства имя нового пользовательского типа и конструкция, определяющая этот тип.

Рисунок 5.1 - Синтаксическая диаграмма для раздела определения типов

type

day = (mon, tue, wed); color = (white, red, blue)

В данном случае слова day и color представляют собой имена новых типов, при этом пользовательский тип day определен тремя элементами: mon, tue, wed; пользовательский тип color элементами: white, red, blue.

К простым типам относятся порядковые и вещественные типы.

Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения.

Вещественные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.

К порядковым типам относятся целые, логический, символьный, перечисляемый и тип-диапазон. К любому из них применима функция ORD(X), которая возвращает порядковый номер значения выражения X. Для целых типов функция ORD(X) возвращает само значение X. Для логического типа функция ORD(X) дает 0 для значения false и 1 для значения true. Для символьного типа функция ORD(X) дает значение в диапазоне от 0 до 255.

К порядковым типам можно также применить функции PRED(X) и SUCC(X). PRED(X) - возвращает предыдущее значение порядкового типа. SUCC(X) -возвращает следующее значение порядкового типа.

5.1.1 Типизированные константы

Константа - идентификатор, обозначающий некоторую неизменную величину определенного типа. Константы, так же как и переменные, объявляются в описательной части программы (или процедуры) до момента своего использования в процессе вычислений.

Объявления констант начинаются зарезервированным словом const. Затем следует имя константы, символ равенства (=) и значение этой константы. Например:

const m = 14.0.

В таком случае оператор присваивания m := 1 недопустим, как недопустимо и действие 14.0 := 1.

В отличие от констант типизированные константы представляют собой инициализированные переменные, которые могут использоваться в программах наравне с обычными переменными. Каждой типизированной константе ставится в соответствие имя, тип и начальное значение. Они задаются в разделе объявления констант следующим образом:

<идентификатор> : <тип> = <значение>

Здесь <идентификатор> - идентификатор константы; <тип> - тип константы; <значение> - значение константы. Например:

year : integer = 1995;

Имя константы - year, тип константы integer, значение константы 1995.

Типизированные константы обладают всеми преимуществами переменных, в частности, они могут использоваться в левой части оператора присваивания. Они инициализируются только один раз - в начале выполнения программы. При использовании в процедурах или функциях необходимо иметь в виду, что при каждом новом обращении к процедуре или функции типизированные константы не инициируются заново.

Типизированные константы не могут использоваться при описании других констант или типов.

Типизированные константы могут быть любого типа, кроме файлов.

Примеры правильного объявления констант:

const

year : word =1989;

x : real = 0.01;

min : integer = 0;

Примеры неправильного объявления констант:

const

mass : array [min..max] of real; {Нельзя использовать типизиро­ванные константы в качестве границ диапазона}

а, b, с : byte =0; {Нельзя использовать список иден­тификаторов}

х:real = pi; {Нельзя использовать в качестве значения вызов функции}

var namef: string [22] = ‘prog.pas’; {Нельзя объявлять типизированную константу в разделе переменных}