Оператор присоединения предназначен для упрощения обращения к элементам записи, а именно для обеспечения возможности обращения к элементам записи без составных имен, с помощью простых имен элементов записи.
Форма оператора WITH:
WITH список-имен-записей DO S ;
где S - один оператор, простой или составной (блок).
WITH обычно используется в тех случаях, когда надо выполнить несколько действий над одним или несколькими полями записи. Например:
WITH Y[I] DO IF DEN > 15 THEN WRITE (' Вторая половина месяца');
Это эквивалентно записи: IF Y[I].DEN > 15 THEN WRITE (' Вторая половина месяца');.
В Паскале можно использовать вариантные записи - записи переменной структуры с вариантными (переменными) полями. В списке полей такой записи могут быть фиксированные поля и только одно переменное (вариантное) поле. Вариантная часть записи должна быть в конце описания, т. е. в качестве, последнего ее элемента. В описании записи перечисляются все возможные варианты переменного поля записи. При работе с записью в зависимости от значения селектора записи (ключа) выбирается один из вариантов переменного поля записи. Переменная часть записи может быть представлена в одной из двух форм.
Форма 1 переменной (вариантной) части записи:
TYPE SEL = тип ; ... описание фиксированной части записи CASE SEL OF
Метка-1 : ( список-полей );
Метка-2 : ( список-полей ); ... END ;
Форма 2 переменной (вариантной) части записи:
TYPE SEL = тип ; ... описание фиксированной части записи CASE PR : SEL OF
Метка-1 : ( список-полей ) ;
Метка-2 : ( список-полей ) ; ...
END ;
где SEL - имя типа ключа PR и меток для выбора варианта;
PR - имя переменной - селектора (ключа) выбора варианта; оно должно получить значение до использования вариантной части записи;
элемент списка-полей - это список-идентификаторов-полей : тип.
Ограничения:
1) в описании записи может быть только одна вариантная часть;
2) все идентификаторы в списках полей одной записи должны быть различны; однако, на разных уровнях вложенности полей одной записи и в разных записях имена могут повторяться;
3) вариантная часть записи должна быть последним ее элементом.
Множество в математике - это произвольный набор объектов любой природы, понимаемый как единое целое. На языке Паскаль множество - это ограниченная совокупность различных элементов базового типа множества. Количество элементов, входящих в множество, может быть в пределах от 0 до 255. Данные переменной типа множества могут быть в виде множества-переменной и множества-константы (конструктора).
Описатель переменной типа множества - SET. Объявление переменной типа множества определяет базовый тип, т. е. состав элементов, из значений которых создаются конкретные значения множественного типа, и мощность множества (максимальное количество его элементов). В качестве базового типа может быть любой ординальный (порядковый) тип данных, кроме типов WORD, INTEGER и LONGINT. В том числе в качестве базового типа может быть тип BYTE, SHORTINT, логический (BOOLEAN), символьный (CHAR), перечисляемый и диапазонный тип (для целых 0 .. 255).
В качестве значения переменной типа множества может быть набор всех элементов базового типа, любое их подмножество, а также пустое множество. Если базовый тип содержит n элементов, то количество различных подмножеств, которые могут быть значением множества данного типа, равно 2n.
Тип переменной-множества может быть определен в разделе TYPE или VAR. Форма определения множественного типа:
TYPE имя-типа-множества = SET OF базовый-тип ;
Примеры объявления данных переменной типа множества:
TYPE MN = SET OF 2..100; { Диапазонный тип }
VRGODA = (VESNA,LETO,OSEN,ZIMA);{Перечисляемый тип }
VAR А,В : MN ; { Переменные типа: MN }
С : SET OF '0'..'9'; {диапазон символьных данных}
SIM : SET OF 'A'..'Z'; { " " }
SEZON : SET OF VRGODA;{перечисляемого типа }
SEZ : SET OF VESNA..OSEN;{диапазон перечисл. типа}
INTEG : SET OF 0..255;{диапазон целого типа}
где MN, VRGODA - имена типов: множества и перечисляемого типа; А, В, С, SIM, SEZON, SEZ, INTEG - имена переменных типа SET.
Множества-константы строятся в виде конструктора: списка значений элементов множества, заключенных в квадратные скобки. Значения элементов списка разделяются запятыми. В списке значений может быть выражение, результат которого равен элементу базового типа множества, и константы диапазонного типа. Частным случаем выражения может быть имя переменной, константа базового типа или пустой список значений. Примеры множеств-констант:
[], [ VESNA, OSEN ], ['А', 'С'..'К', D + Е, F ]
где VESNA, OSEN, 'А', 'С', 'К' - константы базового типа;
'С' .. 'К' - диапазон значений базового типа;
D + E- выражение;
F - имя переменной типа, совместимого с базовым типом множества;
[ ] - пустое множество.
Множество регистрирует наличие или отсутствие элемента, порядок перечисления элементов несуществен. При этом следующие множества равны (эквивалентны): [ 'А', 'Е', 'I' ] и [ 'Е' , 'I', 'А' ].