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

UptoLike

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

90
Например, для н=4, ш=3 и N=5 получаем 5·3+4=19. Проверка окончания:
значение счетчика < 19. Цикл выполнится для значений счетчика: 4, 7, 10, 13, 16.
Предлагаем самостоятельно вывести формулы для отрицательного шага.
Пример 10.7. Написать программу для вычисления суммы N первых
натуральных чисел.
Решение. Для решения задачи необходимо вычислить: 1+2+3+...+N. Понятно,
что для нахождения суммы нужно каждый раз прибавлять очередное слагаемое;
таким образом, для решения задачи необходимо организовать цикл. Исходным
данным для решения является N.
Выясним, что повторяется в теле цикла. Для этого попробуем вычислять сумму
вручную. Начинаем суммировать с нуля. Тогда
s
0
= 0,
s
1
= 0+1,
s
2
= 0+1+2,
s
3
= 0+1+2+3.
Найдем, чем каждый шаг отличается от соседнего. Для этого подсчитаем
разности: s
1
- s
0
= 0+1 - 0 = 1,
s
2
- s
1
= 0+1+2 - (0+1) = 2,
s
3
- s
2
= 0+1+2+3 - (0+1+2) = 3.
Отсюда s
1
= s
0
+ 1,
s
2
= s
1
+ 2,
s
3
= s
2
+ 3.
Рассуждая аналогично, можем заключить, что в общем случае для нахождения
следующего значения суммы нужно к ее предыдущему значению прибавить
очередное слагаемое. Обозначим очередное слагаемое через i, а номер шага - через
j. Тогда s
j
=s
j-1
+i повторяется в цикле. Здесь индексы указывают, что это одна и та
же величина (сумма), но в разные моменты времени. При программировании эти
индексы указывать не нужно, т.к. оператор присваивания выполняется в два этапа.
На первом этапе выбираются значения всех указанных справа переменных,
вычисляется значение выражения, стоящего справа. Затем вычисленное
значение
пересылается в переменную, указанную слева. Формулы, в которых новое значение
вычисляется на основе одного или нескольких старых значений, называются
рекуррентными. Полученная нами формула является рекуррентной формулой
первого порядка, т.к. для вычисления нового значения достаточно одного
предыдущего значения.
Известно, что для вычисления всей суммы необходимо выполнить полученную
формулу N раз.
Следовательно, необходимо организовать арифметический цикл с
параметром-счетчиком, обеспечивающим N отсчетов. Приводим далее программу
на Паскале:
program pr1;
{ вычисление суммы натуральных чисел от 1 до N - вариант 1 }
var N:integer; { последнее число суммы - исходное данное }
s:integer; { сумма - результат }
i:integer; { очередное слагаемое }
j:integer; { счетчик цикла }
begin write('Введите последнее число суммы ');
                                       90

    Например, для н=4, ш=3 и N=5 получаем 5·3+4=19. Проверка окончания:
значение счетчика < 19. Цикл выполнится для значений счетчика: 4, 7, 10, 13, 16.
    Предлагаем самостоятельно вывести формулы для отрицательного шага.
    Пример 10.7. Написать программу для вычисления суммы N первых
натуральных чисел.
    Решение. Для решения задачи необходимо вычислить: 1+2+3+...+N. Понятно,
что для нахождения суммы нужно каждый раз прибавлять очередное слагаемое;
таким образом, для решения задачи необходимо организовать цикл. Исходным
данным для решения является N.
    Выясним, что повторяется в теле цикла. Для этого попробуем вычислять сумму
вручную. Начинаем суммировать с нуля. Тогда
                      s0 = 0,
                      s1 = 0+1,
                      s2 = 0+1+2,
                      s3 = 0+1+2+3.
    Найдем, чем каждый шаг отличается от соседнего. Для этого подсчитаем
разности:             s1 - s0 = 0+1 - 0 = 1,
                      s2 - s1 = 0+1+2 - (0+1) = 2,
                      s3 - s2 = 0+1+2+3 - (0+1+2) = 3.
    Отсюда            s1 = s0 + 1,
                      s2 = s1 + 2,
                      s3 = s2 + 3.
    Рассуждая аналогично, можем заключить, что в общем случае для нахождения
следующего значения суммы нужно к ее предыдущему значению прибавить
очередное слагаемое. Обозначим очередное слагаемое через i, а номер шага - через
j. Тогда sj=sj-1+i повторяется в цикле. Здесь индексы указывают, что это одна и та
же величина (сумма), но в разные моменты времени. При программировании эти
индексы указывать не нужно, т.к. оператор присваивания выполняется в два этапа.
На первом этапе выбираются значения всех указанных справа переменных,
вычисляется значение выражения, стоящего справа. Затем вычисленное значение
пересылается в переменную, указанную слева. Формулы, в которых новое значение
вычисляется на основе одного или нескольких старых значений, называются
рекуррентными. Полученная нами формула является рекуррентной формулой
первого порядка, т.к. для вычисления нового значения достаточно одного
предыдущего значения.
    Известно, что для вычисления всей суммы необходимо выполнить полученную
формулу N раз. Следовательно, необходимо организовать арифметический цикл с
параметром-счетчиком, обеспечивающим N отсчетов. Приводим далее программу
на Паскале:
    program pr1;
    { вычисление суммы натуральных чисел от 1 до N - вариант 1 }
    var        N:integer; { последнее число суммы - исходное данное }
               s:integer;     { сумма - результат }
               i:integer;     { очередное слагаемое }
               j:integer;     { счетчик цикла }
    begin      write('Введите последнее число суммы ');