Оператор цикла с постусловием Repeat
Этот оператор отличается от цикла с предусловием WHILE тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает выполнение цикла хотя бы один раз.
Форма записи
REPEAT Повторить
операторы
циклической части
программы
UNTIL <логическое выражение> До тех пор
Блок-схема цикла «До»
Тело цикла
нет Условие
да |
Операторы циклической части выполняются повторно до тех пор пока значение логического выражения ложно.
Условием прекращения циклических вычислений является истинное значение логического выражения
Служебное слово REPEAT открывает тело цикла затем выполняются последовательно операторы тела цикла и проверяется условие выхода из него.
Запомните !
1. Тело цикла выполняется хотя бы один раз в любом случае.
2. В ходе работы цикла мы должны прийти к истинности условия.
Задача 1.Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 81.
Program n;
var k:integer; {слагаемое}
s:integer; {сумма}
begin
k:=1; s:=0;
REPEAT
s:=s+k*k;
k=k+1
Until k>81;
writeln(‘сумма равна=’,s)
end.
Задача 2.Вычислите значение функции Y=X2, при х=8; 6; 4 ;2
Х=8;
REPEAT
Y:=X*X; writeln(x:3, y:5); X:=X-2
UNTIL X=0
Задача 3. С клавиатуры вводятся последовательно целые числа, и вычисляется их сумма до первого встречного отрицательного числа (не включая его самого).
Program ex3;
Var a: integer; {вводимое число}
s: integer; {сумма}
Begin
s:=0;
a:=0; {мы вынуждены выполнять этот искусственный шаг}
REPEAT
s:=s+a;
readln(a)
UNTIL a<0;
Writeln(s);
End.
Задача 4.Найти наибольший общий делитель (НОД) двух чисел. НОД - это наибольшее целое число, которое делит нацело оба числа.
Решение : Даны числа а и b, то для чисел а и b выполняется равенство НОД(а, b)=НОД(b, r), где r - остаток от деления а на b .
r= a mod b=a- (a div b)*b
Например, пусть а=48, b=18.
A | b | Результаты |
- | ||
48 mod 18 = 12 | НОД(48,18)=НОД(12,18) | |
18 mod 12 = 6 | НОД(12,18)=НОД(12,6) | |
12 mod 6 = 0 | НОД(12,6)=НОД(0,6) | |
НОД(0,6)=6 |
Program NOD;
var a,b:longint;
begin
writeln(‘введите два числа’);
readln(a,b);
REPEAT
if a>b then a:=a mod b else b:=b mod a
UNTIL (a=0) or (b=0);
writeln(‘НОД=’, a+b);
readln;
end.
Выбор конструкции цикла зависит от конкретного алгоритма. Для каждого задания необходимо продумать, какая конструкция является наиболее оптимальной.
Дата добавления: 2015-01-15; просмотров: 2058;