- •Тема 3. Ветвящиеся алгоритмы (оператор выбора)
- •Пример 3.1п. Оператор выбора. Часть I.
- •Тема 4. Циклические алгоритмы (операторы цикла)
- •Пример 4.1.1п. Операторы цикла. Часть I.
- •Var n,f1,f2,fnew,I:integer; {раздел описания переменных,
- •Пример 4.1.2п. Операторы цикла. Часть I.
- •Var a,t,n:integer; {раздел описания переменных,
- •Часть II
- •Пример 4.2п. Операторы цикла. Часть II.
- •Пример 4
Var a,t,n:integer; {раздел описания переменных,
в котором регистрируется переменные a,t,N - типа integer}
begin {начало раздела операторов}
readln(N); {задание значения N через оператор ввода}
t:=0; {задание начального времени}
a:=1; {задание начального количества амеб}
while a<=N do {цикл для вычисления нового количества амеб и времени}
begin {начало составного оператора}
t:=t+3; {увеличение времени на 3 часа}
a:=2*a; {увеличение амеб в 2 раза}
end; {конец составного оператора}
writeln('Time = ',t); {вывод полученного времени на экран}
readln; {ожидание нажатия клавиши Enter}
end. {конец программы}
Часть II
Задание: Написать программу с использованием трех операторов цикла: арифметического, предусловием и постусловием. Программа должна выводить на экран (при одинаковых начальных параметрах) три ответа: первый - полученный с помощью арифметического оператора, второй - с помощью оператора цикла с предусловием и третий - с помощью оператора цикла с постусловием. Задание выбрать из таблицы 4.2п согласно своему варианту.
Пример 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. {конец программы}
