Дополнительные операторы для циклов

Да

Повторять до тех пор, пока не будет выполнено условие }.

Оператор цикла REPEAT с постусловием

Алгоритм оператора REPEAT:

 

– начало цикла

– тело цикла

 

 

Нет

– условие завершения цикла

 

Начало цикла оператора определяется ключевым словом REPEAT, которое открывает составной или простой оператор тела цикла, и выполняется пока условие B ( X ) не выполняется (False). Окончание выполнения оператора происходит в момент, когда условие B ( X ) становится истинным ( True).

Таким образом, анализ конца цикла оператора производится после выполнения тела цикла. Он используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла. Операторы тела цикла должны выполняться хотя бы один раз.

Форма оператора цикла REPEAT:

REPEAT S(простой или составной операторы)UNTIL B(X)(условие завершения цикла);

где B(X) – логическое выражение;

В S должно быть предусмотрено изменение операндов выражения B(X).

REPEAT и UNTIL B(X) определяют начало и условие завершения цикла. Тело цикла выполняется хотя бы один раз. После каждого выполнения тела цикла анализируется значение результата выражения B(X): если оно ложно (FALSE), выполнение тела цикла повторяется, если истинно (TRUE) – цикл завершается.

В цикле REPEAT …UNTIL… операторные скобки тела оператора Begin ... End могут быть опущены.

Оператор REPEATочень удобен для организации многократной работы программы без повторных ее загрузок. Для этого:

1. Объявить переменную типа Char (например CH );

2. За ключевым словом Begin в начале программы вставить строку с оператором REPEAT;

3. В конце программы перед ключевым словом End вставить три следующие строки:

Writeln ( ‘Продолжить работу - Y, иначе нажать любую клавишу ‘ ) ;

Read ( CH ) ;

UNTIL UPCASE ( CH ) < > ‘ Y ‘ ;

 

Язык Паскаль имеет две стандартные процедуры: BREAK, CONTINUE. Они могут использоваться в циклах всех видов: FOR, WHILE, REPEAT. Вызовы этих процедур могут быть только в пределах тела цикла. Обе процедуры без параметров.

Процедура BREAK прекращает выполнение данного цикла. Управление передается оператору, следующему сразу за данным циклом.

 

 

 


Нет

 

 

Да

BREAK

Процедура CONTINUE (продолжение) обеспечивает досрочное прекращение очередного прохода цикла и переход за последний оператор цикла, т.е. к анализу конца цикла и выполнению следующей итерации.

 

 

 


Нет

 

Да

 

CONTINUE

 

 

Пример программы с использованием процедур BREAK и CONTINUE.

В первой части примера производится суммирование и вывод всех элементов массива А, кроме отрицательных и нулевых элементов массива.

Во второй части примера необходимо суммировать положительные элементы массива А до первого попавшегося отрицательного.

 

CONST A : ARRAY [ 1 .. 5 ] OF INTEGER = ( 1, 2, -3, -4, -5 ) ;

VAR S, I : INTEGER ;

BEGIN

{Суммирование и вывод положительных и не нулевых элементов массива }

S := 0 ;

FOR I :=1 TO 5 DO

BEGIN

IF A [ I ] <= 0 THEN CONTINUE ;

WRITELN ( ‘ A [ ‘, I, ‘ ] = ‘, A [ I ]) ;

S := S + A [ I ] ;

END ;

WRITELN ( ‘ S = ‘, S ) ;

{ Суммирование и вывод положительных элементов массива до первого

попавшегося отрицательного }

S := 0 ;

FOR I :=1 TO 5 DO

BEGIN

IF A [ I ] < 0 THEN BREAK ;

S := S + A [ I ] ;

END ;

WRITELN ( ‘ S = ‘, S ) ;

END .