Универсальные коллекции ч.1
5 мин
Введение
В этой статье познакомимся с понятием коллекция и основными универсальными коллекциями встроенного языка: Массив, Соответствие, Структура, ТаблицаЗначений
Что такое коллекция?
В программировании коллекция - программный объект, содержащий набор значений одного или различных типов, и позволяющий обращаться к этим значениям.
Каждое значение коллекции - это элемент коллекции.
Коллекции создаются с помощью оператора Новый <ТипКоллекции>
В общем смысле коллекция - набор предметов. Например, коллекция антиквариата. Антиквариатом могут быть самые разные предметы, хотя и объединены общим смыслом.
Предположим, у нас есть коллекция антиквариата и нужно перевести часть из этой коллекции в другое помещение. Для этого сделаем записи, которые потом передадим транспортной компании. В записях нужно описать какие предметы перевозятся и как их можно найти. Рассмотрим как бы мы это делали с точки зрения встроенного языка:
Массив
1. На перевозимые предметы наклеить стикеры, с номерами по порядку, начиная с 0. Затем записать получившийся список. Грузчик соберет все предметы с номерами, в записях по цифрам будет понятно, что это за предмет - под цифрой 0 песочные часы, под 1 патефон и тд
Набор значений, индентифицируемый по индексу (где индексы целые числа начинающеся с 0, идущие по порядку), называется Массивом.
// 1. Создадим массив
Коллекция = Новый Массив;
// 2. Добавим в него записи о предметах
Коллекция.Добавить("Песочные часы"); // Первый элемент с индексом 0
Коллекция.Добавить("Патефон"); // Второй с индексом 1
Коллекция.Добавить("Лампа"); // 2
Коллекция.Добавить("Ваза"); // 3
Коллекция.Добавить("Печатная машинка"); // 4
Коллекция.Добавить("Проектор"); // Последний элемент с индексом 5
// 3. Обратимся к элементам по индексу
Сообщить(Коллекция[0]); // Песочные часы
Сообщить(Коллекция[1]); // Патефон
Подробнее в статье Массивы
Соответствие
2. Дать псевдонимы всем предметам и для каждого псевдонима записать положение, таким образом образовать пары Псевдоним - Положение. Грузчик просмотрит все псевдонимы и для них получит положения
Имя товара здесь это Ключ, Положение - Значение. По ключу получаем значение. Ключом может быть любой тип данных
Коллекция пар Ключ и Значение образуют Соответствие
// 1. Создадим соответствие
Коллекция = Новый Соответствие;
// 2. Добавим в него записи о предметах
Коллекция.Вставить("Песочные часы", "1-я полка");
Коллекция.Вставить("Патефон", "2-я полка");
Коллекция.Вставить("Лампа", "3-я полка");
Коллекция.Вставить("Ваза", "На столе");
Коллекция.Вставить("Печатная машинка", "7-я полка");
Коллекция.Вставить("Проектор", "На полу");
// 3. Обратимся к элементам, используя [<Имя элемента>]
Сообщить(Коллекция["Песочные часы"]);
Сообщить(Коллекция["Патефон"]);
Подробнее в статье Соответствия
Структура
3. Вместо псевдонимов использовать идентификаторы (написанные по правилам переменных), так же записывать для них положение. Положение получается по имени
Имя товара здесь это Ключ, Положение - Значение. По ключу получаем значение. Ключом может строка, написанная по правилам именований переменных
// 1. Создадим Структуру
Коллекция = Новый Структура;
// 2. Добавим в нее записи о предметах
Коллекция.Вставить("ПесочныеЧасы", "1-я полка");
Коллекция.Вставить("Патефон", "2-я полка");
Коллекция.Вставить("Лампа", "3-я полка");
Коллекция.Вставить("Ваза", "На столе");
Коллекция.Вставить("ПечатнаяМашинка", "7-я полка");
Коллекция.Вставить("Проектор", "На полу");
// 3. Обратимся к элементам используя [<Имя элемента>] и через точку
Сообщить(Коллекция["ПесочныеЧасы"]);
Сообщить(Коллекция["Патефон"]);
Сообщить(Коллекция.Лампа);
Сообщить(Коллекция.Ваза);
Подробнее в статье Структуры
Таблица значений
4. Сделать таблицу с колонками в которых описать не только положение, псевдоним, но и любую дополнительную информацию
Индекс | Наименование | Положение | ПредметХрупкий |
---|---|---|---|
0 | Песочные часы | 1-я полка | Истина |
1 | Патефон | 2-я полка | Истина |
2 | Лампа | 3-я полка | Истина |
3 | Ваза | На столе | Истина |
4 | Печатная машинка | 7-я полка | Ложь |
5 | Проектор | На полу | Истина |
Коллекция, представляющая собой таблицу (колонки и столбцы) - это таблица значений. В ней при создании уже есть колонка индекс
// 1. Создадим Таблицу значений
Коллекция = Новый ТаблицаЗначений;
// 2. Добавим в нее колонки методом Добавить(<ИмяКолонки>, <Описание типов>)
// Если тип колонки не указан, то определяется первым помещенным в нее значением
Коллекция.Колонки.Добавить("Наименование");
Коллекция.Колонки.Добавить("Положение");
Коллекция.Колонки.Добавить("ПредметХрупкий", Новый ОписаниеТипов("Булево"));
// 3. Добавим новые строки таблицы и заполним для них значения колонок
НоваяСтрока = Коллекция.Добавить();
НоваяСтрока.Наименование = "Песочные часы";
НоваяСтрока.Положение = "1-я полка";
НоваяСтрока.ПредметХрупкий = Истина;
НоваяСтрока = Коллекция.Добавить();
НоваяСтрока.Наименование = "Патефон";
НоваяСтрока.Положение = "2-я полка";
НоваяСтрока.ПредметХрупкий = Истина
// 4. Обратимся к номеру строки по индексу Коллекция[Индекс] и сообщим значения колонок
СтрокаПесочныеЧасы = Коллекция[0];
Сообщить("Предмет: " + СтрокаПесочныеЧасы.Наименование + ". Положение: " + СтрокаПесочныеЧасы.Положение);
СтрокаПатефон = Коллекция[1];
ТекстСообщения = СтрШаблон("Предмет: %1. Положение: %2",
СтрокаПатефон.Наименование, СтрокаПатефон.Положение);
Сообщить(ТекстСообщения)
Подробнее в статье Таблицы значений
Есть и другие универсальные коллекции с ними познакомимся позднее. Продолжение в статье Универсальные коллекции ч. 2