Зворотний зв'язок

ПАСКАЛЬ: точка повернення, підстановка аргументів, зберігання змінних

x := x + 1; f := x

end;

function g (var x : integer ) : integer;

begin x := x div 2; g := x end;

begin a := 12; b := f ( g ( a ) ) end.

відобразимо такою таблицею:

Що виконуєтьсяСтан пам'яті

a b

a := 1212 ?

починається b := f(g(12))12 ?

виклик f(g(12))12 ?f. x f. f ТП

12 ?? ? b:=

починається f. x := g(12)12 ?? ? b:=

виклик g(12)g. x ?? ? b:=g. g ТП

g. x := 1212 ?? ? b:=? f. x:=

g. x := g. X div 26 ?? ? b:=? f. x:=

g. g := g. X6 ?? ? b:=6 f. x:=

повернення з g6 ?? ? b:=6 f. x:=

закінчення f. x := g(12)6 ?6 ? b:=

f. x := f. x + 16 ?7 ? b:=

f. f := f. X6 ?7 7 b:=

повернення з f6 ?7 7 b:=

закінчення b := f(g(12))6 7

Як видно з таблиці, перед виконанням виклику f(g(a)) у локальній пам'яті функції f запам'ятовується точка повернення – присвоювання b:=f(g(a)). Виконання виклику f(g(a)) починається обчисленням значення аргументу, відповідного її параметру x – виразу g(a). При цьому запам'ятовується точка повернення – присвоювання f.x:=g(a) – і починається виконання виклику функції g з аргументом a. Цей аргумент підставляється за посиланням, і зміна g.x є зміною a. З виклику функції g повертається значення 6 і присвоюється параметру f.x. Пам'ять функції g звільняється. Тільки тепер починається виконання операторів функції f. У результаті в програму повертається значення 7 і присвоюється змінній b. Пам'ять функції f звільняється.


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат