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