Практическая работа №6 "Программирование циклов в языке 1С"

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