Представление экономической информации в виде множества

Под множеством понимается набор однотипных данных.

Тип множества определяется следующей синтаксической конструкцией:

<идентификатор множества> = Set Of<тип множества>.

Над множеством могут выполняться следующие действия:

Во-первых, проверка принадлежности элемента множеству

<элемент> IN <множество>;

Во-вторых, сложение множеств

<множество> + <множество>;

В-третьих, разность множеств

<множество> - <множество>;

В-четвертых, пересечение множеств или определение общих элементов

<множество> * <множество>;

В-пятых, проверка вхождения одного множества в другое

<множество> <= <множество>;

В-шестых, проверка эквивалентности

<множество> = <множество>.

Для проверки наличия элементов в множестве можно использовать пустое множество, которое обозначается двумя квадратными скобками "[]".

Например,

IF OperA=[ ] Then Writeln ('Пустое множество');

Множества не могут задаваться, в качестве параметров, при выдаче на печать в процедуре Write. Поэтому печать элементов множества обеспечивается путем использования специальных алгоритмов. Например, для выдачи символов, входящих в множество можно использовать следующий алгоритм:

Var

C: Char;

...

For C:= 'A' To 'Z' Do

If C In SetA Then Writeln (C);

Обработка информации, представленной в виде множества перечислимого типа имеет следующие особенности.

Во-первых, определение набора элементов, которые могут входить в множество может быть выполнено в разделе "'Type". Например, SpisOper= Set Of (Oper1, Oper2, Oper3, Oper4);. Имена, заданные в списке не могут быть использованы для обозначения других переменных.

Во-вторых, в разделе Var определяются переменные, имеющие заданный перечислимый тип. Например, OperA,OperB: SpisOper;. При объявлении переменной, информация, заданная в разделе Type, не заносится. В разделе Var рекомендуется определить специальную переменную, которая может быть использована для обращения к элементам множества. Переменная, должна быть описана с типом "Byte". При использовании переменной типа "Integer" или числовой константы выдается сообщение об ошибке.

В-третьих, для занесения информации в переменную, определенную, как перечислимый тип может быть использован оператор присваивания вида

<Множество>:=<элемент>;

Например,

OperA:=Oper1;

OperA:= OperA + Oper1;

В-четвертых, для занесения информации в переменную, определенную, как перечислимый тип может быть использовано обращение к элементам множества, с помощью специальной переменной, имеющий тип "Byte. Следует обратить внимание, что специальная переменная определяет не элемент множества, а подмножество элементов, задаваемых в соответствии с двоичной маской. Например, значение специальной переменной равное 6 обеспечивает одновременное занесение второго и третьего элемента. (Двоичный код 6 равен "110"). Для занесения отдельных переменных, необходимо использовать значения специальной переменной, равные числу 2, в соответствующей степени. Например, совокупность операторов

W:= 8;

OperA:=SpisOper(W);

обеспечит занесение четвертого элемента множества.

В-пятых, при выполнении операции "IN", для проверки множества, не могут быть использованы другие значения, кроме значений, определенных в конструкции "Set Of".

В-шестых, при выполнении команды "IN", можно использовать элемент, заданный в перечислимом типе. Например, "Oper1 In OperA". Использовать конструкцию, определяющую данный элемент с использованием индекса не допускается. Например, при использовании конструкции "SpisOper(w) In OperA" выдается сообщение об ошибке.

В-седьмых, для выдачи на экран, элементов множества, перечислимого типа может быть использована совокупность операторов вида

If Oper1 In OperA Then Writeln('Oper1 ');

В-восьмых, следует различать множества на перечислимом типе и перечислимый тип. Индексация элементов и операции, выполняемые над перечислимым типом, отличны от индексации и операций над множеством перечислимого типа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: