Учебники

Паскаль — Наборы

Набор представляет собой набор элементов одного типа. Паскаль позволяет определить заданный тип данных. Элементы в наборе называются его членами. В математике множества представлены заключением членов в фигурные скобки {} . Однако в Паскале элементы набора заключены в квадратные скобки [], которые называются конструктором набора.

Определение типов набора и переменных

Типы Pascal Set определяются как

type
set-identifier = set of base type;

Переменные типа set определяются как

var
s1, s2, ...: set-identifier;

или же,

s1, s2...: set of base type;

Примеры некоторых допустимых объявлений типов:

type
Days = (mon, tue, wed, thu, fri, sat, sun);
Letters = set of char;
DaySet = set of days;
Alphabets = set of 'A' .. 'Z';
studentAge = set of 13..20;

Операторы множества

Вы можете выполнить следующие операции над множествами Паскаля.

Sr.No Операции и описания
1

союз

Это объединяет два набора и дает новый набор с членами из обоих наборов.

2

разница

Получает разницу двух наборов и дает новый набор с элементами, не общими для обоих наборов.

3

пересечение

Получает пересечение двух наборов и дает новый набор с элементами, общими для обоих наборов.

4

включение

Набор P включается в набор Q, если все элементы в P также находятся в Q, но не наоборот.

5

Симметричная разница

Получает симметричную разность двух наборов и дает набор элементов, которые находятся в любом из наборов, а не в их пересечении.

6

В

Это проверяет членство.

союз

Это объединяет два набора и дает новый набор с членами из обоих наборов.

разница

Получает разницу двух наборов и дает новый набор с элементами, не общими для обоих наборов.

пересечение

Получает пересечение двух наборов и дает новый набор с элементами, общими для обоих наборов.

включение

Набор P включается в набор Q, если все элементы в P также находятся в Q, но не наоборот.

Симметричная разница

Получает симметричную разность двух наборов и дает набор элементов, которые находятся в любом из наборов, а не в их пересечении.

В

Это проверяет членство.

В следующей таблице показаны все операторы множеств, поддерживаемые Free Pascal. Предположим, что S1 и S2 являются двумя наборами символов, так что —

S1: = [‘a’, ‘b’, ‘c’];

S2: = [‘c’, ‘d’, ‘e’];

оператор Описание пример
+ Союз двух комплектов

S1 + S2 даст набор

[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

Разница двух комплектов

S1 — S2 даст набор

[‘a’, ‘b’]

* Пересечение двух множеств

S1 * S2 даст набор

[ ‘С’]

> < Симметричная разность двух множеств S1> <S2 даст набор [‘a’, ‘b’, ‘d’, ‘e’]
знак равно Проверяет равенство двух множеств S1 = S2 даст логическое значение False
<> Проверяет неравенство двух множеств S1 <> S2 даст логическое значение True
<= Содержит (Проверяет, является ли один набор подмножеством другого) S1 <= S2 даст логическое значение False
Включают Включает элемент в набор; в основном это объединение множества и элемента одного базового типа

Включить (S1, [‘d’]) даст набор

[‘a’, ‘b’, ‘c’, ‘d’]

исключать Исключает элемент из набора; в основном это разница набора и элемента того же базового типа

Exclude (S2, [‘d’]) даст набор

[‘c’, ‘e’]

В Проверяет набор членства элемента в наборе [‘e’] в S2 дает логическое значение True

S1 + S2 даст набор

[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

S1 — S2 даст набор

[‘a’, ‘b’]

S1 * S2 даст набор

[ ‘С’]

Включить (S1, [‘d’]) даст набор

[‘a’, ‘b’, ‘c’, ‘d’]

Exclude (S2, [‘d’]) даст набор

[‘c’, ‘e’]

пример

Следующий пример иллюстрирует использование некоторых из этих операторов —

Live Demo

program setColors;
type  
color = (red, blue, yellow, green, white, black, orange);  
colors = set of color;  
 
procedure displayColors(c : colors);  
const  
names : array [color] of String[7]  
  = ('red', 'blue', 'yellow', 'green', 'white', 'black', 'orange');  
var  
   cl : color;  
   s : String;  

begin  
   s:= ' ';  
   for cl:=red to orange do  
      if cl in c then  
      begin  
         if (s<>' ') then s :=s +' , ';  
         s:=s+names[cl];  
      end;  
   writeln('[',s,']');  
end;  
 
var  
   c : colors;  
 
begin  
   c:= [red, blue, yellow, green, white, black, orange];
   displayColors(c);

   c:=[red, blue]+[yellow, green]; 
   displayColors(c);  

   c:=[red, blue, yellow, green, white, black, orange] - [green, white];     
   displayColors(c);    

   c:= [red, blue, yellow, green, white, black, orange]*[green, white];     
   displayColors(c);  

   c:= [red, blue, yellow, green]><[yellow, green, white, black]; 
   displayColors(c);  
end.

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —