Для понимания чужой программы и для проверки правильности написания своей используют метод пошагового выполнения программы с отслеживанием значений всех переменных.
Пример 6.4. Вычисление суммы чисел от 6 до 10
Program Test.4; var N: integer; { Это будет счетчик цикла for } S: integer; { В этой переменной будем накапливать сумму } begin S:=0; { Вначале обнулим сумматор } for N:=6 to 10 do S:=S + N; {Эта строка - тело цикла. При его выполнении каждый раз к S прибавляется очередное N. Переменную S можно сравнить с аккумулятором, в котором накапливается сумма } writeln('Сумма чисел=', S:6); readln end.
Рис. 6.3. Блок-схема алгоритма вычисления суммы чисел от 6 до 10
Для проверки правильности работы программы рекомендуется пошагово отслеживать изменение всех переменных после выполнения каждого оператора программы. Такой процесс называется трассирввкой. Продемонстрируем этот прием (табл. 6.1). В результате работы программы на экране получим число 40.
Таблица 6.1. Трассировка программы из примера 6.4
Оператор
Условие
N
S
Примечание
S:=0
for N:= 6 to 10 do
Да
S:=S + N
0+6-6
For N:= 6 to 10 do
Да
S:= S + N
6 + 7 = 13
For N:= 6 to 10 do
Да
S:= S + N
13 + 8 = 21
For N:= 6 to 10 do
Да
S:= S + N
21 + 9 = 30
For N:= 6 to 10 do
Да
S:= S + N
30 + 10 = 40
For N:=6 to 10 do
Нет
writeln ('Сумма чисел',S:3)
???
На экране: Сумма чисел=40
Для операторов, выполняющих проверку условий (if, for и т. п.) в столбце «Условие» принято указывать результат проверки. В данном случае в цикле for проверяется условие продолжения цикла. Символы «???» подчеркивают, что значение счетчика цикла по выходе из цикла считается неопределенным.
Метод трассировки очень помогает при отладке программы, когда программа выдает не тот результат, который должна выдать. Осуществляя пошаговую трассировку, мы вникаем в логику работы программы и на каждом шаге проверяем, правильны ли были наши рассуждения при ее написании.