Вычисление конечной суммы сводится к нахождению суммы некоторого количества слагаемых S = = f (1) + f (2) + …+ f (n), где i – номер слагаемого, f (i) – слагаемое с номером i. Вычисление суммы ряда организуется в виде циклического процесса, когда при каждом прохождении цикла номер слагаемого увеличивается на единицу, а сумма – на величину i-го слагаемого, равного f (i). Т. о., s = s + f (i), где s и s – суммы первых i и i−1 слагаемых соответственно. Процесс повторяется до тех пор, пока не будут просуммированы все n слагаемых. 1. Какая величина будет параметром цикла при вычислении конечной суммы? 2. Чему равны начальное и конечное значения параметра цикла? 3. Сколько раз необходимо повторить цикл? ПРИМЕР Составить программу вычисления суммы cos (2 i 1) x S 2 i 1 i 1 50 ФОРМУЛА СУММИРОВАНИЯ Формула суммирования должна быть записана в программе следующим образом: S := S + f (i). Это означает, что к предыдущему значению суммы добавляется i-е слагаемое и вычисленное значение присваивается той же переменной S (старое значение S при этом стирается). Если начальное значение S приравнять нулю, то после первого выполнения цикла значение S будет равно значению первого слагаемого: S = 0 + f (1). ПРОГРАММА РЕШЕНИЯ ЗАДАЧИ PROGRAM Summa; CONST n : integer = 50; VAR x, S : real; i : integer; BEGIN readln (x); S := 0.; FOR i := 1 TO n DO S := S + (cos ((2 * i + 1) * x)) / (2 * i + 1); writeln (‘S = ‘, S); END. ВОПРОС Что нерационально в этой программе? ОТВЕТ ОТВЕТ Дважды вычисляется величина 2 * i + 1, и поэтому программа тратит лишнее время. Для исправления этой ошибки следует ввести дополнительную переменную, например, k, и присвоить этой переменной значение 2i + 1. КАК ИСПРАВИТЬ ПРОГРАММУ? ИСПРАВЛЕННАЯ ПРОГРАММА PROGRAM Summa; CONST n : integer = 50; VAR x, S : real; i, k : integer; BEGIN readln (x); S := 0.; FOR i := 1 TO n DO BEGIN k := 2 * i + 1; S := S + cos (k * x) / k; END; writeln (‘S = ‘, S); END. ПРИМЕЧАНИЯ 1. Оператор присвоения начального значения суммы S := 0. расположен до начала цикла, т. к. это присваивание необходимо сделать только один раз, до начала вычисления суммы. 2. Поскольку результат вычислений – одно число (окончательное значение суммы, вычисленное в цикле), то оператор вывода стоит после цикла и выполняется один раз. ПРАКТИЧЕСКАЯ РАБОТА Составить программу вычисления суммы a S 2 (k 1) k 0 x 20 КОНТРОЛЬНЫЕ ВОПРОСЫ 1) По какой формуле вычисляется конечная сумма? 2) Чему равно начальное значение суммы? 3) Что прибавляется к сумме при очередном прохождении цикла? 4) Попробуйте догадаться, каким образом следует вычислять конечное произведение вида n P= f (i) i 1 = f (1) · f (2) · … · f (n) ? ДОМАШНЕЕ ЗАДАНИЕ Составить программу вычисления произведения n cos (2 i 1) x P = . i 1 sin ( 2 i 1) x Числa n и x вводится с клавиатуры.