Вопрос 9. Операторы цикла (for, while, repeat … until).
Три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ:
Счетный оператор цикла for имеет такую структуру:
for <параметр_цикла> := <нач_знач> to <кон_знач>
do <оператор>;
Здесь for, to, do – зарезервированные слова (для, до, выполнить); <параметр_цикла> - переменная типа Integer (точнее, любого порядкового типа_);<нач_знач> - начальное значение (выражение того же типа_);<кон_знач> - конечное значение (выражение того же типа); <оператор> - произвольный оператор.
При выполнении оператора for вначале вычисляется выражение <нач_знач> и осуществляется присваивание <параметр_цикла>:= <нач_знач>. После этого циклически повторяется следующая последовательность действий.
- Проверка условия <параметр_цикла> <кон_знач>; если условие не выполнено, оператор for завершает свою работу.
- Выполнение оператора <оператор>.
- Наращивание переменной <параметр_цикла> на единицу.
Оператор цикла while с предварительной проверкой условия:
while <условие> do <оператор>;
Здесь while, do – зарезервированные слова (пока [выполняется условие], делать); <условие> - выражение логического типа; <оператор> - произвольный оператор.
Если выражение <условие> имеет значение True, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение False, оператор while прекращает свою работу.
Для вещественных чисел можно использовать операцию деления без отбрасывания дробной части (знак /). После применения этой операции результат всегда имеет вещественный тип, поэтому такой фрагмент программы ошибочен.
Оператор цикла repeat..until с последующей проверкой условия:
repeat <тело_цикла> until <условие>;
Здесь repeat и until – зарезервированные слова (повторять [до тех пор], пока [не будет выполнено условие]); <тело_цикла> - произвольная последовательность операторов; <условие> - выражение логического типа.
Операторы <тело_цикла> выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть False, операторы <тело_цикла> повторяются, в противном случае оператор repeat..until завершает свою работу.
Пара слов repeat..until подобна операторным скобкам begin и end, поэтому перед until ставить точку с запятой не обязательно.
Для правильного выхода из цикла условие выхода должно меняться внутри оператора, составляющих тело цикла while или repeat..until.