Урок 17. Перечисляемый и интервальный типы данных

Урок из серии: «Язык программирования Паскаль»

Тип данных определяет набор допустимых значений для величин и набор операций, которые можно с ними выполнять. В Языке Паскаль есть стандартные типы данных, которые программисту не нужно описывать. Их описание входят в состав языка программирования. Нужно знать идентификаторы этих типов и правильно их использовать. Изученные нами целые и логический типы относятся к простым (скалярным) стандартным типам данных. Но не всегда стандартные типы данных нас устраивают.

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

Перечисляемый тип

Перечисляемый тип — тип данных, заданный списком принадлежащих ему значений.

Идентификатор типа и набор допустимых значений для перечисляемого типа определяются программистом. Для этого используется специальный оператор Type.

Формат оператора:

type<имя_типа> = (значение 1, значение2, …, значениеN);var

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

В определении перечисляемого типа значения от значение1 до значениеN являются константами типа имя_типа.

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

Пример.

typeGaz = (Ge,C,O,N);Metall = (Na, K, Li, Cb, Zn);

var

G1, G2, G3: Gaz;

Met1, Met2: Metall ;

В данном примере приведены два пользовательских  типа данных  — Gaz и Metall, определены их значения — обозначения некоторых газов и металлов периодической таблицы Д.И. Мендилеева. Переменные G1, G2, G3 и Met1, Met2 могут принимать только одно из перечисленных значений.

Имена внутри скобок являются константами соответствующего типа перечисления.

Набор операций

Для значений перечисления одного и того же типа определены операции отношения. Упорядочение осуществляется по номеру элемента в описании типа. Например, будет истинно выражение Winter < Spring, так как Spring имеет больший номер по порядку в описании типа, чем Winter.

Применение пользовательских типов обеспечивает семантический контроль вводимых данных, значительно улучшает наглядность программы, делает более легким поиск и экономит память.

Стандартные функции

Так как перечисляемый тип относится к порядковым типам, то для него определены функции:  Succ(), Pred() и  Ord().

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

type

Boolean = (False, True);

Поэтому для значений False b True справедливы результаты вычисления выражений:

false < True;  Ord(False) = 0;   Ord(true) = 1;   Succ(False) = True;   Pred(True) = False .

Интервальный тип (диапазон)

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

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

Формат:

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

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

Например:

typeDays = 1 .. 31;var

RabDay, BolnDay: Days

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

Интервальный  и перечисляемый типы относятся к порядковым типам. Значит, для интервального типа определены операции отношения, и функции для определения порядкового номера, предыдущего и последующего элементов, т. е финкции Succ(), Pred() и  Ord().

На этом уроке мы описали простые (скалярные), пользовательские типы данных: перечисляемый и интервальный.

Из простых типов данных остался еще один — вещественный. Рассмотрим его на следующем уроке.

До встречи в следующем уроке!

Подписаться
Уведомить о
guest

3 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Антонина
Антонина
7 лет назад

МендЕлеев
type это не оператор. Это ключевое (зарезервированное) слово обозначающее начало блока описания типов. Данный блок содержит определение вводимых программистом новых типов (т.е. таких типов, которые не являются встроенными в язык программирования).
Оператор же это своего рода инструкция, которую необходимо выполнить компилятору. Например, оператор присваивания, условный оператор, оператор цикла и т.д.
Таким образом можно сказать, что оператор выполняет некий код, а блок описания позволяет задавать и описывать идентификаторы, используемые в программе.

Антон
Антон
11 лет назад

Кое-где опечатка: «dais» вместо «days»