Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Тип данных – множество (set). Основные операции и стандартные подпрограммы.




 

 

Контейнер set содержит множество элементов. Используя переменные типа set, можно работать с битовой информацией. Строго говоря, set обеспечивает следующую функциональность:

-- добавить элемент в рассматриваемое множество, при этом исключая возможность появления дублей;

-- удалить элемент из множества;

-- узнать количество (различных) элементов в контейнере;

-- проверить, присутствует ли в контейнере некоторый элемент.

В Delphi разрешено определять тип объектов-множеств, элементами которых являются значения одного и того же базового типа. Базовый тип определяет перечень всех элементов, которые могут содержаться в данном множестве. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым).

 

Описание

 

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

type <имя типа> = set of <базовый тип>;

Здесь <имя типа> - идентификатор; <базовый тип> - один из скалярных типов, кроме вещественного. Базовый тип задаётся диапазоном или перечислением. Из стандартных типов в качестве базового типа множества могут быть указаны типы byte, char и boolean. Базовый тип вводится либо через предварительное определение в разделе описаний программы, либо с помощью прямого указания после слов set of в описании типа множества, например:

type letter = 'a'.. 'z'; // Описание ограниченного типа letter

type SL = set of letter; // Описание множественного типа SL с базовым типом letter

type SLR = set of 'a'.. 'z'; // Прямое включение определения базового типа 'a.. 'z' в описание множественного типа SLR

Если в программе используются переменные, значениями которых являются множества, то эти переменные описываются обычным образом:

type intset = set of byte;

var m1, m2: intset; // Переменные описаны через указание принадлежности ранее определённому типу

var m3: set of 1..20; // Определение типа переменной непосредственно включено в её описание

Задать значение переменной типа множества в программе можно с помощью оператора присваивания, в правой части которого в квадратных скобках перечислены через запятую элементы множества (так называемый конструктор множества). Примеры значений переменных множественного типа:

[ ] - пустое множество;

[1, 3, 5.. 12] - множество, содержащее элементы 1, 3, 5, 6,.. 12;

['a'.. 'p', 'u', 'z'] - множество, состоящее из перечисленных символов типа char.

Элементы типа множества могут задаваться в виде выражений, например: [2+4, 3 * 2]. Выражения должны иметь значения из заданного базисного множества порядкового типа. Область значений переменной множественного типа представляет собой набор всевозможных подмножеств, образованных из элементов базового типа.

В отличие от перечислений нельзя говорить о первом, втором и т.п. элементах множества, поскольку для множеств понятие упорядоченности не имеет смысла. Если множество содержит всего три элемента, то общее количество возможных комбинаций составляет 2 * 2 * 2 = 8. Зарезервированное слово set способно определять множество размерностью до 256 элементов, т.е. 1,1579208923731619542357098500869e+77 вариантов. На практике такое количество вариантов никогда не понадобится. В частности, разработчики Delphi рекомендуют использовать множество с количеством элементов не более 16.

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

Над переменными множественного типа могут выполняться те же операции, что и над обычными множествами:

1. Объединение (+);

2. Пересечение (*);

3. Разность (-).

Использование множеств

 

Наиболее эффективно множество может быть использовано для замены операторов if, например, для проверки наличия некоторого ответа в списке разрешённых. Приведённая ниже программа ввода строки символов, содержащей латинские буквы, цифры и пробелы с контролем правильности введённых символов, может служить примером использования множеств:

 

program Project1;

 

{$APPTYPE CONSOLE}

 

uses SysUtils;

 

var

str: string;

L: byte;

t: boolean;

 

begin

Writeln('Enter string');

readln(str);

L:=length(str); // Число введённых символов

t:=L>0; // True, если не пустая строка

while t and (L>0) do // Проверка с конца строки

begin

t:=str[L] in ['0'.. '9', 'a'.. 'z', 'A'.. 'Z']; // Проверка допустимости символа

dec(L); // Предыдущий символ

end;

if t then writeln('True String') // Правильная строка

else writeln('False string]'); // Неправильная строка

Readln;

end.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных