Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пользовательские типы

Кроме стандартных типов данных, ТР и Delphi поддерживают скалярные типы, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы. Данные этих типов занимают в памяти один байт, поэтому любой пользовательский тип не может содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.

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

 

Формат записи:

Type

<имя типа> = (<значение 1, значение 2,..., значение n>);

Var

<идентификатор,...>: <имя типа>;

Пример.

Type

Svet = (Red, Yellow, Green);

Move = (Left, Right, Up, Down);

 

Var

S1, S2, S3: Svet;

M: Move;

Season: (Winter, Spring, Summer, Autumn);

В данном примере приведены два явно описанных типа данных Svet и Move. Определены их значения – обозначения цветов и направлений движения. Переменные Svet, Move могут принимать одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание. Третий тип перечисления анонимный (не имеет имени) и задается перечислением значений в разделе Var. Season является переменной этого типа и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не всегда приемлемо, т.к. первый способ более соответствует характеру языка ТР.

Имена внутри круглых скобок являются константами соответствующего типа перечисления и соответствуют обычным правилам для констант. Эти идентификаторы должны быть уникальны в пределах блока.

 

Помни:

· Описание двух или более перечисляемых типов с совпадающими константами недопустимо.

 

Пример.

Type

Color1 = (Red, Yellow, Green);

Color2 = (Blue, Grey, Green);

являются некорректными из-за повторного использования идентификатора Green.

Перечисляемые типы являются дискретными типами. Над значениями перечисляемых типов определены операции сравнения: считается, что значения этого типа указаны в списке в порядке возрастания. Например, будет истинно выражение Red< Green, т.к. Red имеет меньший номер по порядку в описании типа, чем Green.

В отличие от данных других типов, ТР не поддерживает операции ввода–вывода значений пользовательского перечисляемого типа. При необходимости программист сам должен организовать ввод–вывод таких данных.

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

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

Помни:

· Обе константы должны принадлежать одному из стандартных типов (тип real здесь недопустим).

· Значение первой константы должно быть обязательно меньше значения второй.

Формат записи:

Type

< имя типа > = <константа1>.. <константа2>;

Var

<идентификатор,...>: < имя типа >;

 

Пример.

Type

Dni = 1.. 31;

Var

X1, X2: Dni;

 

Переменные Х1 и Х2 могут принимать любые значения из диапазона 1.. 31. Выход из диапазона вызывает программное прерывание.

Можно определить интервальный тип и более универсальным способом, задав границы диапазона не значениями констант, а их именами:

 

Const

Min = 1; Max = 31;

Type

Dni = Min.. Max;

Var

X1,X2: Dni;

<== предыдущая лекция | следующая лекция ==>
Вещественные типы | Тождественность и совместимость типов
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 263; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.