Руководство по настройке Optima:Циклическая обработка данных
33.8. Циклическая обработка данных
Макроязык, встроенный в программу, позволяет задавать циклическое выполнение одних и тех же действий. Это бывает полезно, например, при подсчёте периметра в проеме, состоящем из множества балок.
В зависимости от необходимости можно использовать один из трех циклов, описанных ниже. Для избежания зацикливания циклы ограничены 100 000 000 повторов, после чего они будут принудительно завершены.
Цикл FOR
Этот цикл выполняется определенное количество раз, начиная с указанного значения. На каждом повторе это значение увеличивается на единицу и сравнивается с конечным. Если текущее значение становится больше крайнего, то цикл завершается.
Синтаксис
For <параметр>:=<начальное значение> To <конечное значение> Do
[Begin] <команды> [End]
где:
- параметр — переменная, которая будет отвечать за количество повторений цикла. С каждым повтором она автоматически получает значение на единицу больше;
- начальное значение — начальное значение параметра, с которого будет стартовать цикл;
- конечное значение — значение, задающее порог выхода из цикла;
- команды — команда(-ы), выполняемые в теле цикла.
Пример
Total := 0;
For i := 1 To 10 Do Total := Total + i;
Возвратит Total, равное 55.
Цикл Repeat Until
Этот цикл выполняется до тех пор, пока не выполнится условие выполнения.
Синтаксис
Repeat [Begin] <команды> [End] Until <условие выполнения>,
где:
- команды — команда(-ы), выполняемые в теле цикла;
- условие выполнения — условие, до выполнения которого будет повторяться цикл.
Пример
Stroka := 'Hello world!!!';
i := Length(Stroka);
Repeat
Begin
Stroka := Copy (Stroka, 1, Length (Stroka) - 1);
i := i - 1;
End;
Until i = 5;
После выхода из цикла переменная Stroka примет значение ‘Hello’.
Цикл While Do
Цикл выполняется до тех пор, пока выполняется условие.
Синтаксис
While <условие выполнения> Do [Begin] <команды> [End],
где:
- условие выполнения — условие, при выполнении которого будет повторяться цикл;
- команды — команда(-ы), выполняемые в теле цикла.
Пример
Stroka := 'Hello world!!!';
i := Length(Stroka);
While i > 5 Do
Begin
Stroka := Copy(Stroka, 1, Length (Stroka) - 1);
i := i - 1;
End;
После выхода из цикла переменная Stroka примет значение 'Hello'.