Найти в Дзене

Пока

В прошлый раз мы выяснили, что единственным способом ветвления в ПРОФТе является конструкция Если … Иначе. Но в программировании, как и в жизни, бывает что проверить какое-то условие всего один раз будет недостаточно. Копите, вы, к примеру, на новый телефон. Смотрите на счет в банке, и принимаете решение: «ЕСЛИ у меня будет сто тысяч, куплю новую модель». Но так как ста тысяч нет, то это условие приобретает форму «Буду копить ПОКА у меня не будет сто тысяч». ЕСЛИ приобретает форму возврата к предыдущему условию. Если ответ на условие (иметь сто тысяч) отрицательный, до далее следует какая-то жизненная программа (копить, украсть, взять в долг), после чего идет возврат к проверке условия. Так происходит, пока условие не выполняется. Тогда этот цикл завершается. По сути это тоже ЕСЛИ, только с возвратом к проверке условия, после выполнения некоторой программы. В ПРОФТе все записывается довольно очевидно: Пока [Условие]. [Здесь выполняется код, если условие истинно]. КонецПока. С помощью
Абстракция получена с помощью цикла Пока. Здесь 200 квадратов. Можете посчитать.
Абстракция получена с помощью цикла Пока. Здесь 200 квадратов. Можете посчитать.

В прошлый раз мы выяснили, что единственным способом ветвления в ПРОФТе является конструкция Если … Иначе. Но в программировании, как и в жизни, бывает что проверить какое-то условие всего один раз будет недостаточно. Копите, вы, к примеру, на новый телефон. Смотрите на счет в банке, и принимаете решение: «ЕСЛИ у меня будет сто тысяч, куплю новую модель». Но так как ста тысяч нет, то это условие приобретает форму «Буду копить ПОКА у меня не будет сто тысяч». ЕСЛИ приобретает форму возврата к предыдущему условию. Если ответ на условие (иметь сто тысяч) отрицательный, до далее следует какая-то жизненная программа (копить, украсть, взять в долг), после чего идет возврат к проверке условия. Так происходит, пока условие не выполняется. Тогда этот цикл завершается. По сути это тоже ЕСЛИ, только с возвратом к проверке условия, после выполнения некоторой программы.

В ПРОФТе все записывается довольно очевидно:

Пока [Условие].
[Здесь выполняется код, если условие истинно].
КонецПока.

С помощью Пока очень легко организовать цикл, поэтому отдельной конструкции для этого (типа for в Си) в ПРОФТе нет.

КонецПока следует понимать как Конец [конструкции] "Пока".

Обычно, в качестве переменной-счетчика используется буква i. В ПРОФТе традиционно используется буква н (от слова номер).

Посчитаем факториал числа 20:

Действие Начало().
н = 1. //Счетчик цикла
Факториал = 1. // Инициализация переменной
ЧислоФакториала = 20.
Пока н <= ЧислоФакториала.
Факториал = Факториал * н.
н = н + 1.
КонецПока.
Сообщить("Факториал " & ЧислоФакториала & " равен " & Факториал; 64; "Пример цикла").
КонецДействия.

Запустив эту программу мы узнаем, что произведение всех чисел от 1 до 20 равно 2432902008176640000.

Результат можно проверить в инженерном калькуляторе Windows.

Конструкция ПОКА описывает ситуацию, когда мы делаем что-то пока не достигнем успеха. Но бывает, надо начать что-то делать до наступления определенного результата. Например: «Буду сегодня работать до чёртиков в глазах». Для таких случаев в ПРОФТе если цикл с постусловием, который выглядит так:

Делать.
[Программный код, который выполняется хотя бы один раз].
До [Условие].

Если Условие истинно, цикл заканчивается, если же нет, то программа переходит на начало цикла (Делать) и выполняет код еще раз. и так до тех пор пока оно не станет истинным.

Перепишем расчет фрактала через Делать.. До:

Действие Начало().
н = 1. //Счетчик цикла
Факториал = 1. // Инициализация переменной
ЧислоФакториала = 20.
Делать.
Факториал = Факториал * н.
н = н + 1.
До н > ЧислоФакториала.
Сообщить("Факториал " & ЧислоФакториала & " равен " & Факториал; 64; "Пример цикла").
КонецДействия.

Результат будет тот же.

Кроме ЕСЛИ, ПОКА и ДЕЛАТЬ никаких других конструкций в языке программирования ПРОФТ не существует. Что сильно облегчает процесс написания кода – не надо думать как лучше что-то сделать. Скорее всего, есть только один вариант, И его надо просто записать. В общем, одно удовольствие.