Трассировка программ с процедурами
.pdfПример трассировки программ с функцией
1PROGRAM Sampl4(Input, Output);
2VAR a, b, c: integer;
3FUNCTION MidXY(x, y: integer): integer;
4BEGIN
5x := x + 2;
6y := y + 5;
7MidXY := (x + y) DIV 2
8END;
9BEGIN
10READ(a, b);
11c := MidXY(a, b);
12WRITE(a, ' ', b, ' ', c)
13END.
|
|
Таблица трассировки |
|
|
||
Входные данные: 2 |
3 |
|
|
|
|
|
Строка |
Ход выполнения |
a |
b |
c |
|
|
|
|
|||||
9 |
Вход в Sampl4 |
|
? |
? |
? |
|
10 |
|
|
2 |
3 |
|
|
11 |
Вызов MidXY |
|
|
|
x |
y |
4 |
Вход в MidXY |
|
|
|
2 |
3 |
5 |
|
|
|
|
4 |
|
6 |
|
|
|
|
|
8 |
7 |
|
|
|
|
|
|
8 |
Выход из MidXY |
|
|
|
|
|
11 |
Возврат в Sampl4 |
|
|
|
6 |
|
13 |
Вывод a, b, c (2 |
3 6) |
|
|
|
|
14 |
Выход из Sampl4 |
|
|
|
|
|
Результат: 2 3 6
MidXY
6
11
1PROGRAM Samplx(Input, Output);
2VAR a, b, c, x1, x2, D: real;
3PROCEDURE RKU(a, b, c: real; VAR y1, y2, D: real);
4BEGIN
5D := SQR(b) – 4 *a * c;
6IF D >= 0 THEN
7BEGIN
8y1 := (–b – SQRT(D)) / (2 * a);
9y2 := (–b + SQRT(D)) / (2 * a)
10END
11END;
12BEGIN
13READ(a, b, c);
14RKU(a, b, c, x1, x2, D);
15IF D >= 0 THEN
16WRITE(‘x1 = ’, x1, ‘ x2= ‘, x2)
17ELSE
18WRITE(‘Корней нет’)
19END.
12