Основы алгоритмизации и программирования. Часть третья. Структурированные типы данных. Асламова В.С - 36 стр.

UptoLike

71
<А<>В> — проверка неэквивалентности двух множеств; возвращает
TRUE, если оба множества неэквивалентны;
<А<=В> - проверка вхождения возвращает TRUE, если множество А
включено во множество В;
<А>=В> - проверка вхождения возвращает TRUE, если множество В
включено во множество А;
<i
IN A> - проверка принадлежности элемента I множеству А
возвращает TRUE, если элемент принадлежит множеству А.
Более наглядно результаты операций над множествами представлены
на ЛОС 2, множества изображены в виде кругов, результат операции
заштрихован.
Пример:
var S:set of byte; k:byte;
begin
S:=[1..6]; k:=3;
if k in S then
writeln(TRUE); {будет напечатано TRUE}
k:=8; if k in S then
writeln(входит)
else writeln(не входит); {будет напечатано - не входит}
end.
Дополнительно к этим операциям можно использовать две процедуры,
INCLUDE - включает новый элемент во множество. Обращение к
процедуре:
INCLUDE (S,I);
Здесь S - множество, состоящее из элементов базового типа:
I - элемент базового типа, который необходимо включить во
множество
.
EXCLUDE - исключает элемент из множества. Обращение:
EXCLUDE (S,l);
Параметры обращения - такие же, как у процедуры INCLUDE.
В отличие от операции + и - , реализующих аналогичные действия над
двумя множествами, процедуры INCLUDE и EXCLUDE оптимизированы для
72
работы с одиночными элементами множества и поэтому отличаются высокой
скоростью выполнения.
Достоинства множеств очевидны: удобство анализа, гибкость
представления наборов значений, правда,
ограниченных типов и размеров.
Значения типа множества очень компактно кодируются. Множества хорошо
работают там, где нужно проводить анализ однотипных выборок значений
или накапливания поступающих значений.
К недостаткам множеств можно отнести следующие:
1. Ввод множеств возможен только по элементам.
Например:
var s:set of char; c:char;
begin
s:=[ ]; readln(c);
while c<>. do
begin
s:=s+[c]; readln(c);
end;
s:=s-[?]; {можно выбросить элемент}
…….end.
2. Нет операции выборки элементов из массива и печати их значений.
Поэтому приходиться организовывать цикл по всему диапазону значений
базового типа, проверяя на каждой итерации принадлежность очередного
значения данному множеству, например:
var symvol:set of char; s:char;
begin
symvol:=[А..У,*,0..5];
for s:=chr(0) to chr(255) do
if s in symvol then writeln(s);
end.
В примере 19, иллюстрирующем приемы работы с
множествами,
реализуется алгоритм выделения из первой сотни натуральных чисел всех
простых чисел.
     <А<>В> — проверка неэквивалентности двух множеств; возвращает         работы с одиночными элементами множества и поэтому отличаются высокой
TRUE, если оба множества неэквивалентны;                                   скоростью выполнения.
                                                                                    Достоинства множеств очевидны: удобство анализа, гибкость
     <А<=В> - проверка вхождения возвращает TRUE, если множество А
                                                                           представления наборов значений, правда, ограниченных типов и размеров.
включено во множество В;
                                                                           Значения типа множества очень компактно кодируются. Множества хорошо
     <А>=В> - проверка вхождения возвращает TRUE, если множество В         работают там, где нужно проводить анализ однотипных выборок значений
включено во множество А;                                                   или накапливания поступающих значений.
       - проверка принадлежности элемента I множеству А                     К недостаткам множеств можно отнести следующие:
возвращает TRUE, если элемент принадлежит множеству А.                       1. Ввод множеств возможен только по элементам.
                                                                           Например:
      Более наглядно результаты операций над множествами представлены       var s:set of char; c:char;
на ЛОС № 2, множества изображены в виде кругов, результат операции         begin
заштрихован.                                                                     s:=[ ]; readln(c);
                                                                                 while c<>′.′ do
       Пример:                                                                          begin
       var S:set of byte; k:byte;                                                           s:=s+[c]; readln(c);
       begin                                                                            end;
        S:=[1..6]; k:=3;
                                                                                       s:=s-[′?′];          {можно выбросить элемент}
        if k in S then
                                                                                            .end.
        writeln(′TRUE′);          {будет напечатано TRUE}                    2. Нет операции выборки элементов из массива и печати их значений.
        k:=8; if k in S then                                               Поэтому приходиться организовывать цикл по всему диапазону значений
        writeln(′входит′)                                                  базового типа, проверяя на каждой итерации принадлежность очередного
        else writeln(′не входит′); {будет напечатано - не входит}          значения данному множеству, например:
       end.                                                                  var symvol:set of char; s:char;
      Дополнительно к этим операциям можно использовать две процедуры,     begin
      INCLUDE - включает новый элемент во множество. Обращение к                 symvol:=[′А′..′У′,′*′,′0′..′5′];
процедуре:                                                                       for s:=chr(0) to chr(255) do
                                  INCLUDE (S,I);                                 if s in symvol then writeln(s);
      Здесь S - множество, состоящее из элементов базового типа:           end.
      I - элемент базового типа, который необходимо включить во                     В примере № 19, иллюстрирующем приемы работы с множествами,
множество.                                                                 реализуется алгоритм выделения из первой сотни натуральных чисел всех
      EXCLUDE - исключает элемент из множества. Обращение:                 простых чисел.
                                   EXCLUDE (S,l);
      Параметры обращения - такие же, как у процедуры INCLUDE.
      В отличие от операции + и - , реализующих аналогичные действия над
двумя множествами, процедуры INCLUDE и EXCLUDE оптимизированы для

                                    71                                                                      72