Цикл с постусловием repeat - until
Мы знаем как создать цикл for - to - do, в котором нужно задать число повторений цикла. Существуют ситуации, когда число повторений заранее неизвестно. В этом случае цикл должен повторяться до тех пор, пока не возникнет ситуация остановки цикла. В Turbo Pascal есть возможность создавать циклы с остановкой по условию.
Repeat
тело цикла;
Until логическое условие;
Такой цикл будет исполняться до тех пор, пока логическое условие не примет значение - истина.
Рассмотрим создание цикла на примере небольшой программы. Предположим, что нужно просуммировать ряд чисел с неизвестным количеством членов ряда. При создании такой программы, было бы логично производить ввод чисел и суммирование в цикле, а прервать цикл, когда вводимое число будет равно нулю.
uses crt;
var
x, z: real; {х - вводимое число, z - сумма чисел}
begin
clrscr;
z:= 0;
repeat {начинаем цикл}
write('Wwedite X: '); readln(x); {вводим данные с клавиатуры}
z:= z + x; {суммируем полученные данные}
until x = 0; {если х = 0 (условие выполнено), то прервать цикл}
writeln('Summa = ', z:0:2);
readln;
end.
Результат работы программы:
Цикл с предусловием While.
Иногда бывают случаи, когда цикл нужно прервать до того, как в теле цикла будут произведены какие либо действия. Для таких случаев в Паскале предусмотрен цикл While, который проверяет логическое условие прерывания цикла до выполнения действий в цикле. Оформляется цикл While так:
While условие do действие; - в случае одного действия, или
While условие do
Begin
Действие 1;
Действие 2;
---
Действие n;
End; - в случае нескольких действий.
На первых занятиях мы использовали для продолжения работы программы "калькулятор" оператор goto, что в структурном программировании не приветствуется. Попробуем завершать или продолжать программу не используя переходы, применив при этом оператор цикла while. При вводе символа n - программа начнётся с начала, при вводе любого другого символа программа завершиться:
uses crt;
var
c, cz: char;
x,y,z: real;
begin
clrscr;
while (cz <> 'n') do
begin
write('Wwedi X: '); readln(x);
write('Wwedi znak: '); readln(c);
write('Wwedi Y: '); readln(y);
case c of
'+' : z:= x + y;
'-' : z:= x - y;
'*' : z:= x * y;
'/' : z:= x / y;
end; {case}
writeln('Rezultat= ',z:0:4);
write('konec - n / powtor -any key');
readln(cz);
end; {while}
end.
Результат работы программы:
|