Оператор цикла FOR |
Оператор начинается ключевым словом for, за которым в круглых скобках располагаются оператор инициализации, условие продолжения цикла и оператор итерации, разделенные точкой с запятой.
<оператор-for> = for ( [<оператор-инициализации>] ; [<условие>] ; [<оператор-итерации>] ) <тело-цикла>;
Оператор инициализации, условие, оператор итерации могут отсутствовать. Если отсутствуют оба оператора и условие, то цикл будет вечным:
<вечный-цикл> = for(; ;) <тело-цикла>;
<оператор-инициализации> - служит для присваивания начального значения переменной, элементу массива и так далее, объявленным до цикла.
Цикл может иметь не больше одного оператора инициализации. Оператор инициализации может отсутствовать, вместо него ставится точка с запятой. В этом случае все данные, использованные в цикле, необходимо проинициализировать до цикла.
<оператор-инициализации> = <оператор-присваивания>
<условие> - условие продолжения цикла.
Условие продолжения цикла может отсутствовать, вместо него ставится точка с запятой. Если условие отсутствует, то для выхода из цикла используется оператор break. Для выхода из цикла с одновременным выходом из процедуры или обработчика событий, в которые введен цикл, предназначен оператор exit.
<условие> = <логическое-выражение>
<оператор-итерации> - задает значение для следующей итерации цикла. В левой части оператора присваивания может стоять переменная, элемент массива и так далее, объявленные до цикла.
Цикл может иметь не больше одного оператора итерации. Оператор итерации может отсутствовать, вместо него ставится точка с запятой. В этом случае данные, использованные в цикле, войдут в новую итерацию с теми значениями, с которыми они вышли из предыдущей итерации.
<оператор-итерации> = <оператор-присваивания>
<тело-цикла> - оператор программы.
<тело-цикла> = <оператор-программы>
Алгоритм выполнения цикла следующий:
выполняется оператор инициализации;
проверяется условие продолжения цикла. Если условие приняло значение false или условие не может быть вычислено, цикл завершается;
выполняется тело цикла;
выполняется оператор итерации;
происходит переход на проверку условия продолжения цикла.
Если условие не может быть вычислено или условие приняло значение false к началу цикла, то цикл не будет иметь ни одной итерации.
Для выхода из цикла до момента его нормального завершения используется оператор break.
Для выхода из цикла с одновременным выходом из процедуры или обработчика событий, в которые введен цикл, предназначен оператор exit.
Для выхода из очередной итерации цикла до момента ее нормального завершения и перехода к следующей итерации используется оператор continue.
Пример 1.
var aResult : integer; var aTotalMoney : double; aTotalMoney := 0; for (aResult := modifier getFirst SalaryTable; aResult = tsOk; aResult := modifier getNext SalaryTable) aTotalMoney := aTotalMoney + SalaryTable.Salary;
Пример 2.
/* добавить в таблицу 100 записей, пронумерованных от 1 до 100 */ for (i := 1; i<=100; i := i+1) modifier insert MyTable set code = i;