Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Трассировка программ с процедурами

.pdf
Скачиваний:
44
Добавлен:
02.05.2015
Размер:
491.14 Кб
Скачать

Примеры трассировки программ

1. Программа с линейным алгоритмом

1PROGRAMACCOUNT1(INPUT, OUTPUT);

2VAR POSTAGE, NUMBER, PRICE, COST:INTEGER;

3BEGIN

4POSTAGE := 5;

5READ(NUMBER, PRICE);

6COST := NUMBER *PRICE;

7COST := COST + POSTAGE;

8WRITE(COST);

9END.

Таблица трассировки

Входные данные: 4 14

Строка

Ход выполнения

postage

number

price

 

 

 

 

3

Вход в Account1

?

?

?

4

 

5

 

 

5

Ввод number, price

 

4

14

6

 

 

 

 

7

 

 

 

 

8

Печать cost (61)

 

 

 

9Выход из Account1

Результат: 61

2.Программа с условным оператором

1 PROGRAMPRIM1(INPUT,OUTPUT);

2 VAR X, Y, MAX: INTEGER;

3 BEGIN

4 READ(X, Y);

5 IF X >YTHEN

6 MAX := X

7 ELSE

8 MAX := Y;

9 WRITE(MAX)

10END.

cost

?

56

61

1

 

 

Таблица трассировки

 

Входные данные: 4

7

 

 

Строка

Ход выполнения

x

y

 

 

 

3

вход в Prim1

 

?

?

4

 

 

4

7

5

(X > Y) (4 > 7) FALSE

 

 

8

 

 

 

 

9вывод MAX (7)

10Выход из Prim1 Результат 7 Входные данные: 17 3

Строка

Ход выполнения

x

y

 

 

 

3

вход в Prim1

?

?

4

 

17

3

5

(X > Y) (17 > 3) TRUE

 

 

6

 

 

 

9вывод MAX (17)

10Выход из Prim1 Результат 17

1 PROGRAMPRIM2(INPUT,OUTPUT);

2 VAR X, Y, Z, MAX: INTEGER;

3 BEGIN

4 READ(X, Y, Z);

5IF X >YTHEN

6IF X > Z THEN

7MAX := X

8ELSE

9MAX := Z

10ELSE

11IFY> Z THEN

12MAX := Y

13ELSE

14MAX := Z;

15WRITE(MAX)

16END.

max

?

7

max

?

17

2

 

 

Таблица трассировки

 

 

Входные данные: 4

7 5

 

 

 

Строка

Ход выполнения

x

y

z

 

 

 

 

3

вход в Prim2

 

?

?

?

4

 

 

4

7

5

5

(X > Y) (4 > 7) FALSE

 

 

 

11

(Y> Z) (7 > 5) TRUE

 

 

 

12

 

 

 

 

 

15вывод MAX (7)

16Выход из Prim1

Трассировка программы с циклом

1PROGRAM PRIM3 (INPUT,OUTPUT);

2VAR N, X, I, P, REZ: INTEGER;

3BEGIN

4READ (N, X);

5I := 1;

6REZ := 0;

7P := X;

8WHILE I <= N DO

9BEGIN

10REZ := REZ + P;

11P := P *X;

12I := I + 1

13END;

14WRITE(REZ)

15END.

 

 

Таблица трассировки

 

 

Входные данные: 3

2

 

 

 

Строка

Ход выполнения

N

X

I

 

 

 

 

3

вход в Prim3

 

?

?

?

4

 

 

3

2

 

5

 

 

 

 

1

6

 

 

 

 

 

7

 

 

 

 

 

max

?

7

P

REZ

??

0

2

3

Строка

Ход выполнения

 

8 WHILE I <= N 1 <= 3 TRUE 10 11 12

8 WHILE I <= N 2 <= 3 TRUE 10 11 12

8 WHILE I <= N 3 <= 3 TRUE 10 11 12

8 WHILE I <= N 4 <= 3 FALSE

14вывод REZ(14)

15Выход из Prim3 Результат: 14

N

Математическое выпажение: xi

i 1

N

X

I

P

REZ

2

4

2

6

8

3

14

16

4

Трассировка программы с вложенными циклами

1PROGRAMPRIM4(INPUT,OUTPUT);

2VAR N, i, j, REZ: INTEGER;

3BEGIN

4READ (N);

5REZ := 0;

6i := 1;

7WHILE i <= N DO

8BEGIN

9j := 1;

10WHILE j <= i DO

11BEGIN

12REZ := REZ + i * j;

13j := j + 1

14END;

4

15i := i + 1

16END;

17WRITE(REZ)

18END.

Таблица трассировки

Входные данные: 3

Строка

Ход выполнения

 

3 вход в Prim4

4

5

6

7 WHILE i <= N 1 <= 3 TRUE 9

10 WHILE j <= i 1 <= 1 TRUE 12 13

10 WHILE j <= i 2 <= 1 FALSE 15

7 WHILE i <= N 2 <= 3 TRUE 9

10 WHILE j <= i 1 <= 2 TRUE 12 13

10 WHILE j <= i 2 <= 2 TRUE 12 13

10 WHILE j <= i 3 <= 2 FALSE 15

7 WHILE i <= N 3 <= 3 TRUE 9

10 WHILE j <= i 1 <= 3 TRUE 12 13

10 WHILE j <= i 2 <= 3 TRUE 12 13

N

i

j

REZ

?

?

?

?

3

0

1

1

1

2

2

1

3

2

7

3

3

1

10

2

16

3

5

Строка

Ход выполнения

 

10 WHILE j <= i 3 <= 3 TRUE 12 13

10 WHILE j <= i 4 <= 3 FALSE 15

7 WHILE i <= N 4 <= 3 FALSE 17 вывод REZ(25)

15 Выход из Prim4

Результат: 25

N i

Математическое выражение: i j

i 1 j 1

N

i

j

REZ

25

4

4

6

Примеры трассировки программ с процедурами

1. Параметры передаются по значению

1PROGRAM Sampl1(Input, Output);

2VAR a, b, c: integer;

3PROCEDURE AddXY(x, y: integer);

4VAR c: integer;

5BEGIN

6x := x + 2;

7y := y + 5;

8c := (x + y) * 2

9END;

10BEGIN

11READ(a, b);

12c := a + b;

13AddXY(a, b);

14WRITE(a, ' ', b, ' ', c)

15END.

 

 

Таблица трассировки

 

 

Входные данные: 2

3

 

 

 

 

Строка

Ход выполнения

a

b

c

 

 

 

10

Вход в Sampl1

 

?

?

?

 

11

 

 

2

3

 

 

12

 

 

 

 

5

 

13

Вызов AddXY

 

 

 

x

y

5

Вход в AddXY

 

 

 

2

3

6

 

 

 

 

4

 

7

 

 

 

 

 

8

8

 

 

 

 

 

 

9

Выход из AddXY

 

 

 

 

 

14

Вывод a, b, c (2

3 5)

 

 

 

 

15

Выход из Sampl1

 

 

 

 

 

Результат: 2 3 5

c (AddXY)

24

7

2. Параметры передаются по ссылке

1PROGRAM Sampl2(Input, Output);

2VAR a, b, c: integer;

3PROCEDURE AddXY(VAR x, y: integer);

4VAR c: integer;

5BEGIN

6x := x + 2;

7y := y + 5;

8c := (x + y) * 2

9END;

10BEGIN

11READ(a, b);

12c := a + b;

13AddXY(a, b);

14WRITE(a, ' ', b, ' ', c)

15END.

 

 

Таблица трассировки

Входные данные: 2

3

 

 

Строка

Ход выполнения

a

b

 

10

Вход в Sampl2

 

?

?

11

 

 

2

3

12

 

 

 

 

13

Вызов AddXY

 

 

 

 

x

y

5

Вход в AddXY

 

 

 

6

 

 

4

 

7

 

 

 

8

8

 

 

 

 

9

Выход из AddXY

 

 

 

14

Вывод a, b, c (4

8 5)

 

 

15

Выход из Sampl2

 

 

 

Результат: 4 8 5

c

?

5 c (AddXY)

24

8

3. Параметры передаются по значению и по ссылке

1PROGRAM Sampl3(Input, Output);

2VAR a, b, c: integer;

3PROCEDURE AddXY(VAR x: integer ; y: integer);

4VAR c: integer;

5BEGIN

6x := x + 2;

7y := y + 5;

8c := (x + y) * 2

9END;

10BEGIN

11READ(a, b);

12c := a + b;

13AddXY(b, a);

14WRITE(a, ' ', b, ' ', c)

15END.

Таблица трассировки

Входные данные: 2 3

Строка

Ход выполнения

 

10

Вход в Sampl3

11

 

12

 

13

Вызов AddXY

5

Вход в AddXY

6

 

7

 

8

 

9

Выход из AddXY

14

Вывод a, b, c (4 8 5)

15

Выход из Sampl2

Результат: 2 5 5

a b c

? ? ?

2 3

5 y

x

2

5

7

c (AddXY)

24

9

4. Использованиеглобальных переменных

1PROGRAM Sampl3(Input, Output);

2VAR a, b, c: integer;

3PROCEDURE AddXY(x, y: integer);

4BEGIN

5x := x + 2;

6y := y + 5;

7c := (x + y) * 2

8END;

9BEGIN

10READ(a, b);

11c := a + b;

12AddXY(a, b);

13WRITE(a, ' ', b, ' ', c)

14END.

Таблица трассировки

Входные данные: 2 3

Строка

Ход выполнения

 

9

Вход в Sampl1

10

 

11

 

12

Вызов AddXY

4

Вход в AddXY

5

 

6

 

7

 

8

Выход из AddXY

13

Вывод a, b, c (2 3 24)

14

Выход из Sampl1

Результат: 2 3 24

a

b

c

?

?

?

2

3

5

 

 

x y 2 3 4

8

24

10