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

UptoLike

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

103
Решение 1. Установим, что повторяется в теле цикла. Здесь для нахождения
суммы можно прибавлять слагаемые вида: s := s + z*i, где s - сумма, z - знак
слагаемого, i - слагаемое. Знак числа изменяется на противоположный при каждом
выполнении тела цикла. Тело цикла здесь выполняется n раз, поэтому цикл -
арифметический. Соответствующий фрагмент приведен ниже:
{ фрагмент 7 }
write('Введите количество слагаемых ');
readln(n);
s:=0; { начальное значение суммы }
z:=-1; {
знак первого слагаемого минус }
i:=1; { первое слагаемое }
while i<=n do { пока есть слагаемые }
begin s:=s+z*i; { прибавляем слагаемое со знаком к сумме }
z:=-z; { меняем знак }
i:=i+1 { переходим к следующему слагаемому }
end;
Упражнение. Проведите трассировку фрагмента 7, затем ответьте на вопрос:
«Какую задачу решает фрагмент 8, приведенный ниже
{ фрагмент 8 }
readln(a,b);
s:=0;
z:=-1;
i:=a;
while i<=b do
begin s:=s+z*i;
z:=-z;
i:=i+1
end;
Решение 2. Можно заметить, что знак минус стоит перед нечетным слагаемым,
а знак плюс перед - четным, поэтому в теле цикла повторяются следующие
действия: если очередное слагаемое четное, то оно прибавляется к сумме, а если
нечетное, то вычитается. Эти действия оформляются в виде условного оператора.
Цикл по-прежнему арифметический. Тогда получаем фрагмент 9.
{ фрагмент
9 }
readln(n);
s:=0;
i:=1;
while i<=n do
begin
if i mod 2=0 { если очередное слагаемое четное, }
then s:=s+i { то оно прибавляется к сумме, }
else s:=s-i; { иначе оно вычитается из суммы }
i:=i+1
end;
Упражнение. Измените фрагмент 9 так, чтобы он решал ту же задачу, что и
фрагмент 8.
                                     103

   Решение 1. Установим, что повторяется в теле цикла. Здесь для нахождения
суммы можно прибавлять слагаемые вида: s := s + z*i, где s - сумма, z - знак
слагаемого, i - слагаемое. Знак числа изменяется на противоположный при каждом
выполнении тела цикла. Тело цикла здесь выполняется n раз, поэтому цикл -
арифметический. Соответствующий фрагмент приведен ниже:
   { фрагмент 7 }
   write('Введите количество слагаемых ');
   readln(n);
   s:=0; { начальное значение суммы }
   z:=-1; { знак первого слагаемого минус }
   i:=1; { первое слагаемое }
   while i<=n do { пока есть слагаемые }
   begin      s:=s+z*i; { прибавляем слагаемое со знаком к сумме }
              z:=-z; { меняем знак }
              i:=i+1 { переходим к следующему слагаемому }
   end;
   Упражнение. Проведите трассировку фрагмента 7, затем ответьте на вопрос:
«Какую задачу решает фрагмент 8, приведенный ниже?»
   { фрагмент 8 }
   readln(a,b);
   s:=0;
   z:=-1;
   i:=a;
   while i<=b do
   begin      s:=s+z*i;
              z:=-z;
              i:=i+1
   end;
   Решение 2. Можно заметить, что знак минус стоит перед нечетным слагаемым,
а знак плюс перед - четным, поэтому в теле цикла повторяются следующие
действия: если очередное слагаемое четное, то оно прибавляется к сумме, а если
нечетное, то вычитается. Эти действия оформляются в виде условного оператора.
Цикл по-прежнему арифметический. Тогда получаем фрагмент 9.
   { фрагмент 9 }
   readln(n);
   s:=0;
   i:=1;
   while i<=n do
   begin
      if i mod 2=0 { если очередное слагаемое четное, }
      then s:=s+i { то оно прибавляется к сумме, }
      else s:=s-i; { иначе оно вычитается из суммы }
      i:=i+1
   end;
   Упражнение. Измените фрагмент 9 так, чтобы он решал ту же задачу, что и
фрагмент 8.