
На примере простых задач «Банк» и «Евклид» нужно сравнить готовые решения этих задач с помощью трех типов циклов.
Задача «Банк». Посчитать итоговую сумму денег на банковском вкладе за N лет при P процентах годовых.
Решение
Program bank1;
CONST P=15; N=5;
VAR S:real; i: integer;
BEGIN
Writeln (‘Summa vklada: ’);
Readln (S);
For i:=1 to N do
S:=S+S*P/100;
Writeln (‘itogovaja summa’, S);
END.
Задача «Евклид» (алгоритм нахождения наибольшего общего делителя).
Условие: Если n=m, то НОД (n, m) = n = m
Если n>m, то НОД (n, m) = НОД (n-m, m)
Если n<m, то НОД (n, m) = НОД (n, m-n)
Решение:
Program evklid2;
VAR n,m : integer;
BEGIN
Readln (n, m);
While n<>m do
If n>m then n:=n-m
else m:=m-n;
Writeln (‘НОД = ’, n)
END.
Эту задачу нельзя решить с помощью цикла со счетчиком. Применение цикла с постусловием требует изначально сравнения введенных чисел, таким образом цикл вложен в условный оператор. Решение этой задачи с помощью цикла с предусловием кажется наиболее красивым.
Составить программу для вычисления S. Задачу решить тремя способами (с использованием трех типов оператора цикла).
1. Вычислить:
S:=xn/n!+xn-1/(n-1)!+...+x1/1!
Известные величины: n,x
Решение
var s:real;
x,i,n,j,Fact,Stepen:integer;
begin
write('Input n=');
readln(n);
write('Input x=');
readln(x);
S:=0;
for i:=n downto 1 do begin
Fact:=1;
Stepen:=1;
for j:=1 to i do begin
Fact:=Fact*j;
stepen:=stepen*x;
end;
S:=S+stepen/Fact;
end;
writeln(s:4:2);
readln;
end.
Найти сумму квадратов всех натуральных чисел от 1 до 100. Решим эту задачу с использованием всех трех видов циклов.
I. С использованием цикла "Пока".
Program Ex1;
Var
A : Integer;
S : Longint;
Begin
A:=1; S:=0;
While A<=100 Do
Begin
S:=S+A*A;
A:=A+1
End;
Writeln(S)
End.
Пример решения С использованием цикла "До".
Пример решения С использованием цикла "С параметром".
Дополнительное задание:
Написать таблицу "Соответствия расстояния в дюймах расстоянию в метрах". Для значений от 10 до 20; с шагом h=+1; 1 дюйм = 25,4 мм. Решить эту задачу с использованием всех трех видов циклов.