Лекция: END_WHILE
Правильно построенный цикл WHILE или REPEAT обязательно должен изменять переменные, составляющие условие окончания в теле цикла, постепенно приближаясь к условию завершения. Если этого не сделать, цикл не закончится никогда.
Старайтесь не использовать точное равенство и неравенство для прекращения цикла. Иначе есть вероятность ошибочно проскочить граничное условие. Лучше использовать условия больше и меньше. В следующем примере ошибка хорошо видна исключительно из-за его простоты.
ci := 1;
WHILE ci <> 100 DO
Var1 := Var1 + 1;
ci := ci + 10;
END_WHILE
Очевидно, счетчик ci при начальном значении 1 и приращении 10 никогда не станет равным 100.
Для реализации минимального времени выполнения цикла необходимо избегать в теле цикла и в условном выражении вычислений, которые можно было сделать заранее. Такие вычисления повторяются в цикле, всякий раз отнимая время. Например:
WHILE ci < 5 + х DO
Var := Var1 + 2*x*x + 1;
ci := ci + 1;
END_WHILE
Данный цикл можно оптимизировать по скорости:
iMax := 5+х;
iPoly := 2*х*х + 1;
WHILE ci < iMax DO
Var := Varl + iPoly;
ci := ci + 1;
END_WHILE
Цикл FOR
Цикл FOR обеспечивает заданное количество повторений группы выражений. Синтаксис:
FOR <Целый счетчик> := <Начальное значение>
ТО <Конечное значение>
[BY <Шаг>] DO
<Выражения — тело цикла>