Пример 4.2п. Операторы цикла. Часть II
Согласно заданию нужно вычислить следующее выражение:
в зависимости от N.
Сначала определимся, какие переменные понадобятся при написании программы. Понадобиться переменная N - количество элементов произведения, которая будет целого типа, а ее значение будет задаваться с клавиатуры. Понадобится еще четыре переменные: a, b - будут отвечать за числитель и знаменатель первой дроби в круглых скобках и c, d - числитель знаменатель второй дроби. Эти переменные так же будут целого типа. Повторяющимися действиями в этой задаче будет: вычисление нового элемента произведения и добавление его в произведение. Следовательно, понадобиться еще одна переменная, обозначим ее как p, в которую будет накапливаться произведение всех элементов. Она будет вещественного типа, т.к. элементами произведения являются величины, представляющие собой сумму двух дробей. Так же понадобиться еще одна переменная, которая будет выступать в качестве счетчика арифметического цикла, обозначим ее как i. Так как в теле цикла нужно, чтобы выполнялось несколько вычислений (числителей, знаменателей и произведения элементов), то тогда для арифметического и цикла с предусловием необходимо использовать составной оператор. В программе реализуется два способа вычисления нового значения числителя и знаменателя. Первый способ - числитель и знаменатель вычисляются через номер элемента произведения, этот способ реализован в арифметическом операторе цикла и в операторе цикла с постусловием. Второй способ - числитель и знаменатель дробей вычисляются через предыдущие значения числителя и знаменателя соответственно, этот способ реализован в операторе цикла с предусловием. Таким образом, результатом будет следующая программа.
Var a,b,c,d,i,N:integer;
p:real; {раздел описания переменных}
begin {начало раздела операторов}
readln(N); {задание значения N через оператор ввода}
p:=1; {задание начального результата произведения}
for i:=1 to N do {арифметический цикл}
begin {начало составного оператора}
a:=round(exp(i*ln(2))); {вычисление значения a в зависимости от номера элемента произведения}
b:=i+2; {вычисление значения b в зависимости от номера элемента произведения}
c:=29-2*i; {вычисление значения c в зависимости от номера элемента произведения}
d:=2+2*i; {вычисление значения d в зависимости от номера элемента произведения}
p:=p*(a/b+c/d); {добавление элемента в произведение}
end; {конец составного оператора}
writeln('for = ',p); {вывод полученного результата произведения на экран}
p:=1; {задание начального результата произведения}
a:=2; b:=3; {задание начальных значений числителя и знаменателя 1 дроби}
c:=27; d:=4; {задание начальных значений числителя и знаменателя 2 дроби}
i:=1; {задание номера первого элемента добавляемого в произведение}
while i<=N do {оператор цикла с предусловием}
begin {начало составного оператора}
p:=p*(a/b+c/d); {добавление элемента в произведение}
a:=2*a; {вычисление значения a через предыдущее значение}
b:=b+1; {вычисление значения b через предыдущее значение}
c:=c-2; {вычисление значения c через предыдущее значение}
d:=d+2; {вычисление значения d через предыдущее значение}
i:=i+1; {увеличение номера элемента на 1}
end; {конец составного оператора}
writeln('while = ',p); {вывод полученного результата произведения на экран}
p:=1; {задание начального результата произведения}
i:=1; {задание номера первого элемента добавляемого в произведение}
repeat {начало оператора цикла с постусловием}
a:=round(exp(i*ln(2))); {вычисление значения a в зависимости от номера элемента произведения}
b:=i+2; {вычисление значения b в зависимости от номера элемента произведения}
c:=29-2*i; {вычисление значения c в зависимости от номера элемента произведения}
d:=2+2*i; {вычисление значения d в зависимости от номера элемента произведения}
p:=p*(a/b+c/d); {добавление элемента в произведение}
i:=i+1; {увеличение номера элемента на 1}
until i>N; {конец оператора цикла с постусловием}
writeln('repeat= ',p); {вывод полученного результата произведения на экран}
readln; {ожидание нажатия клавиши Enter}
end. {конец программы}
Пример 4
Найти сумму квадратов всех натуральных чисел от 1 до 100.
Var A : Integer; S : Longint;
Begin
A:=1; S:=0;
Repeat
S:=S+A*A;
A:=A+1
Until A>100;
Writeln(S)
End.