Конспект лекций по программированию для начинающих. Гладков В.П. - 91 стр.

UptoLike

Составители: 

93
1) Какую задачу решает данный фрагмент?
2) В каких случаях выполнится условный оператор, записанный после цикла?
s:=0;
i:=1;
j:=n;
while i<=j do
begin s:=s+i+j;
i:=i+1;
j:=j-1
end;
if n mod 2 =1
then s:=s-n mod 2+1;
4. Проведите трассировку приведенного ниже фрагмента прграммы и ответьте
на вопрос: «Какую задачу он решает?». Можно ли здесь переменную j выразить
через переменную i и убрать переменную j из программы?
s:=0;
i:=56;
j:=1;
while i<=56+2*(n-1) do
begin s:=s+j;
j:=j+1;
i:=i+2
end;
5. Напишите фрагменты программ, вычисляющих суммы:
а) s = 1/2+1/3+1/4+...+1/n,
б
) s = 1
2
+2
2
+3
2
+...+n
2
,
в) s = 1/2+2/3+3/4+...+n/(n+1).
10.3.2. Итерационные циклы
Пример 10.8. Написать программу для нахождения наибольшего общего
делителя двух натуральных чисел.
Решение. Используя идею Евклида, будем вычитать из большего числа
меньшее до тех пор, пока числа не сравняются. Получаем цикл, для которого
неизвестно заранее количество раз выполнения, но причина окончания у него одна
- числа сравнялись. Цикл этот завершится всегда, потому что уменьшаются
натуральные числа, разность между двумя соседними натуральными числами и
наименьшее
натуральное число - единица. Такой цикл называется итерационным.
Ниже приводится программа, реализующая решение задачи на Паскале:
program pr3;
{ вычисление НОД двух натуральных чисел }
var a,b:integer; { исходные натуральные числа }
x,y:integer; { переменные, используемые для поиска НОД }
begin write('Введите два натуральных числа ');
readln(a,b);
x:=a; y:=b; { A }
                                     93

   1) Какую задачу решает данный фрагмент?
   2) В каких случаях выполнится условный оператор, записанный после цикла?
   s:=0;
   i:=1;
   j:=n;
   while i<=j do
   begin       s:=s+i+j;
               i:=i+1;
               j:=j-1
   end;
   if n mod 2 =1
   then s:=s-n mod 2+1;
   4. Проведите трассировку приведенного ниже фрагмента прграммы и ответьте
на вопрос: «Какую задачу он решает?». Можно ли здесь переменную j выразить
через переменную i и убрать переменную j из программы?
   s:=0;
   i:=56;
   j:=1;
   while i<=56+2*(n-1) do
   begin       s:=s+j;
               j:=j+1;
               i:=i+2
   end;
   5. Напишите фрагменты программ, вычисляющих суммы:
       а) s = 1/2+1/3+1/4+...+1/n,
       б) s = 12+22+32+...+n2,
       в) s = 1/2+2/3+3/4+...+n/(n+1).

                        10.3.2. Итерационные циклы
   Пример 10.8. Написать программу для нахождения наибольшего общего
делителя двух натуральных чисел.
   Решение. Используя идею Евклида, будем вычитать из большего числа
меньшее до тех пор, пока числа не сравняются. Получаем цикл, для которого
неизвестно заранее количество раз выполнения, но причина окончания у него одна
- числа сравнялись. Цикл этот завершится всегда, потому что уменьшаются
натуральные числа, разность между двумя соседними натуральными числами и
наименьшее натуральное число - единица. Такой цикл называется итерационным.
Ниже приводится программа, реализующая решение задачи на Паскале:
   program pr3;
   { вычисление НОД двух натуральных чисел }
   var      a,b:integer; { исходные натуральные числа }
            x,y:integer; { переменные, используемые для поиска НОД }
   begin    write('Введите два натуральных числа ');
            readln(a,b);
            x:=a; y:=b;         {A}