Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_TP.doc
Скачиваний:
10
Добавлен:
22.12.2018
Размер:
1.4 Mб
Скачать

Множественный тип (множества) set.

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

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

Тип называется базовым.

Объявление типа множества осуществляется следующим образом:

    1. VAR <ИМЯ МНОЖЕСТВА>: SET OF <БАЗОВЫЙ ТИП>;

    2. TYPE <ИМЯ ТИПА>=SET OF <ТИП>;

VAR <ИМЯ МНОЖЕСТВА>:<ИМЯ ТИПА>;

TYPE N=(1,3,5,7,9);

VAR K:SET OF N;

BEGIN

K:=[3...9];

Пример: TYPE B=SET OF BYTE;

VAR A:B;

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

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

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

А А+В AB

В

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

[1..5]+[1..8] [1..8]

[0..5]+[10..15] [0..5,10..15]

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

А А*В AB

В

[0..5]*[0..7]=[0..5]

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

А А-В А\В

В

4.Логическая операция проверки принадлежности множеству.

Пример: 2 IN [1..10,12] TRUE

5 IN [1,2,7,10] FALSE

Операцию проверки принадлежности удобно использовать для исключения более сложных проверок.

IF (CH=’A’) OR (CH=’B’)

OR (CH=’C’) THEN …

IF CH IN ‘A’..’D’ THEN …

5. Проверка множества на равенство, неравенство ; <= - проверка на вхождение множества из левого операнда (левой части) на множество из правого операнда; >= - проверка на вхождение множества из правой части в множество из левого операнда.

[1,2,3]>=[1,2] TRUE

Пример: применение множеств.

Из множества целых чисел 1..20 выделить множество чисел делящихся на 6 без остатка, делящихся без остатка на 2 или на 3.

PROGRAM EXAMPLE_17;

CONST N=20;

VAR N2, N3, N6, N23:SET OF BYTE; K:INTEGER;

BEGIN

N2:=[ ];

N3:=[ ];

FOR K:=1 TO N DO

BEGIN

IF K MOD 2=0 THEN N2:=N2+[K];

IF K MOD 3=0 THEN N3:=N3+[K];

END;

N6:=N2*N3;

N23:=N2+N3;

WRITELN(‘НА 6 ДЕЛЯТСЯ ЧИСЛА:’);

FOR K:=1 TO N DO

IF K IN N6 THEN WRITE (K:3);

WRITELN;

WRITELN(‘НА 2 ИЛИ НА 3 ДЕЛЯТСЯ ЧИСЛА:’);

FOR K:=1 TO N DO

IF K IN N23 THEN WRITE (K:3);

END.

Строковый тип string.

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

TYPE LINE=STRING[80 ];

VAR MYLINE: LINE;

BEGIN ДЛИНА

MYLINE:=’КОРОТКАЯ СТРОКА’;

MYLINE:=MYLINE+’…’; {ДОБАВЛЕНИЕ ТЕКСТА К MYLINE}