Ejercicio de pila resuelto 1- Resolver las pilas de ejecución

Anuncio
Ejercicio de pila resuelto
1- Resolver las pilas de ejecución siguiendo las reglas de alcance estático y
dinámico.
a) Program Main;
var i,j:integer;
Procedure B;
begin
i:= i - 4;
end {B};
Function y (j:integer):integer;
begin
y:= j + i;
end {y};
Procedure C (var a:integer; b:integer);
var z:integer;
begin
z:= y ( b );
a:= a – 2;
B;
end {C};
Procedure A (var x:integer; k:integer);
var i,j:integer;
Procedure B;
begin
i:= i + 7;
end;
begin
i:=19; j:= x + 5; k:= k + 3;
C (x ,k );
writeln( i ,j ,x , k );
end {A};
begin
i:=30; j:=15; A(i , j);
writeln(i , j);
end. {Main}
Cadena Estática
Enlace estático
Enlace dinámico
i = 30 28 24
j = 15
B,Y,C,A proc
RA
Main
x  i
k = 15 18
i = 19
j = 35
B proc
RA
A(i,j)
RA
C(x,k)
El proc. A imprime
i = 19 j = 35
x =24 k = 18
4
a  x
b = 18
z = 48
3
j = 18
z = 48
RA
Y(b)
1
RA
B
2
Cadena Dinámica
Enlace estático
El Main imprime:
i = 24
j = 15
5
RA
Main
RA
A(i,j)
RA
C(x,k)
RA
Y(b)
RA
B
Enlace dinámico
i = 30 28
j = 15
B,Y,C,A proc
5
x  i
k = 15 18
i = 19 26
j = 35
B proc
4
a  x
b = 18
z = 37
3
El Main imprime:
i = 28
j = 15
El proc. A imprime
i = 26 j = 35
x =28 k = 18
j = 18
y = 37
1
2
Descargar