Набор представляет собой набор элементов одного типа. Паскаль позволяет определить заданный тип данных. Элементы в наборе называются его членами. В математике множества представлены заключением членов в фигурные скобки {} . Однако в Паскале элементы набора заключены в квадратные скобки [], которые называются конструктором набора.
Определение типов набора и переменных
Типы 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’]
пример
Следующий пример иллюстрирует использование некоторых из этих операторов —
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.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —