К статьям

Универсальные коллекции ч.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

Задачи на эту тему:

Рейтинг 0

Комментарии