Операции над множественными типами Паскаля
Множества Pascal-Паскаль
Еще одним фундаментальным классом данных являются данные, структурированные в виде множеств. О перечисляемых типах
Прежде рассматривали три скалярных типа, которые, в принципе, являются перечисляемыми типами, – это boolean, char и integer. В самом деле, ведь каждый из этих типов можно задать следующим образом: type Boolean= (false, true); char= #0..#255; integer= -32768..32767;
(Представление #xxx означает, что должен быть взят символ, чей код в таблице ASCII равен xxx). Это базовые типы, которые не требуется задавать каждый раз, уже определены в системе именно таким образом. Кроме них имеется еще несколько интервальных типов, с некоторыми из которых мы знакомы: shortint>= -128..127; longint= -2147483648..247483647; byte= 0..255; word= 0..65535; Переменные, имеющие эти типы, могут принимать значения, лежащие в границах соответствующих интервалов. Для работы с перечисляемыми типами существуют следующие функции, которые хранятся в библиотеке системных функций, и программист имеет к ним доступ: ord(N) – возвращает номер элемента N в множестве; succ(N) – возвращает следующее значение для N; pred(N) – возвращает предыдущее значение для N. Пользователь имеет возможность описать собственный перечисляемый тип данных. В общем виде это описание выглядит так: type <имя_типа>=(<идентификатор1>,<идентификатор2>, ..,<идентификаторN>); В скобках перечисляются все возможные значения, которые может принимать переменная данного типа. Следует запомнить, что названия значений нельзя давать по-русски(это важно!). Например, мы можем описать тип данных color и перечислить семь основных цветов: type color=(red, orange, yellow, green, blue, magenta);
При этом значения получают номера в порядке их перечисления, начиная с 0. Поэтому для данного типа справедливыми будут отношения элементов: red< orange< yellow< green< blue< magenta; ord(red)=0; succ(blue)= magenta; pred(green)=yellow; Множественный тип данных Паскаля
Множественный тип данных Паскаля напоминает перечислимый тип данных. Вместе с тем множественный тип данных – набор элементов не организованных в порядке следования. В математике множественный тип данных – любая совокупность элементов произвольной природы. Операции, которые производятся над множествами, по существу заключаются во включении и исключении элементов из множества. Понятие множества в языке программирования значительно уже математического понятия. В Паскале под множественным типом понимается конечная совокупность элементов, принадлежащих некоторому базовому типу данных. В качестве базовых типов могут использоваться: перечислимые типы; символьный; байтовый; диапазонные на основе вышеперечисленных. Такие ограничения связаны с формой представления множественного типа данных в Паскале и могут быть сведены к тому, чтобы функция ord() для используемого базового типа лежала в пределах от 0 до 255. После того, как базовый тип задан, совокупность значений соответствующего множественного типа данных определяется автоматически. В нее входят все возможные множества, являющиеся произвольными комбинациями значений базового типа. Все эти множества являются отдельными значениями определенного множественного типа данных. Описание множественного типа данных Паскаля Type <имя_типа>= set of <базовый_тип> Пример множественного типа данных Паскаля Type symbol= set of char; {описан множественный тип symol из букв} Var letter, digits, sign: symbol; {описаны три переменные множественного типа} Для того чтобы придать переменной множественного типа значение, используют конструктор множества – перечисление элементов множества через запятую в квадратных скобках. Например, sign:= [‘+’, ‘-‘];
Конструктор множества может содержать диапазон значений базового типа. Тогда во множества включаются все элементы диапазона. Например, digits:= [‘0’ .. ‘9’]; letter:= [‘a’ .. ‘z’];
Обе формы конструирования множеств могут сочетаться. Например, letter:= [‘a’ .. ‘z’, ‘A’ .. ‘Z’]; Конструктор вида [] обозначает пустые множества. В программе можно использовать множественны тип как константы, в этом случае их определяют следующим способом: Const YesOrNo= [‘Y’, ‘y’, ‘N’, ‘n’]; Можно множественный тип определить как типизированную константу: Const digits: set of char= [‘0’ .. ‘9’]; При описании множественного тип как констант допускается использование знака “+” (слияние множеств). Например, Const Yes= [‘Y’, ‘y’]; No= [‘N’, ‘n’]; YesOrNo= Yes+ No; Операции над множественными типами Паскаля
С множественными типами Паскаля можно выполнять действия объединения, исключения и пересечения. Объединение множественных типов содержит элементы, которые принадлежат хотя бы одному множеству, при этом каждый элемент входит в объединение только один раз. Операция объединения множеств обозначается знаком ‘+’. Пример множественных типов Паскаля
Type symbol= set of char; Var small, capital, latin: symbol; ……………… small:= [‘a’ .. ‘z’]; capital:= [‘A’ .. ‘Z’]; latin:= small + capital; {образованы множества латинских букв путем объединения множеств small и capital}
Возможно объединять множественные типы и отдельные элементы. Например, small:= [‘c’ .. ‘z’]; small:= small + [‘a’] +[‘b’];
Исключение определяется как разность множественных типов, в котором из уменьшаемого исключаются элементы, входящие в вычитаемое. Если в вычитаемом есть элементы, отсутствующие в уменьшаемом, то они никак не влияют на результат. Операция исключения обозначается знаком ‘-‘. Пример исключения множественных типов Паскаля
letter:= [‘a’ .. ‘z’]; {множества букв латинского алфавита} glasn:= [‘a’, ‘e’, ‘o’, ‘u’, ‘i’, ‘y’]; {множества гласных букв} soglasn:= letter-glasn; {образовано множества согласных букв путем исключения из множества всех букв множества гласных букв}
Пресечение множественных типов– множества, содержащие элементы, одновременно входящие в оба множества. Операция пересечения множеств обозначается знаком ‘*’. Пример пересечения множественных типов
Type chisla= set of byte; Var z,x,y: chisla; ……….. x:= [0..150]; y:= [100..255]; z:= x*y {получено множества чисел из диапазона 100..150 в результате пересечения двух множеств}
Популярное: Почему стероиды повышают давление?: Основных причин три... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (950)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |