Внутренний язык программирования 1С 8.3 для начинающих программистов: массивы в 1С
Автор уроков и преподаватель школы: Владимир Милькин
Сегодня мы познакомимся с новым типом данных языка 1С, который называется Массив.
Массивы в языке 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 Сообщить(РазличныеЗначения[Шаг]); //обращаемся к ящику массива по номеру КонецЦикла; |
Задание №30. Необходимо ввести от пользователя 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 чисел?
Задание №31. Переделайте приведенный выше пример, чтобы вводилось 10 чисел и находилось произведение.