Хелпикс

Главная

Контакты

Случайная статья





Множественный тип



Множественный тип

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

  [ ], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3].

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

< Имя > = SET OF < базовый тип > множества

Пример:

Type 

  number = 1..3;

  komb = set of number;

  logic= set of boolean;

  bukva = set of ‘A’ .. ‘Z’;

  operator = set of ( Minus, Plus);

 

Var a: bukva;

     b: komb;

     c: operator;

Примеры операторов присвоения:

c : = [Minus, Plus];

a := [ ‘A’..’D’, ‘S’, ‘Y’];

b := [];

Операции над множествами - это обычные операции теории множеств и математической логики:

 

+ - объединение множеств;
* - пересечение множеств;
- - разность множеств;
= - проверка эквивалентности двух множеств;
<> - проверка неэквивалентности двух множеств;
<= - проверка, является ли левое множество подмножеством правого подмножества;
>= -проверка, является ли правое множество подмножеством левого подмножества;
in - проверка, входит ли элемент, указанный слева, в множество, указанное справа

 

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

Рассмотрим результаты операций над однотипными множествами S1 и S2 на следующем примере. Пусть заданы цвета радуги следующим образом.

Type primcolor = (красный, оранжевый, желтый, зеленный, голубой, синий, фиолетовый);

       сolor = set of primcolor;

Var S1, S2: color;

Пусть значения S1 и S2 будут следующие:

S1:=[ красный, желтый, зеленный ];

S2:=[ зеленный, голубой];

1) Объединение S1 + S2: результатом будет множество содержащее элементы, принадлежащие либо S1, либо S2, либо тому и другому.

 S:= S1 + S2; результат - [красный, желтый, зеленный, голубой]

  или

S:= [красный, желтый, зеленный] + [зеленный, голубой];

2) Пересечение S1 * S2: результат - множество содержащее элементы, принадлежащие как S1, так и S2.

S:= S1 * S2;  результат - [зеленный]

3) Разность S1 - S2: результат - множество содержащее элементы из S1, которые не принадлежат S2.

S:= S1 - S2;   результат - [красный, желтый].

 

Приоритеты выполнения операций: пересечение, объединение, разность.

Результатом операций отношений является либо TRUE, либо FALSE.

4) Равенство S1= S2 - TRUE, если множества совпадают (т.е. содержат одни и те же элементы), иначе FALSE.

          [ красный, желтый, зеленный ]=[ зеленный, голубой]; результат – FALSE.

5) Неравенство S1<>S2 - TRUE, если множества не совпадают (т.е. отличаются хотя бы одним элементом), иначе FALSE.

[ красный, желтый, зеленный ]<>[ зеленный, голубой]; результат – TRUE.

 6) Включение множеств:

S1<= S2 - TRUE, если все элементы S1 принадлежат S2.

[ красный, желтый, зеленный ]<=[ зеленный, голубой]; результат – FALSE.

S1>= S2 - TRUE, если все элементы S2 принадлежат S1.

[ красный, желтый, зеленный ]<=[ зеленный, голубой]; результат – FALSE.    

7) Проверка принадлежности: х in S1 - TRUE, если элемент х входит в S1 (тип х должен быть таким же, что и базовый тип).

   X:=[зеленный];

   [зеленный] in [ красный, желтый, зеленный ]; результат - TRUE.

 

Пример: вывести на экран в обратном порядке все простые числа от 2 до 201.

Решето Эратосфена.

СА - множество анализируемых чисел

РС - множество простых чисел

Type mn = set of 2..201;

  Var CA, PC : mn;

          p, k : integer;

begin

     CA:= [ 2..201 ]; PC:= [];

      p:= 2;

REPEAT

   while not ( P in CA ) do p:= p+1;

    PC:= PC+[p], {включение р в результирующее

                   мн-во Р -> РС.};

    K:= P;

REPEAT CA:= CF-[K];

{из СА, исключение К и всех кратных ему чисел из исходного множества}

     K:= K+P

unti 1 K>201;

unti 1 CA=[ ]

  for K:=201 down to 2 do

     if K IN PC then write (K:5)

end.

   

   

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.