Учебник Turbo Pascal. Введение - Вычисление суммы натуральных чисел

ОГЛАВЛЕНИЕ

Вычисление суммы натуральных чисел

Второй пример сложнее. Мы вычислим сумму натуральных чисел от 1 до 20. Читатель, знакомый с математикой, знает, что сумму первых п натуральных чисел можно найти по формуле Sn = n(n + 1)/2. Используя эту формулу, мы сможем проверить, правильно ли работает программа и не допущены ли во время ее набора ошибки. При разработке программ их отладка, а также проверка правильности работы являются обязательной составной частью работы программиста. Ведь даже если все операторы программы написаны правильно с точки зрения формальных правил языка, ошибка может быть допущена в самом алгоритме или в его записи на языке программирования. Программу можно считать готовым продуктом, только если программист убедился сам и убедил заказчика в том, что программа работает правильно, дает правильный результат. Для тестирования программы используются такие наборы значений входных параметров или такие предельные случаи ее работы, для которых известен точный результат. Результат работы программы в этом случае сравнивается с точными значениями.

Листинг 1.2. Вычисление суммы натуральных чисел

program summation;
var
    i, summa: Word;
begin
    {переменной summa присвоим начальное значение}
    summa : = 0;
    for i := 1 to 20 do
        summa := summa + i;
    WriteLn('l + 2 + ... + 20 = ', summa):
    Write('Нажмите клавишу <Enter>'):
    ReadLn;
end.

В этой программе по сравнению с первым примером появились новые элементы. Это описание двух переменных, используемых в программе:

var
i. summa: Word;

Исполняемая часть программы, начинающаяся строкой begin и завершающаяся строкой end, уже не пустая, она содержит исполняемые операторы. Первая строка в разделе операторов — комментарий, заключенный в фигурные скобки (напомню, что в качестве ограничителей комментария допустимы и пары символов, состоящие из круглой скобки и звездочки). Оператор summa := 0; инициализирует переменную summa, используемую для хранения частичной суммы, присваивая ей нулевое значение. Замечу, что до первого оператора присваивания, содержащего имя переменной в левой части, ее значение не определено.

Затем идет цикл со счетчиком. В нашем примере тело цикла выполняется 20 раз, и каждый раз к значению переменной s прибавляется значение переменной — счетчика i.

Следующие две строки реализуют вывод результата на экран. Для этого в программах на языке Паскаль используются операторы вывода Write и WriteLn. Они содержатся в библиотечном модуле System и во время компиляции автоматически включаются в исполняемый код. Вначале выводится символьная строка. Текст, выводимый на экран, заключается в одиночные кавычки '...'. Затем выводится численное значение — summa.

Последние две буквы в имени процедуры WriteLn означают, что после того, как вывод закончен, курсор переходит на начало следующей строки. Следующий оператор предлагает пользователю нажать клавишу Enter, а оператор ReadLn без параметров ожидает нажатие этой клавиши. После нажатия клавиши Enter выполнение программы завершается.

ВНИМАНИЕ В Паскале не различаются большие и маленькие буквы, то есть Sum, sum, SUM и т. д. представляют собой один и тот же идентификатор.

ПРИМЕЧАНИЕ Обратим внимание на знаки пунктуации в этой программе. Точка с запятой (;) не только завершает описания, но и разделяет операторы в исполняемой части программы. Запятая (,) всегда используется для того, чтобы разделить элементы списка, — в данном случае в разделе var и при вызове процедуры WriteLn. Двоеточие (:) отделяет список описываемых переменных от названия их типа Word. Программы, как и обычные предложения, заканчиваются точкой.

ПРИМЕЧАНИЕ В рассматриваемой программе имеются два оператора присваивания :=. В Паскале одиночный знак равенства для присваивания никогда не используется. он имеет другое назначение.

В арифметических выражениях используются символы арифметических операций. Эти символы приведены в табл. 1.2. Так, например, в произведениях между сомножителями должен находиться символ операции умножения *.

Математическое выражение ах2 в программе па Паскале записывается как а*х*х. Следует заметить, что особенностью языка Паскаль является отсутствие стандартной встроенной функции вычисления произвольной степени числа, кроме второй. • Это, конечно же, неудобно при программировании сложных вычислений. При программировании арифметических выражений следует помнить о приоритетах операций, то есть о порядке их выполнения. Первыми выполняются арифметические операции умножения и деления, они считаются равноприоритетными операциями. Затем выполняются операции сложения и вычитания, тоже равноприоритетные. Если подряд идут несколько равпопрп-оритетных операций, они выполняются слева направо. Порядок выполнения операций может быть изменен с помощью круглых скобок. При наличии в арифметическом выражении круглых скобок первыми будут выполняться операции в круглых скобках, начиная с самых внутренних.