
Операции отношения множественных типов Паскаля
Наряду с рассмотренными выше операциями, над значениями множественного типа определены и некоторые операции отношения. Операндами операций над множественными значениями в общем случае являются множественные выражения. Среди операций отношения над значениями множественного типа особое место занимает специальная операция проверки вхождения элемента во множества, обозначаемая служебным словомin. В отличие от остальных операций отношения, в которых значения обоих операндов относятся к одному и тому же множественному типу значений, в операции in первый операнд должен принадлежать базовому типу, а второй – множественному типу значений, построенному на основе этого базового типа. Результатом операции отношения, как обычно, является логическое значение (true или false).
‘a’ in glasn значение операции true;
‘o’ in soglasn значение операции false;
Операция сравнения на равенство множественных типов Паскаля. Множества считаются равными (эквивалентными), если все элементы одного множества присутствуют в другом и наоборот. Для операции сравнения на равенство или неравенство используются символы ‘=’ и ‘<>’.
A:= [2,1,3];
D:= [1,3,2];
Тогда операция A=D имеет значение true, а операция A<>D имеет значение false.
Проверка включения. Одно множество считается включенным в другое (одно множество является подмножеством другого), если все его элементы содержатся во втором множестве. Обратное утверждение может быть и несправедливым. Операции проверки включения обозначаются ‘<=’ и ‘>=’.
letter >= glasn;
soglan <= letter;
Следует отметить, что применение операций < и > над операндами множественного типа недопустимо.
Записи
Записи в Паскале - это совокупность ограниченного количества компонент, связанных логически и принадлежащих к различным типам. Полями называют компоненты записи. Каждое поле определяется определенным именем. Поле записи включает имя поля, за которым через символ ":" указывают тип данного поля. Поля записи могут быть любого типа в языке Паскаль (исключение составляет файловый тип).
Записи в Паскале описывают при помощи зарезервированного слова record, за которым указывают описание компонент записи, которая завершается зарезервированным словом end.
Например, кулинарный справочник содержит название рецептов и ингредиентов к ним, вследствие этого отдельную строку в данном справочнике удобнее представить в виде последующей записи:
type Tspr = record
RECEPT: string[30];
INGRD: string[10];
end;
var spr: Tspr;
Записи можно представить, не используя имя типа:
var spr: record
RECEPT: string[30];
INGRD: string[10];
end;
Обращение к записи в общем допускается лишь в операторах присваивания, где слева и справа от знака ":=" применяются имена записей одно и того же типа. В остальных случаях операции проводят с отдельными полями записей. Для обращения к отдельной компоненте записи нужно задать имя записи, а далее через символ "." задать имя необходимого поля:
Пример:
rec.RECEPT, rec.INGRD
Такое имя носит название составного имени. В качестве компоненты записи может выступать и сама запись. Тогда составное имя будет состоять не из двух, а из большего числа имен.
Осуществить обращение к определенным компонентам записи можно проще, используя оператор присоединения with:
with rec do оператор;
где rec выступает в качестве имени записи, а оператор - простой или составной оператор. Оператор есть область действия оператора with, в границах которой можно не пользоваться составными именами. В нашем случае:
with rec do
begin
RECEPT:='Napoleon';
INGRD:='Saharnaya pudra';
end;
что идентично следующей конструкции:
rec.RECEPT:='Napoleon';
rec.INGRD:='Saharnaya pudra';
Инициализировать записи можно, используя типизированные константы:
Одна из разновидностей записей - это записи с вариантами, объявляющиеся при помощи ключевого слова case. Используя записи с вариантами, у вас появится возможность сохранять разнообразные структуры данных, имеющие огромную, одинаковую во всех структурах общую часть, а также некоторые небольшие различающиеся части. Для примера создадим запись, в которой будут храниться данные о некой геометрической фигуре (отрезок, треугольник и окружность):
То есть в переменной figure могут храниться данные сразу о трех наших геометрических фигурах: отрезке, треугольнике и окружности. Нам лишь остается в зависимости от типа геометрической фигуры делать обращение к соответственным полям записи.
Заметка. Отдельные поля для каждого типа фигур располагаются в одном адресном пространстве памяти, поэтому невозможно их одновременное использование.
Любая запись может содержать только одну вариантную часть, после окончания которой в записи не могут присутствовать какие-нибудь другие поля. Рекомендуется, чтобы имена полей были уникальны в рамках той записи, в которой их объявили.