[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: комбинирование простых конструкций в 1С

Автор уроков и преподаватель школы: Владимир Милькин

На прошлых уроках мы научились использовать имена, изучили условную команду, узнали два вида циклов.

Всё это были достаточно простые программы, в каждой из которых использовалась какая-то одна основная конструкция языка (или условная команда или цикл). В реальных программах, конечно же, так не бывает. В них обычно используется всё сразу и по нескольку раз. Сегодня мы научимся комбинировать простые конструкции языка 1С вместе.

Комбинирование простых конструкций языка 1С

К примеру, пусть у нас есть два цикла:

Для Шаг1 = 1 По 2 Цикл
    Сообщить(Шаг1);	
КонецЦикла;
 
Для Шаг2 = 1 По 3 Цикл
    Сообщить(Шаг2);
КонецЦикла;

Эти циклы хорошо нам знакомы и мы понимаем, что в результате первого цикла выведутся числа от 1 до 2, а в результате второго - от 1 до 3.

А что если мы вложим выполнение одного цикла внутрь другого? Вот так:

Для Шаг1 = 1 По 2 Цикл
 
    Для Шаг2 = 1 По 3 Цикл
 
        Сообщить("Значения равны: " + Шаг1 + " " + Шаг2);
 
    КонецЦикла;
 
КонецЦикла;

Если запустить этот пример на компьютере, то получатся следующие результаты:

Значения равны: 1 1
Значения равны: 1 2
Значения равны: 1 3
Значения равны: 2 1
Значения равны: 2 2
Значения равны: 2 3

Как видим результаты отличаются от выполнения данных циклов по отдельности. И вот почему.

У нас есть внешний цикл от 1 до 2. Это значит, что всё, что находится у него между словами Цикл и КонецЦикла выполнится 2 раза. А у него между этими словами находится другой цикл от 1 до 3, который внутри себя содержит команду Сообщить.

Итого такая вложенность приводит к тому, что команда Сообщить выполняется целых 6 раз. Шесть, потому что 2 * 3 = 6.

Теперь обратите внимание, как меняется значение Шаг1 и Шаг2. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. В начале Шаг1 равен 1, а Шаг2 меняется от 1 до 3. Затем Шаг1 уже равен 2 (следующее значение цикла) и снова Шаг2 меняется от 1 до 3.

Задание №27. По аналогии с предыдущим примером напишите тройной вложенный цикл с выводом Шаг1, Шаг2 и Шаг3 соответственно от 1 до 10, от 10 до 20 и от 20 до 30. Выполните задание на компьютере, посмотрите результат и убедитесь, что понимаете почему получаются такие результаты.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Задание №28. Найдите все пары целых (в том числе одинаковых) чисел величиной от 1 до 9 каждое, сумма которых равна 10. Сделайте это на листочке. Без помощи компьютера. Должно получится 9 вариантов.  Первые два варианта я подскажу: 1 + 9 = 10 и 9 + 1 = 10. Оставшиеся 7 вариантов найдите сами.

Выполнили? Отлично. А теперь я покажу, как можно было заставить компьютер выполнить ту же самую работу за вас.

Для Шаг1 = 1 По 9 Цикл
 
    Для Шаг2 = 1 По 9 Цикл
 
        Если Шаг1 + Шаг2 = 10 Тогда
 
            Сообщить(" " + Шаг1 + " + " + Шаг2 + " = 10");
 
        КонецЕсли;
 
    КонецЦикла;
 
КонецЦикла;

Мы перебираем одно число в цикле от 1 до 9 (Шаг1). И второе число в другом цикле от 1 до 9 (Шаг2). Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. А так как числа для складывания нам нужны одновременно - мы делаем второй цикл вложенным в первый. Осталось воспользоваться условной конструкцией, чтобы отобрать только такие числа, сумма которых равна 10.

Пройдите тест

Вопросы задаются по следующему примеру:

Для Шаг1 = 1 По 3 Цикл
    Для Шаг2 = 4 По 5 Цикл
        Сообщить(" " + Шаг1 + " " + Шаг2);
    КонецЦикла;
КонецЦикла;
Начать тест
Задание №29. Напишите программу, которая найдет все варианты двух чисел от 1 до 30, произведение которых равно 30.

Как всегда выполните программу на компьютере и убедитесь, что она выдает верные результаты.

Привожу ответ ниже, но рассчитываю, что вы справитесь самостоятельно.

Ответ