Учебник Turbo Pascal. Введение - Вычисление суммы

ОГЛАВЛЕНИЕ

Вычисление суммы

В следующей программе вычисляется сумма:

 

Листинг 1.4. Вычисление суммы

program summation_2;
var
    i, n: Word;
    t, add, summa: Real:
begin
    Write('Введите количество слагаемых n = ');
    ReadLn(n);
    summa := 0:
    for i := n downto 1 do
    begin
        t := 1.0/i:
        add := Sqr(t):
        summa := surma + add;
    end;
    WriteLn('Сумма l/i^2 от i = 1 до ', n);
    WriteLn('S = ', summa):
    Write('Нажмите клавишу <Enter>');
    ReadLn;
end.

В этой программе есть переменные типов Real и Word. Во втором операторе присваивания внутри цикла используется функция вычисления квадрата числа — Sqr. Кроме того, здесь мы встречаемся с разновидностью цикла for, в которой благодаря использованию ключевого слова downto вместо to значение управляющей переменной i уменьшается каждый раз на единицу. В рассматриваемом случае лучше всего проводить суммирование в обратном порядке, то есть от слагаемых с наибольшими номерами, принимающими наименьшие значения, к слагаемым с наименьшими номерами, принимающими наибольшие значения. При суммировании в прямом порядке, начиная с некоторого номера, может возникнуть ситуация, когда при каждом проходе цикла к относительно большому значению суммы будет прибавляться сравнительно малое значение очередного слагаемого. Погрешность выполнения такой операции увеличивается — это особенность машинной арифметики. При суммировании в обратном порядке слагаемые не так сильно различаются между собой по величине, и, следовательно, точность вычисления полной суммы будет выше.