Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по технологии програм..doc
Скачиваний:
13
Добавлен:
24.02.2016
Размер:
253.95 Кб
Скачать

Лекция №7. Множества.

Наряду с численными типами множества являются фундаментальным понятием в математике (конечные, бесконечные, состоящие из разных (произвольных) элементов). В Pascal рассматриваются только конечные множества, состоящие из небольшого числа элементов имеющие один и тот же тип.

Определение: Множества в Pascal – это ограниченный, упорядоченный набор различных элементов одного базового типа.

Базовый тип – это совокупность значений из которых могут быть образованы множества. Всего может быть не более 256 различных элементов. (Идет то же самое расширение, что и по строке.)

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

Постоянные множества и в Pascal и в математике задаются путем их перечисления.

Математика

Pascal

0

[]

{1, 2, 3}

[1, 2, 3]

{A, B, C, D}

['A', 'B', 'C', 'D']

{1, 2, …, N}

[1..N]

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

Множества в Pascal описываются:

TYPE имя типа = SET OF базовый тип;

VAR имя переменной: имя типа;

или

VAR имя переменной: SET OF базовый тип;

или

CONST имя переменной = [элементы множества];

Пример:

VAR A: SET OF INTEGER;

B: SET OF 'A'..'Z';

C:SETOFCHAR;

В отличие от массивов к элементам множества нет прямого доступа, поэтому ввод и вывод элементов множества осуществляется:

  1. Ввод с помощью операции сложения (объединения)

  2. Вывод с помощью проверки принадлежности IF.

Формирование множеств.

Если элементы множества идут подряд друг за другом, то можно использовать диапазон. Например, множество описанное: VAR A: SET OF 1..5; может принимать значения:

A = [];

A[1], [2], [3], [4], [5]

A[1, 2], [1, 3], [1, 4], [1, 5]…

A[1, 2, 3]…

A[1, 2, 3, 4]…

A[1, 2, 3, 4, 5]

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

Отношения рассматриваются, как операции, вырабатывающие логическое выражение.

Математика

Pascal

В Pascal определены три операции над множествами:

1. Операция объединения.

Математика:

B

A

Pascal:

Объединением двух множеств называется множество элементов принадлежащих обоим множествам.

Пример:

['A', 'B'] + ['C', 'D'] = ['A', 'B', 'C', 'D']

2. Пересечение

Математика:

Pascal:

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

Пример:

['A', 'B']*['C', 'D'] = [];

3. Математика:

Pascal:

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

Пример:

['A', 'B'] – ['C', 'D'] = ['A', 'B'];

Над элементами множества определены операции сравнения (=, ,). Над элементами допустим оператор присваивания.

Пример:

VAR A,B: SET OF 1..10;

BEGIN

A:=[1, 5, 7];

B:=A;

Оператор B:=A означает, что переменнойB-типа множество присваивается текущее значение множества А и вместо А может использоваться выражение типа множество.

Ввод элементов во множество:

A:=[];

READ (C); {C базовому типу}

WHILE C<>0 DO

BEGIN

A:=A+C;

READ (C); END;

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

PROGRAM MNO;

VAR M: SET OF CHAR;

STR: STRING;

C: CHAR;

I,N: INTEGER;

BEGIN

M:=[ ]; N:=0;

READLN (STR);

FOR I:=1 TO LENGTH (STR) DO

M:=M+STR[ I ];

FOR C:='A' TO 'Я' DO

IF C IN M THEN N:=N+1;

WRITELN (N);

END.