Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ПАСКАЛЕ.doc
Скачиваний:
12
Добавлен:
04.09.2019
Размер:
2.98 Mб
Скачать

О бщий вид регулярного типа

type U = array [N1..N2] of R.

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

type R = array [M1..M2] of S;

и пусть переменная А – переменная типа U. Тогда A [I] – переменная типа R, а А [I][J] – переменная типа S. Таким образом, получается переменная, представляющая собой двумерный массив как массив массивов.

8.1. Определение типа set

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

{1, 3, 5}, {5, 3, 1}, {1, 5, 3} – одно и то же множество.

В математике для обозначения множеств используются скобки {,}. В Паскале вместо фигурных скобок для представления множеств используются квадратные скобки: [1, 3, 5].

Подобно массивам, переменная типа ARRAY имеет тип компонент. Каждый элемент, входящий в множество, имеет значение, которое должно принадлежать к типу компонент. Тип SET определяется синтаксической диаграммой, представленной на рис. 36, и общей формой записи.

Рис. 36. Синтаксическая диаграмма типа SET

Общая форма записи

TYPE <имя типа>: SET OF <тип компонент>;

VAR <имя переменной>: <имя типа>;

или

VAR <имя переменной>: SET OF <тип компонент>;

П р и м е р ы :

var LETTERS : set of 'A'..'Z';

DAYS : set of 1..31;

MNOGCHAR : set of char.

Итак, в описании типа ARRAY есть общее с описанием типа массив, но есть и существенные отличия:

– нет типа индекса (элементы множества не индексируются);

– есть, как в массиве, тип компонент.

Тип компонент множества, однако, в отличие от типа компонент массива, должен быть порядковым (ординальным): INTEGER, CHAR, BOOLEAN, перечислимый, интервальный (на базе INTEGER и CHAR). Невозможно, например, образовать множество, элементами которого являются данные типов REAL, STRING, ARRAY и пр., например:

type DAYSOFWEEK = (SUN, MON, TUE, WED, THU, FRI, SAT);

var WEEKDAYS, WEEKEND : set of DAYSOFWEEK.

Теперь этим описанным переменным можно присваивать различные значения, которые суть множества, состоящие из элементов перечислимого типа – названий дней недели:

a) WEEKDAYS := [MON, TUE, WED, THU, FRI];

б) WEEKEND := [SAT, SUN],

причем в случае а) можно поступить иначе: WEEKDAYS := [MON..FRI].

Заметим также, что указанные множества из элементов перечислимого типа нельзя сформировать с помощью оператора READ (в силу специфики этого типа).

Аналогом нуля в типе ARRAY есть пустое множество: [].