Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - экзамен.docx
Скачиваний:
4
Добавлен:
17.04.2019
Размер:
140.32 Кб
Скачать

44. Множественный тип в Турбо Паскале. Конструктор множества.

Понятие множества – одно из основных в математике.

Тип множество задает неупорядоченную совокупность неповто­ряющихся элементов. Переменная типа множество – это совокупность элементов из заданного множества. В Delphi допускаются только конеч­ные множества, причем элементы множества должны быть значения­ми одного типа. Тип элементов множества принято называть базовым типом множества.

Число элементов исходного множества не может быть более 256. Для задания элементов множества может использоваться любой поряд­ковый тип, однако порядковые номера элементов множества, т.е. значе­ния функции ord, должны находиться в пределах от 0 до 255.

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

<конструктор множества>::=[]|[<элемент>{,<элемент>}]

<элемент>::=<выражение>|<выражение1>..<выражение2>

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

Пример.

[] – пустое множество; [1..1] – множество [1];

['d'..'a'] – эквивалентно [];

[1,2,3,2..5,6,4,3,] – эквивалентно [1..6].

Неверные записи:

[2.7,3.14] – тип real не может быть базовым;

[5,'f'] – элементы разных типов; ['abc','deg'] – производный тип.

Синтаксис задания множественного типа

<задание множественного типа>::=set of <базовый тип>

<базовый тип>::=<имя базового типа>|<задание базового типа>

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

Пример.

Пусть задан тип M= set of 1..3 , тогда множества

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

являются значениями заданного множественного типа.

Переменные множественного типа называют переменными-множествами и описывают в разделе описания переменных. Присвоить значения переменным-множествам можно оператором присваивания.

В Delphi имеется ряд встроенных операций для данных множест­венного типа (+ , * , - и операции отношения).

Операции отношения над множествами A и B

A=BA и B совпадают;

A<>BA и B не совпадают;

A<=B – все элементы A принадлежат B;

A>=B – все элементы B принадлежат A;

x in A – элемент x входит в A.

Пример.

Пусть заданы следующие типы и переменные:

Type Mn=set of 1..50;

Var A, B, C: Mn;

. . . . . . . . . . .

A:=[3,5,9,10]; B:=[1,7,9,10];

Тогда можно выполнить следующие операции (в фигурных скобках ука­зан результат):

  • объединение: C:=A+B – {1,3,5,7,9,10};

  • пересечение: C:=A*B – {9,10};

  • разность: C:=A-B – {3,5}, C:=B-A – {1,7};

  • проверка эквивалентности: A=B – {False};

  • проверка неэквивалентности: A<>B – {True};

  • проверка, является ли одно множество подмножеством другого: A>=B – {False}, A<=B – {False};

  • проверка, входит ли заданный элемент в заданное множество: in A – {True}, 3 in B – {False}.

Операции < и > – недопустимы над операндами множественного типа. С использованием множественных операций могут строиться мно­жественные выражения. Старшинство операций аналогично старшинству при вычислении арифметических выражений: в первую очередь выпол­няются операции в скобках, затем *, после чего + и - в порядке следования слева направо.

Пример.

[1,2,5,6,7]*[2..6] + [3,9] = [2,3,5,6,9]

В Delphi имеются две встроенные подпрограммы для работы с множествами: Exclude(A,x) – удалить из множества A элемент x, Include(A,x) – вставить элемент x во множество A.