Підпрограми
program nested ( input, output );
var a, b : integer;
function f ( x : integer ) : integer;
begin
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:=