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