пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

II семестр:
» Инфа, 2 сем

Множественные типы данных

В программировании множество может содержать только конечное число элементов, т.е. не может состоять из бесконечного числа объектов. Следует понимать, что множество не предназначено для хранения каких-либо значений (чисел, символов и т.д.) - оно лишь может дать нам ответ на вопрос: присутствует конкретный элемент в множестве или его там нет. Множество может быть построено на основе перечислимого типа. Например, на основе символьного типа Char. По-английски множество называется set (набор) и именно этим словом описывается в Delphi:  var A: set of Char;

Запомните: множество не может состоять более чем из 255 элементов!

Например, следующее описание: var N: set of Integer;

приведёт к ошибке "Set base type out of range".

Задание множеств

В Delphi используются квадратные, чтобы записать множество. Чтобы задать множество, мы можем воспользоваться операцией присваивания, где слева стоит переменная-множество, а справа - нужный нам набор. Например, в описанное выше множество A мы хотим поместить элементы-символы A, B, C, D. Тогда это запишется так: A:=['A','B','C','D']; Если вспомнить, что тип данных Char упорядочен, то данную запись можно сократить следующим образом: A:=['A'..'D']; Мы просто указали диапазон значений, который должен находиться во множестве. Допустимы, конечно же, комбинации диапазонов и отдельных значений:A:=['A','B','K'..'N','R','X'..'Z']; Помните, что множество - это виртуальный набор элементов: множество нельзя ввести с клавиатуры и точно так же нельзя вывести на экран. Поэтому добавление элементов во множество делается только программным путём. Безусловно, вы каким-либо образом можете связать элементы интерфейса программы и операцию добавления элементов во множество, но напрямую ввести множество нельзя. Аналогично, вы можете показать множество на экране с помощью каких-либо элементов (например, флажков TCheckBox), но само множество "в чистом виде" вывести нельзя.

Операции над множествами:

Находится ли элемент во множестве?

Чтобы проверить, входит ли элемент во множество, следует использовать специальную конструкцию с оператором in. Слева от него указывается элемент, справа - множество.

 var A: set of Char; [...]; A:=['A'..'E','X']; if 'D' in A then ShowMessage('Элемент В находится во множестве A.');

Несложно проверить, что сообщение в данном случае появится на экране.

Объединение множеств

Если есть два множества, определённые на одном и том же типе данных, то их можно объединить и получить таким образом новое множество.

В словесном описании операция объединения - результирующее множество содержит все те элементы, которые есть хотя бы в одном из двух исходных множеств.

Объединение записывается знаком плюс "+". Пример:

var A,B,C: set of Char; [...] A:=['A','B','C']; B:=['X','Y','Z'];C:=A+B; //C = ['A','B','C','X','Y','Z']

Включение одного элемента во множество делается точно таким же образом, просто в этом случае включаемое множество содержит всего один элемент.

Пересечение множеств

Операция пересечения формирует множество только из тех элементов, которые одновременное присутствуют как в первом, так и во втором исходном множестве. 

Пересечение обозначается звёздочкой "*". Пример:

var X,Y,Z: set of Byte;[...] X:=[1,2,3,4,5];Y:=[4,5,6,7,8];Z:=X*Y;//Z = [4,5]

Разность множеств

Операция вычитания удаляет из первого множества те элементы, которые есть во втором множестве:

var X,Y,Z: set of Char;[...] X:=['A'..'D'];Y:=['D'..'F'];Z:=X-Y;//Z = ['A'..'C']

Следует обратить внимание, что порядок множеств в данном случае важен, т.е. X-Y и Y-X - это разные множества.

Применение множеств

Множества находят широкое применение. С помощью множеств удобно задавать набор опций, каждая из которых либо включена, либо выключена. К примеру, поместите на форму кнопку (TButton), перейдите в инспектор объектов, разверните свойство Font (шрифт) и найдите свойство Style. Вот это свойство как раз и реализовано множеством. Во множестве 4 элемента: fsBold, fsItalic, fsUnderline и fsStrikeOut, каждый из которых отвечает за стиль шрифта. Принадлежность элементов ко множеству задаётся указанием значения True или False для каждого из этих пунктов. В строке "Style" находится описание данного множества. Попробуйте изменять стиль и посмотреть, как меняется описание множества Style.


09.06.2014; 18:05
хиты: 88
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь