ТОР 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. Не нашли, что искали? Воспользуйтесь поиском:
|