Практическая работа №8 «Массивы в языке 1С»
Цель: научиться использовать массивы в языке 1С.
Оборудование, ПО и нормативные документы: ПК с выходом в Интернет, учебная версия 1С: Предприятие 8.3.
Ход работы:
Познакомимся с новым типом данных языка 1С, который называется Массив.
Что такое массивы и зачем они вообще нужны программисту? Давайте представим, что у нас есть 4 разных числа. К примеру: 25, 84, 31 и 96. Если бы мы захотели использовать их в своей программе, то нужно было бы дать имя каждому из чисел. А что, если хранить их все вместе, под одним общим именем, к примеру, СлучайныеЧисла. И обращаться к ним как СлучайныеЧисла0, СлучайныеЧисла1, Случай- ныеЧисла2 и так далее.
Значений много, а имя одно. И чтобы получить конкретное значение мы бы указывали имя и порядковый номер (начиная с нуля). Это и был бы массив.
Еще полезно представлять себе массив как шкаф, у которого множество нумерованных ящиков (начиная с нуля). Шкаф — это массив, а ящики — это номера. Содержимое ящиков — элементы массива. Доступ к содержимому конкретного ящика осуществляется по имени шкафа и номеру ящика.
В языке 1С это будет выглядеть так:
СлучайныеЧисла = Новый Массив(4); // завели массив для
//хранения 4 чисел СлучайныеЧисла[0] = 25; // поместили в ящик №0 первое
// число
СлучайныеЧисла[1] = 84; // поместили в ящик №1 второе
//число СлучайныеЧисла[2] = 31; // и так далее СлучайныеЧисла[3] = 96;
В этом примере в первый раз использованы пояснения прямо в коде. Такие пояснения называются комментариями. Они отделяются от кода программы двумя косыми чертами и нужны только для программиста — компьютер их игнорирует.
В массивах можно хранить значения разных типов, а не только числа:
РазличныеЗначения = Новый Массив(3); // массив для
// хранения 3 значений РазличныеЗначения[0] = 100; // поместили в ящик №0
// число РазличныеЗначения[1] = "Солнечный день."; // поместили
//в ящик №1 строку РазличныеЗначения[2] = '19991231'; // поместили в ящик
// №2 дату
В ящики массива значения можно не только класть, но и доставать:
Сообщить(РазличныеЗначения[0]); // выведем содержимое ящика №0 Сообщить(РазличныеЗначения[1]); // выведем содержимое ящика №1 Сообщить(РазличныеЗначения[2]); // выведем содержимое ящика №2
Преимущество использования массивов состоит именно в том, что доступ к их значениям осуществляется через числовой номер, через индекс. А значит, мы легко можем перебрать все значения массива в цикле:
Для Шаг = 0 По 2 Цикл // делаем цикл от 0 до 2 Сообщить(РазличныеЗначения[Шаг]);
//обращаемся
// к ящику массива по номеру
КонецЦикла;
Задание 1. Необходимо ввести от пользователя 5 чисел, найти их сумму и вывести результат.
Давайте решим эту задачу двумя способами. Сначала без использования массива:
Число1 = 0;
Число2 = 0;
Число3 = 0;
Число4 = 0;
Число5 = 0;
ВвестиЧисло(Число1);
ВвестиЧисло(Число2);
ВвестиЧисло(Число3);
ВвестиЧисло(Число4);
ВвестиЧисло(Число5);
СуммаЧисел = Число1 + Число2 + Число3 + Число4 + Число5; ОткрытьЗначение("Сумма чисел равна " + СуммаЧисел);
А теперь с использованием массива:
Числа = Новый Массив(5);// объявили массив с 5 ящиками Для Шаг = 0 По 4 Цикл
ВвестиЧисло(Числа[Шаг]); //в каждый ящик вводим число КонецЦикла
СуммаЧисел = 0; // в этом имени будем накапливать
// сумму чисел
Для Шаг = 0 По 4 Цикл // пробегаемся циклом от 0 до 4
СуммаЧисел=СуммаЧисел+Числа[Шаг];//суммируем числа
// из массива
КонецЦикла;
ОткрытьЗначение("Сумма чисел равна " + СуммаЧисел);
Вроде бы сэкономили всего три строки. А если бы нужно было ввести не 5, а 100 чисел?
Задание 2. Переделайте приведенный выше пример, чтобы вводилось 10 чисел и находилось произведение.
Задание 3. Необходимо ввести от пользователя 5 чисел, найти наименьшее из них и вывести его.
Разберитесь с этим примером и выполните его на компьютере для различных значений.
Обратите внимание на то, что во всех примерах выше мы создаем массив сразу с нужным количеством ящиков. Например,
МассивНа5Ящиков = Новый Массив(5);
Это означает, что у этого массива есть ящики под номерами 0, 1, 2, 3, 4.
Если необходимо объявить пустой массив:
ДругойМассив = Новый Массив; //мы не указали никакого
// числа в скобках
Если мы сразу после объявления пустого массива попытаемся обратиться к одному из его ящиков, то получим ошибку:
Сообщить(ДругойМассив[0]); // ОШИБКА!!! Массив пока
// не содержит ящиков!
В пустой массив ящики нужно сначала добавить, причем сразу указывая их значения:
ДругойМассив.Добавить(123); // первый ящик ДругойМассив.Добавить(456); // второй ящик ДругойМассив.Добавить(789); // третий ящик
Только теперь мы можем обращаться к этим ящикам по их номерам (помните, что в 1С массивы нумеруются с нуля):
Сообщить(ДругойМассив[0]); // выведет 123 Сообщить(ДругойМассив[1]); // выведет 456 Сообщить(ДругойМассив[2]); // выведет 789
Для того, чтобы в любой момент узнать количество ящиков в массиве, воспользуемся командой Количество. Ее нужно вызывать через точку после имени массива:
Сообщить(ДругойМассив.Количество()); // выведет 3
Задание 4. Необходимо ввести от пользователя 7 чисел, найти наибольшее из них и вывести его. Задание решается по аналогии с предыдущим.
Описание:
Предназначен для доступа к элементам массива, его методам и конструктору.
Элементы коллекции: Произвольный
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются значения элементов массива.
Возможно обращение к значению элемента посредством оператора [...]. В качестве аргумента передается индекс значения (нумерация с 0).
Методы:
| ВГраница() | Получает наибольший индекс элемента массива. |
| Вставить(Индекс, Значение) | Вставляет значение в массив по указанному индексу. |
| Добавить(Значение) | Добавляет элемент в конец массива. |
| Количество() | Получает количество элементов в массиве. |
| Найти(Значение) | Выполняет поиск элемента в массиве. Если элемент найден, возвращается его индекс. Если элемент не найден, возвращается Неопределено. |
| Очистить() | Удаляет все значения из массива. |
| Получить(Индекс) | Получает значение по индексу. Работает аналогично оператору []. |
| Удалить(Индекс) | Удаляет значение из массива по указанному индексу. |
| Установить(Индекс, Значение) | Устанавливает значение по индексу. Работает аналогично оператору []. |
Конструкторы:
| Новый Массив(ФиксированныйМассив) | На основании фиксированного массива. |
| Новый Массив(КоличествоЭлементов1, ... , КоличествоЭлементовN) | По количеству элементов. Создает массив из указанного количества элементов. Если задано несколько параметров, то будет создан массив, элементами которого являются массивы (и так далее в зависимости от количества параметров). Фактически конструктор позволяет создать массивы массивов, которые могут являться аналогом многомерного массива. |
Контрольные вопросы:
Массивы — это коллекции, в которых можно хранить…
Чтобы обратиться к элементу массива необходимо указать после имени массива номер элемента в …
Индекс первого элемента массива всегда равен…
Чтобы объявить массив на 10 элементов нужно написать…
Чтобы объявить пустой массив нужно написать…
Чтобы добавить в массив М новый элемент (число 123) нужно написать…
Чтобы перебрать все значения массива подойдет…
Чтобы изменить пятый элемент в массиве М на 25 нужно написать…
Порядок оформления отчета:
Запишите дату, номер, тему и цель практической работы в тетрадь.
Согласно порядку работы, последовательно выполните все задания.
Запишите вывод о проделанной работе.
Литература:
Дадян, Э.Г. Конфигурирование и моделирование в системе «1С:Предприятие» : учебник / Э.Г. Дадян. — М. : Вузовский учебник : ИНФРА-М, 2018. — 417 с. + Доп. материалы [Электронный ресурс; Режим доступа http:// www.znanium.com]. — (Высшее образование: Магистратура). — www. dx.doi.org/10.12737/textbook_5a0c1bcccc76f5.69529307.