Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LYeKTsIYa_16_2.doc
Скачиваний:
11
Добавлен:
20.04.2019
Размер:
214.02 Кб
Скачать

Кафедра прикладной математики лекция № 16. Тема: «структурированные типы данных»

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

Кроме стандартных типов данных язык TURBO PASCAL поддерживает скалярные типы данных, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы.

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

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

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

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

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

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

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

Пример:

;

;

В отличие от данных других типов TURBO PASCAL не поддерживает операции ввода-вывода значений пользовательского перечисляемого типа. При необходимости программист сам должен организовать ввод-вывод таких данных. Упорядоченность констант позволяет применять к ним операции отношения, а также стандартные функции ORD, PRED, SUCC.

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

type boolean = (false, true);

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

false < true succ(false) = true

ord(false) = 0 pred(true) = false

ord(true) = 1

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

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

Формат:

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

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

Например:

type month = (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);

Следует решать задачи, связанные только с летним временем года. Тогда можно ввести интервальный тип

type summer = jun .. aug;

который является частью (отрезком) типа month, из которого был «вырезан» тип summer. Тип month является базовым относительно типа summer.

var day : summer;

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

  1. Обе граничные константы должны быть одинакового типа.

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

  3. Начальное значение при определении интервального типа не должно быть больше конечного значения.

  4. Переменные интервального типа должны быть описаны в разделе переменных с помощью имен этих типов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]