Лекция: 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

<Выражения — тело цикла>

еще рефераты
Еще работы по информатике