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 и UNTIL, составляют тело цикла. Так как слова RPEAT и UNTIL являются своеобразными операторными скобками, то точку с запятой перед словом UNTIL ставить не нужно. Тело цикла может быть пустым или содержать один или более операторов.
Условие, записанное после ключевого слова UNTIL, проверяется в конце каждой итерации (после выполнения тела цикла). Условие - это логическое значение, переменная или выражение с логическим результатом. Но важно обратить внимание, что оно работает здесь не совсем так, как в цикле WHILE. Если в цикле WHILE подразумевается алгоритм "пока условие истинно, выполнять операторы тела цикла", то цикл REPEAT соответствует алгоритму "выполнять тело цикла, пока не станет истинным условие". Иными словами, если условие является истинным (True), то выполнение цикла завершается. Если условие не выполняется (является ложным - False), то вновь выполняется тело цикла.
Иллюстрацией к вышесказанному может быть конструкция вечного цикла:
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 достаточно часто используется с целью многократного повторения выполнения программы с различными данными.
_
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.