Конструкции цикла в языке PASCAL, страница 3

WHILE <условие> DO

BEGIN

<операторы>

END;

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

Рассмотрим пример.

Составить программу для вычисления и вывода на печать таблицы значений функции y=a*x*x, x=5,6,...,N

program Function1;

uses Crt;

var

y,a:real;

x,N:integer;

begin                                                          - начало тела главной программы

clrscr; writeln;

writeln('<<<Введите  N и а  >>>');

writeln;

readln(N,a);

x:=5;

while x<N do

begin

y:=a*sqr(x);

Writeln(x,y); x:=x+1

end;

end.

5.  Цикл с постусловием REPEAT

Рассмотренный выше цикл с предусловием устроен так,что про­верка условия производится до первой итерации (до первого выпол­нения тела цикла). Иногда это не соответствует логике алгоритма. Например,в тех случаях, когда проверка условия актуальна лишь после завершения предыдущего шага. Тогда нам идеально подходит цикл с постусловием REPEAT.

Оператор цикла REPEAT организует выполнение цикла, состоя­щего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности (!) некоторого логического выражения.

Общий вид цикла с постусловием:

REPEAT

<оператор1>;

<оператор2>;

...

<операторN>;

UNTIL <условие>;

Операторы, записанные между ключевыми словами REPEAT и UN­TIL, составляют тело цикла. Так как слова RPEAT и UNTIL являются своеобразными операторными скобками, то точку с запятой перед словом UNTIL ставить не нужно. Тело цикла может быть пустым или содержать один или более операторов.

Условие, записанное после ключевого слова UNTIL, проверя­ется в конце каждой итерации (после выполнения тела цикла). Ус­ловие - это логическое значение, переменная или выражение с ло­гическим результатом. Но важно обратить внимание, что оно рабо­тает здесь не совсем так, как в цикле WHILE. Если в цикле WHILE подразумевается алгоритм "пока условие истинно, выполнять опера­торы тела цикла", то цикл REPEAT соответствует алгоритму "выпол­нять тело цикла, пока не станет истинным условие". Иными слова­ми, если условие является истинным (True), то выполнение цикла завершается. Если условие не выполняется (является ложным - Fal­se), то вновь выполняется тело цикла.

Иллюстрацией к вышесказанному может быть конструкция веч­ного цикла:

REPEAT UNTIL False;

Этот цикл пустой и никогда не прекращающийся. Он хорош только тогда, когда нужно заблокировать программу. Но вообще на совести программиста лежит выбор корректного условия, т.е. такого, кото­рое на каком-то шаге итерации станет False.

Рассмотрим пример программы с использованием цикла REPEAT. program Function1;

uses Crt;

var

y,a:real;

x,N:integer;

begin                                                          - начало тела главной программы

clrscr; writeln;

writeln('<<<Введите  N и а  >>>');

writeln;

readln(N,a);

x:=5;

repeat

y:=a*sqr(x);

Writeln(x,y); x:=x+1

until x>N;

end.

Пр 2.

program MAX_repeat;

uses Crt;                                                     подключение библиотеки

var  A,B:integer;

begin                                                          - начало тела главной программы

clrscr; gotoXY(10,5);  TextColor(Green);

writeln('<<< НАХОЖДЕНИЕ МАКСИМАЛЬНОГО ИЗ ДВУХ ЦЕЛЫХ ЧИСЕЛ >>>');

writeln;

writeln('  программа закончит работу, если оба числа равны 0');

writeln;

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

write('Первое число = ?   ');  readln(A);

write('Второе число = ?   ');  readln(B);

if A=B then writeln('Числа равны')

else

begin

write('Максимальное из двух чисел ');

if A>B then writeln(A)

else writeln(B)

end

until (A=0) and (B=0);    конец цикла

end.

Данная программа будет выполняться до тех пор, пока оба введенных числа не станут равны 0. Вообще цикл REPEAT достаточ­но часто используется с целью многократного повторения выполне­ния программы с различными данными.

_