TURBO PASCAL |
Новости
|
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 } |
На первую страницу
(с)Все права защищеныПо всем интересующим вопросам прошу писать на электронный адрес |