Операторы цикла итерационного типа ( с неизвестным заранее числом повторений)
Операторы цикла итерационного типа используются обычно в том случае, если число повторений цикла заранее неизвестно или шаг изменения параметра цикла отличен от +1 или –1.
Оператор цикла с предусловием:
WHILEлогическое выражение DO
условие выполнения цикла
{ тело цикла } оператор;
Логическое выражение определяет условие ВЫПОЛНЕНИЯ цикла, если условие истинно, цикл выполняется.
Телом цикла является простой или составной оператор.
Логическое выражение вычисляется перед каждым выполнением тела цикла. Если логическое выражение принимает значение TRUE, то тело цикла выполняется, если значение FALSE, происходит выход из цикла. Тело цикла может не выполниться ни разу, если логическое выражение ложно перед первым выполнением цикла.
Любой алгоритм, реализуемый с помощью оператора FOR, может быть записан с использованием конструкции WHILE.Например, вычисление значения факториала F=N!:
…
F:=1;
WHILE I<=N DO
F:=F*I;
I:=I+1;
…
Оператор цикла с постусловием:
Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно.
оператор 1;
оператор 2;
…
оператор n;
UNTILлогическое выражение;
условие прекращения цикла
Логическое выражение – это условие выхода из цикла, условие прекращения цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE, то выполнение цикла прекращается. При использовании оператора REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла оператор данного вида не требует операторных скобок BEGIN - END, так как их роль выполняют REPEAT - UNTIL.
Вычисление F=N! с использованием конструкции REPEAT – UNTILбудет выглядеть следующим образом:
F:=1;
F:=F*I;
I:=I+1;
Until I>N;
Рассмотрим другой пример использования этого оператора. Вводится последовательность чисел. Определить количество элементов, кратных 7.
A,K: integer;
C : char;
Writeln(' Введите очередное число ');
If A mod 7=0
then K:=K+1;
Writeln('Хотите выйти из цикла? д/y' );
Until ( C='д') or ( C='y') ;
Writeln('kol = ' , K);
Здесь условием выхода из цикла является ввод символов Дили Y при ответе на вопрос о выходе из цикла. Если вводится одна из этих букв, логическое выражение, записанное после UNTIL, становится TRUE и происходит выход из цикла.
В языке Турбо Паскаль 7.0 имеются процедуры BREAKи CONTINUE . Эти процедуры могут использоваться только внутри циклов FOR, WHILEили REPEAT. Процедура BREAK прерывает выполнение цикла и вызывает переход к оператору, следующему за циклом. Процедура CONTINUE осуществляет переход к следующему повторению цикла с пропуском последующих операторов тела цикла.
Например, необходимо определить номер первого элемента одномерного массива, оканчивающегося на 3.