TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

От автора

 

 

 

33. Множества и операции над ними.

МНОЖЕСТВА - наборы  однотипных логически связанных друг с другом
объектов. Характер связей между объектами подразумевается лишь
программистом  и не контролируется Турбо Паскалем. Количество
элементов в множестве может меняться от 0 до 255. Множество,
которое не содержит элементов, называется  пустым.  От массивов
множества отличаются тем, что количество элементов  в нем не
постоянно.  Его можно расширять и сокращать по ходу выполнения
программы.
Описание типа  производится в разделе TYPE.
Структура:
<Имя идентификатора>=SET of <имя типа> ;
где  <Имя идентификатора> - правильный идентификатор Турбо
Паскаля;
<имя типа> - тип элементов множества,  в качестве  которого  может
использоваться  любой порядковый тип,  кроме WORD,  Integer,
LogInt,
ShortInt.
пример: TYPE dchar=SET of '1'..'9'; {базовый символьный тип-
диапазон}
digit=SET of 0..9;
Переменные этого типа описываются в разделе
VAR     S1,S2,S3:dchar;            S4,S5,S6,S7:digit;
Для задания множества может использоваться конструктор  множества:
список  (спецификаций)  элементов  множества,  отделенных друг от
dpsc` запятыми; список заключается в квадратные скобки.
Спецификациями элементов  м.б.  константы  или  выражения базового
типа,  а также пример:
S1:=['1','2','3'];               S4:=[0..3,7];
S2:=['2','1','3'];               S5:=[4,6];
S3:=['1','2'];                   S6:=[3..8];  S7:=[]; (пустое)
Два множества считаются эквивалентными  тогда  и  только  тогда,
когда все их элементы одинаковы причем порядок следования в
множестве их безразличен. (S1 и S2 эквивалентны).Если все
элементы одного множества входят в другое множество то говорят,
что первое включено во второе. (S3 включено в S1).Пустое множество
включено в любое другое.
Над множествами определены следующие операции:
1. *  пересечение множеств;  результат содержит элементы, общие
для обоих множеств. (S4*S6 содержит [3,7]; S4*S5 образует пустое
мн.).
2. +  объединение множеств, результат содержит элементы первого
множества, дополненные недостающими элементами второго.
S4+S5 содержит [0,1,2,3,4,6,7]    S5+S6 содержит [3,4,5,6,7,8]
3. -  разность множеств, результат содержит элементы из первого
множества, которые не принадлежат второму.
S6-S5 содержит [3,5,7,8])
S4-S5 содержит [0,1,2,3,7])     []-S4 даст [].
4. Операции отношений:
= операция эквивалентности; возвращает значение TRUE, если оба
множества эквивалентны; (S1:=S2;  ['1','2','3']) =['2','3','1']
 проверка неэквивалентности;  (TRUE, если  множества
неэквивалентны);              [1,2]<>[1]      S3<>S2
>= проверка вхождения (TRUE,  если второе множество входит в
первое;
in - проверка принадлежности. Структура этой бинарной операции:
in ;возвращает TRUE,  если выражение имеет значение,
принадлежащее  множеству.
пример:
3 in S6           TRUE;     [] in [0..5]    [] in S5
2*2 in S4         FALSE;
Множества имеют компактное машинное представление. Недостаток:
невозможность вывода множества на  экран,  т.к.  отсутствует
механизм изъятия элемента из множества. Ввод множества возможен
только поэлементно.
пример: Можно тип объявлять при описании переменных
VAR S:SET of char;    {переменная-множество}
C: char;            {элемент множества}
Begin
S:=[];   S:=#0;       {обнуление значений}
while C  '.' do     {цикл до ввода "."}
begin
readln(C);      {чтение символа в с}
S:=S+[C];          {добавление его к S}
end;            ...
S:=S-['.'];           {исключение точки}
End.            {Смотри задание на л.р. N 12 }

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz