1) Рассмотрение блок-схем циклических конструкций.
2) Изучение циклов в программировании.
3) Разбор примеров задач.
Цикл for
Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).
Цикл for существует в двух формах:
-for счетчик:=значение to конечное_значение do
тело_цикла;
-for счетчик:=значение downto конечное_значение do
тело_цикла;
Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.
var
i, n: integer;
begin
write (‘Количество знаков: ‘);
readln (n);
for i := 1 to n do
write (‘(*) ‘);
readln
end.
Задача.
Напишите программу для нахождения суммы вводимых целых чисел.
Код:
var s: real;
begin
write(‘Введите число слагаемых: ‘);
var n := ReadInteger;
s := 0;
for var i:=1 to n do
begin
write(‘Введите слагаемое: ‘);
var x := ReadReal;
s:=s+x;
end;
writeln(‘Сумма слагаемых равна ‘,s);
end.
Цикл while
Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false – то нет.
Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.
var
i, n: integer;
begin
write (‘Количество знаков: ‘);
readln (n);
i := 1;
while i <= n do begin
write (‘(*) ‘);
i := i + 1
end;
Задача.
Напишите программу для проверки условия «Есть ли среди введенных чисел число к?»
Код:
var n,k: integer;
begin
write(‘Введите целые числа n (n>0) и k: ‘);
readln(n,k);
assert(n>0);
var Exists := false;
var i := 1;
while (i <= n) and not Exists do
begin
write('Введите ', i, ' целое число: ');
var x := ReadInteger;
i += 1;
if x = k then
Exists := true;
end;
if Exists then
writeln('Число ', k, ' было введено')
else writeln('Число ', k, ' не было введено');
end.
Цикл repeat
Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.
В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.
var
i, n: integer;
begin
write (‘Количество знаков: ‘);
readln (n);
i := 1;
repeat
write (‘(*) ‘);
i := i + 1
until i > n;
readln
end.
end;
Задача.
Напишите программу для проверки условия «Является ли введенное число простым?»
Примечание. Напомним, что простым называется число, которое не имеет делителей кроме 1 и самого себя.
Цикл не может продолжаться бесконечно, так как любое число всегда делится само на себя.
Код:
Var
i, {возможный делитель}
Number : integer; {исследуемое число}
Begin
ClrScr;
writeln (‘Какое число должно быть проверено? ‘);
read (Number);
i := 1;
repeat
i := i+1;
until Number mod i = 0;
if Number=i
then
writeln (Number,’ является простым’)
else
writeln (Number,’ делится на ‘,i);
readln;
End.
http://pas1.ru/cycles
Denis Halanskii