Янв
6th

Урок 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().

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

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

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

 

Поделиться с друзьями



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

  1. Антон | Март 13, 2013 | Ответить

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

  2. admin | Март 23, 2013 | Ответить

    Спасибо, Антон. Исправила.

  3. Антонина | Ноя 29, 2016 | Ответить

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

Оставить комментарий или два