|
|||
|
Множества. Типы данных SET Множественный тип данных Множественный тип данных напоминает перечислимый тип данных. Вместе с тем, множество – набор элементов, не организованных в порядке следования. В математике множество – любая совокупность элементов произвольной природы. Понятие множества в программировании значительно уже математического понятия. Под множеством в Паскале понимается конечная совокупность элементов, принадлежащих некоторому базовому типу. В качестве базовых типов могут использоваться: перечислимые типы данных, символьный и байтовый типы или диапазонные типы на их основе. Такие ограничения связаны с формой представления множества в языке и могут быть сведены к тому, что функция Ord для используемого базового типа должна быть в пределах от 0 до 255. Множество имеет зарезервированное слово set of и вводится следующим описанием Type < имя типа > = set of < имя базового типа >; Var < идентификатор,... >:< имя типа >; Рассмотрите примеры описания множеств: Type SetByte = set of byte; {множество 1, определённое над типом byte} SetChisla = set of 10 ... 20; {множество 2, определённое в диапазоне от 10 до 20 Symbol = set of char; {множество, определённое на множестве символов} Month = (January, February, March, April, May, June, July, August, September, October, November, December); Season : set of Month; {тип множества, определённый на базе перечислимого типа Month} Var Letter, Digits, Sign : Symbol {множествa, определённые над символьным типом} Winter, Spring, Summer, Autumn, Vacation, WarmSeason : Season; Index : SetChisla=[12, 15, 17]; Operation : set of (Plus, Minus, Mult, Divid); Param : set of 0..9=[0, 2, 4, 6, 8]; Для переменных типа множества в памяти отводится по 1 биту под каждое возможное значение базового типа. Так, под переменные Letter, Digits, Sign будет отведено по 256/8=32 байта. Для переменной Winter, базовый тип которой (Month) имеет 12 элементов, необходимо 2 байта, причем второй используется только наполовину. Если множество содержит какой-то элемент, то связанный с ним бит имеет значение 1, если нет – 0. Для того, чтобы дать переменной множества какое-то значение, используют либо конструктор множества – перечисление элементов множества через запятую в квадратных скобках Sign:=['+', '–']; Spring:=[March, April, May]; b:=[ 'k', 'l', 'd' ]; либо определение через диапазон. Тогда в множество включены все элементы диапазона Digits:=['0'..'9']; WarmSeason := [May .. September]; Обратите внимание, что в определении множества Digits использованы символы в таблице ASCII-кодов, а не целые числа. Обе формы конструирования могут сочетаться: Vacation:=[January, February, June .. August]; В программах множества часто используются как константы, в этом случае их можно определить следующим образом: {постоянное множество допустимых символов} Const YesOrNo = ['Y', 'y', 'N', 'n']; {множества – типизированные константы} Const Digits : set of char=['0'..'9']; DigitsAndLetter : set of char=['0'..'9', 'a'..'z', 'A'..'Z']; {применение операции "+" для объявления множества-константы} Const Yes = ['Y', 'y']; No = ['N', 'n']; YesOrNo = Yes+No; В языке Паскаль типом-множеством называется множество всевозможных сочетаний объектов исходного множества. Число элементов исходного множества не может быть больше 256, а порядковые номера элементов (т.е. значение функции Ord) должны находиться в пределах от 0 до 255. Для задания типа-множества следует использовать зарезервированные слова set of , а затем указать элементы этого множества, как правило, в виде перечисления или диапазона. Введя тип-множество, можно задать переменные или типизированные константы этого типа-множества. При задании значений константе-множеству ее элементы перечисляются через запятую (допустимо указывать диапазоны) и помещаются в квадратные скобки. Множеству можно в программе присвоить то или иное значение. Обычно значение задается с помощью конструктора множества. Конструктор задает множество элементов с помощью перечисления в квадратных скобках выражений, значения которых дают элементы этого множества. Допустимо использовать диапазоны элементов. Например, следующие конструкции являются конструкторами множеств: [Plus,Minus] [1..K mod 12, 15] [Chr(0) .. Chr(31), 'A', 'B'] В каждое множество включается и так называемое пустое множество [ ], не содержащее никаких элементов. Конструктор множества можно использовать и непосредственно в операциях над множествами. Для множеств определены следующие операции: + – объединение множеств; – – разность множеств; * – пересечение множеств; = – проверка эквивалентности двух множеств; <> – проверка неэквивалентности двух множеств; <= – проверка, является ли левое множество подмножеством правого множества; >= – проверка, является ли правое множество подмножеством левого множества; in – проверка, входит ли элемент, указанный слева, в множество, указанное справа. Результатом операции объединения, разности или пересечения является соответствующее множество, остальные операции дают результат логического типа. |
||
|
|||
НАЦИОНАЛЬНЫЙ ФОНД ПОДГОТОВКИ КАДРОВ. ИНФОРМАТИЗАЦИЯ СИСТЕМЫ ОБРАЗОВАНИЯ. Сайт сделан по технологии "Конструктор школьных сайтов". |