- Анализ программы с помощью трассировочных таблиц
- Виды трассировочных таблиц
- уметь анализировать программу, выполняя алгоритм пошагово (с использованием компьютера или вручную), определять результат выполнения алгоритма при заданных исходных данных с помощью трассировочных таблиц
- знать виды и способы формирования трассировочных таблиц
- Вы изучили структуру программы на языке программирования Паскаль, основные операторы языка, типы данных. Переведите с английского языка следующие служебные слова языка Паскаль: begin, end, write, read, while – do, if – then, repeat – until. Сделайте вывод, почему выбраны именно эти слова. Свяжите их с тремя базовыми алгоритмическими конструкциями — следование, ветвление, цикл.
Анализ программ с помощью трассировочных таблиц
Для анализа и проверки правильности работы программы используют так называемые трассировочные таблицы. В таблицу фиксируется пошаговое выполнение программы + значение переменных, что позволяет наглядно увидеть, как они меняются.
Пример 1
Определим значения переменных x и y, полученных в результате выполнения программы:
var
x,y:integer;
begin
x:=10;
y:=3;
while x>y do
begin
y:=y+2;
x:=x-1;
end;
writeln(x);
writeln(y);
end.
Решение
Составим трассировочную таблицу, каждая строка которой соответствует одному шагу алгоритма.
Таблица 1. Трассировочная таблица к примеру 1
|
№ команды
|
Команда
|
Значение выражения
|
Х
|
Y
|
|
1
|
x:=10;
|
10
|
10
|
|
|
2
|
y:=3;
|
3
|
|
3
|
|
3
|
while x>y do
|
Да
|
|
|
|
4
|
y:=y+2;
|
4
|
|
4
|
|
5
|
x:=x-1;
|
9
|
9
|
|
|
6
|
while x>y do
|
Да
|
|
|
|
7
|
y:=y+2;
|
6
|
|
6
|
|
8
|
x:=x-1;
|
8
|
8
|
|
|
9
|
while x>y do
|
Да
|
|
|
|
10
|
y:=y+2;
|
8
|
|
8
|
|
11
|
x:=x-1;
|
7
|
7
|
|
|
12
|
while x>y do
|
Нет
|
|
|
|
13
|
writeln(x);
|
|
7
|
|
|
14
|
writeln(у);
|
|
8
|
|
Ответ: x = 7, y = 8.
Упражнение 1
Определите значения переменной sum в результате выполнения следующей программы:
var
sum,i,r:integer;
begin
sum:=1;
r:=3;
for i:=4 to 12 do
sum := sum + r;
writeln(sum);
end.
Виды трассировочных таблиц
- Таблица, каждая строка которой отражает результат одного действия (см. пример 1).
- Таблица, каждая строка которой отражает результат выполнения группы действий (см. пример 2).
Пример 2
Определим значения переменной g, полученной в результате выполнения программы:
var
g,x,y:integer;
begin
g:=1;
for x:=1 to 3 do
for y:=5 downto x do
g := g + x + y;
writeln(g);
end.
Решение
Cоставим трассировочную таблицу вида 2, где в каждой строке результат группы операций.
Таблица 2. Трассировочная таблица к примеру 2
|
|
g
|
x
|
y
|
|
Нач. знач
|
1
|
-
|
-
|
|
1
|
7
|
1
|
5
|
|
2
|
12
|
1
|
4
|
|
3
|
15
|
1
|
3
|
|
4
|
19
|
1
|
2
|
|
5
|
21
|
1
|
1
|
|
6
|
28
|
2
|
5
|
|
7
|
34
|
2
|
4
|
|
8
|
39
|
2
|
3
|
|
9
|
43
|
2
|
2
|
|
10
|
51
|
3
|
5
|
|
11
|
58
|
3
|
4
|
|
12
|
64
|
3
|
3
|
Ответ: 64.
Упражнение 2
Определите значения переменной g, полученной в результате выполнения программы:
var
g,x,y:integer;
begin
g:=1;
for x:=1 to 3 do
for y:=x to 3 do
g := g + 2*x - y;
writeln(g);
end.
Упражнение 3
Определите, какое число будет выведено в результате выполнения следующей программы:
var
a,b :integer;
begin
a:=5;
b:=200;
while b>=100 do
begin
b:=b-50;
a:=a+1;
end;
writeln(a);
end.
Итоги
- Для анализа программ используют трассировочные таблицы, в которых фиксируется пошаговое выполнение программы.
- Трассировочная таблица наглядно показывает ход выполнения программы, что позволяет выявить ошибки, посчитать результат.
- Трассировочные таблицы бывают двух типов: с отражением результата выполнения каждой команды, с группировкой результатов.
Контрольные вопросы
- Для чего используются трассировочные таблицы?
- Как сформировать трассировочную таблицу?
- Для каких целей удобно использовать трассировочную таблицу первого типа, а для каких второго?
Упражнение 1
28
Упражнение 2
7
Упражнение 3
8

