У каждой из этих процедур по два параметра. Первый – параметр-переменная множественного типа, второй – параметр-значение типа, соответствующего базовому типу для первого параметра.
Положим, S – первый параметр, а I – второй. В результате выполнения
a) процедуры INCLUDE,
b) процедуры EXCLUDE
значение S становится равным
a) S + [I],
b) S - [I].
Добавление и удаление одиночного элемента с помощью INCLUDE и EXCLUDE реализуется быстрее по сравнению со способом, преполагающим использование операций + и -.
Рассмотрим ряд примеров.
Пример 1.
Пусть дано слово, состоящее из русских букв. Необходимо найти количество позиций в слове, занятых гласными буквами.
Приведём два варианта реализации данного задания.
Вариант 1.
PROCEDURE …;
VAR
SL, S, G: STRING;
I, K: BYTE;
BEGIN
… // Задание значения переменной SL.
S:= ANSIUPPERCASE (SL);
G:= ’АОЭУЫЯЁЕЮИ’;
K:= 0;
FOR I:= 1 TO LENGTH (S) DO
IF POS (S[I], G) > 0
THEN K:= K + 1;
… // Вывод значения переменной K.
END;
Вариант 2.
PROCEDURE …;
VAR
SL, S: STRING;
G: SET OF CHAR;
I, K: BYTE;
BEGIN
… // Задание значения переменной SL.
S:= ANSIUPPERCASE (SL);
|
|
G:= [’А’, ’О’, ’Э’, ’У’, ’Ы’, ’Я’, ’Ё’, ’Е’, ’Ю’, ’И’];
K:= 0;
FOR I:= 1 TO LENGTH (S) DO
IF S[I] IN G
THEN K:= K + 1;
… // Вывод значения переменной K.
END;
Пример 2.
Пусть дано слово, состоящее из русских букв. Необходимо найти мощность множества букв, являющихся гласными, входящими в слово.
Приведём два варианта реализации данного задания.
Вариант 1.
PROCEDURE …;
VAR
SL, S: STRING;
G, A: SET OF CHAR;
I, K: BYTE;
C: CHAR;
BEGIN
… // Задание значения переменной SL.
S:= ANSIUPPERCASE (SL);
G:= [’А’, ’О’, ’Э’, ’У’, ’Ы’, ’Я’, ’Ё’, ’Е’, ’Ю’, ’И’];
A:= [];
FOR I:= 1 TO LENGTH (S) DO
IF S[I] IN G
THEN INCLUDE (A, S[I]);
K:= 0;
FOR C:= ’А’ TO ’Я’ DO
IF C IN A
THEN K:= K + 1;
… // Вывод значения переменной K.
END;
Вариант 2.
PROCEDURE …;
VAR
SL, S: STRING;
G, A: SET OF CHAR;
I, K: BYTE;
BEGIN
… // Задание значения переменной SL.
S:= ANSIUPPERCASE (SL);
G:= [’А’, ’О’, ’Э’, ’У’, ’Ы’, ’Я’, ’Ё’, ’Е’, ’Ю’, ’И’];
A:= [];
K:= 0;
FOR I:= 1 TO LENGTH (S) DO
IF S[I] IN G
THEN IF S[I] IN A
THEN
ELSE BEGIN
INCLUDE (A, S[I]);
K:= K + 1
END;
… // Вывод значения переменной K.
END;
Пример 3.
Пусть A – некоторое множество с элементами типа BYTE. Необходимо осуществить вывод элементов этого множества.
Приведём один из вариантов реализации данного задания.
PROCEDURE …;
VAR
A: SET OF BYTE;
I: BYTE;
BEGIN
… // Задание значения переменной A.
FOR I:= 0 TO 255 DO
IF I IN A
THEN MEMO1. LINES. ADD (INTTOSTR (I))
END;
Записи.
Тип-запись. Множество значений и описание типа.
Значениями того или иного типа-запись являются отображения, область определения каждого из которых представляет собой совокупность имён переменных необязательно одного и того же типа (эти переменные называют полями записи), а значения, соответствующие этим именам переменных, – это допустимые значения данных переменных.