Download - Tema 5Clasde 5
-
7/23/2019 Tema 5Clasde 5
1/37
1
Representacin en Ejecucin
-
7/23/2019 Tema 5Clasde 5
2/37
2
Repaso
Unidades de programa
Atributos: Nombre Declaracin/invocacin
Alcance Dnde se conoce el identificador nombre Rutina
Ambiente de referencia de la Rutina: global local no local Tipo
Dado por los par!metros " valor de retorno# Signatura
L-Valor: Relacionado a dnde se almacena las sentencias en la memoria
R-Valor: Relacionado al momento en $ue se %ace la referencia a esa Rutina
Diferencias entre Declaracin y Definicin E&tensin del alcance
omunicacinentre Rutinas 'asaje par!metros " entorno global
-
7/23/2019 Tema 5Clasde 5
3/37
(
Repaso
!rocesador Abstracto - "emoria
: )ona de cdi o D: )ona de datos
ip
Sentencias: Set
'ara asignar valores# Ej: set1*D+2*,- set2* read- set#riteD+.*,
$ump y %umpt
ifurcacin incondicional " condicional# Ej:%ump 0& %umpt0D+1(,D+3,
-
7/23/2019 Tema 5Clasde 5
4/37
0
Repaso
's(uemas de e%ecucin - ) y *
Es$uemas de ejecucin
Est!tico basado en pila " din!mico
'st+tico:
):
'rograma sencillo sin blo$ues internos solo cdigo
programa principal
En 4ona de datos: 5676 datos locales
*:
'rograma con blo$ues internos 589 anidamientos
ompilacin junta " separada ;*,
En 4ona de datos: datos locales . pto/ de retorno
-
7/23/2019 Tema 5Clasde 5
5/37
.
02 < recursin " valor de
retorno Es$uema basado en pila
Rutinas con capacidad de llamarse a si
mismas;recursin directa= o de llamar a
otra rutina en forma recursi1a;recursin
indirecta=#
Rutinas con la capacidad de de1ol1er
1alores es decir funciones#
-
7/23/2019 Tema 5Clasde 5
6/37
>
0:?uncionamiento
El registro de activacin de cada unidad ser! de tama2o fi%o
y conocido pero no se sabr+cuantas instancias decada unidad se necesitar+ndurante la ejecucin#
8gual $ue en 2 el compilador puede ligar cada 1ariable
con su despla3amiento dentro del correspondiente
registro de acti1acin# El despla3amientoes est+tico 7a direccin donde se cargar! el registro de acti1acin
es din+mica por lo tanto la ligadura con la direccionesdirecciones
absolutasabsolutasen la 4ona de Datos de la memoria solo puede
4acerse en e%ecucin# ada nue1a in1ocacin aloca un nue1o registro de
acti1acin y se establecen las nue1as ligaduras ente el
segmento de cdigo y el nue1o registro de acti1acin/
-
7/23/2019 Tema 5Clasde 5
7/37
0:Ejemplo del factorial
int n-
int fac56
int loc-
if ;n1= @
loc nBB-
return loc 7 fact58
C
else return 1-
9
main 56
get ;n=-
if ;n*= print ;fact;==-
else print; input error=-
C
Recursin
.
Valor de
retorno
-
7/23/2019 Tema 5Clasde 5
8/37
3
0:?uncionamiento
!to Retorno&*1
'n el caso *:
D5!& pto de retorno
D5!&) ;
Un moldedel RA
de ' para cadaacti1acin
Fna
invocacina !implica
'
int &
informacin necesitariamos adicionar en
el RA en este caso?
?
-
7/23/2019 Tema 5Clasde 5
9/37
G
0:?uncionamiento
'
'
int &'to retorno
&*1
D
'to retorno
&2(
! !
A%ora %a" $ue tener en cuenta $ue:
uando la instancia actualde la unidad terminedeejecutarse su registro de acti1acin no se necesitar+mas por lo tanto se puede liberar el espacio ocupadopor su registro de activacin " dejar el espaciodisponible para nuevos registros de activacin " $ue##
7as unidades pueden devolver 1alores;funciones= "esos valores N@ deberHan perderse cuando sedesactive la unidad# EntoncesI#
Jalor Retorno
Jalor Retorno
7inK din!mico
7inK din!mico
-
7/23/2019 Tema 5Clasde 5
10/37
1*
0:Datos necesarios 'ara manejar la alocacin din+mica necesitamos
nue1os elementos:
omo vimos I# se necesita el: Valor de retorno: Al terminar una rutina se desaloca
su RA por lo tanto la rutina lllamante debe guardar en suRA sel valor de retorno de la rutina llamada#
Lin din+mico: ontiene un puntero a la direccinbase del registro de activacin de la rutina llamadora
'ero adem!s I# se necesita:
urrent:Direccin base del registro de activacin de launidad $ue se este ejecutando actualmente Bree:'r&ima direccin libre en la pila
adena din+mica:cadena de linKs din!micos originada
en la secuencia de registros de activacin activos#Representa la secuencia din!mica de unidades activadas
-
7/23/2019 Tema 5Clasde 5
11/37
11
0:Loldes
punto retorno
linK din!mico
valor de retorno
D
free
current*
1
-
7/23/2019 Tema 5Clasde 5
12/37
12
'n la 3ona de Datos
0:Ejemplo5upongamos la siguiente estructura de programa "
el siguiente es$uema de llamado##
C
C
A
free
current
Se llama a
A
Allama a
C
lin din+mico
Cllama a1alor de retornopto de retorno
free
current
free
current
-
7/23/2019 Tema 5Clasde 5
13/37
1(
0:MNuO sucede cuando sellama o retorna de una rutinaP
set 1D+1,
-
7/23/2019 Tema 5Clasde 5
14/37
10
0:sem!ntica del call B returnint f)5
6int a-
###
9
1oid main 56
int b-
###
f1;=-
##
9
uando se llamaI
set 1D+*,set *D+D+*,
-
7/23/2019 Tema 5Clasde 5
15/37
1.
0: Ejemplo del factorial
int n-
int fact;=
@int loc-
if ;n1= @loc nBB-
return locfact;=-
C
else
return 1-
C
main;=
@
get;n=-
if ;n*=print;fact;==-
else
print;error entrada=-
C
nreg act
global "
main
locreg act fac
as!ndonos en el primer ejemplo: llamada recursiva a la funcin factorial
tenemos:
-
7/23/2019 Tema 5Clasde 5
16/37
1>
*n
urrent?ree
main
locfac
0:Ejemplo del efecto en memoria
de la ejecucin de factorial
8nvocacin a fac con n2main fac
*
fac
imprime *
)
loc fac
fac E )
fac E *
int n-
int fact;=
@
int loc-
if ;n1= @
loc nBB- return locfact;=-
C
else return 1-
Cmain;=
@
get;n=-
if ;n*=
print;fact;==-
else print;error
entrada=-C
-
7/23/2019 Tema 5Clasde 5
17/37
1
F: Estructura de blo$ue
Estas caracterHsticas conforman el concepto de estructura
de blo(ue: controla el alcance de las variables define el tiempo de vida de las variables divide el programa en unidades mas pe$ueSas#
7os blo$ues pueden ser: disjuntos ;no tiene porcin comTn= anidados ;un blo$ue esta completamente contenido en otro=
0Upermite $ue dentro de las
sentencias compuestas apare4can
declaraciones locales
0UUpermite la definicin de una rutina
dentro de otras rutinas#
;anidamiento de rutinas=
-
7/23/2019 Tema 5Clasde 5
18/37
13
F,:Anidamiento vHasentencias compuestas
Fn blo$ue tiene forma de una sentenciacompuesta:
@Vlista de declaraciones-Vlista de sentenciasC
7as variables tienen alcance local: son visiblesdentro de la sentencia compuesta inclu"endocual$uier sentencia compuesta anidada en ella
5i en el anidamiento %a" una nueva declaracinde un nombre la declaracin interna enmascarala e&terna del mismo nombre#
-
7/23/2019 Tema 5Clasde 5
19/37
1G
F,: 5entencias compuestasint f;=-
@
int &"W:W%ile ;II##=
@
int &4:
W%ile ;I#=
@
int "-
C
if;I##=
@
int & W-
CC
if ;I=
@
int abcd
C
" "X W WX abcdA7A9E
)
*0
F
G
&X &XX&
-
7/23/2019 Tema 5Clasde 5
20/37
2*
F,:5entencias compuestas
alocacin: implementacin
&XX de 0
a de .&X de 2
b de .4 de 2
"X de (
WX de 0
& de 1
d de .
c de .
" de 1
W de 1
punto de retorno
linK din!mico
est!tico din!mico
incluir las
necesidades
dentro del
registro de
activacin de
la unidad ala $ue
pertenece
alocar el
espacio
din!micamen
te cuando se
ejecutan las
sentencias
simple y eficiente
en tiempo
eficiente en
espacio
)
0 F
G*
int f58
@ int &"W:
#4ile;II##=
@ int &4:
#4ile ;I#=
@ int "-
C
if;I##=
@int & W-C
C
if;I=
@int abcd
C
)
*
0
F
G
-
7/23/2019 Tema 5Clasde 5
21/37
21
F,,:Rutinas anidadas
//fileint &"4-
f1;=
@
int tu-
f2;=
@
int &W-
f(;=
@
int "Wt-
C& " < t < W < 4-
C
C
main ;=-
@
int 4t-
C
//end file
)
*
0
F
global
; E y . t . # . 3
globallocal localf1
no local en f2 " f(
local a f2 no local en f(f(
f2 local a f1
en f(
valen las mismas reglas de alcance
visibles &u4 no locales
visibles "Wt locales
Alcance de los nombres de rutinas:
F,,
-
7/23/2019 Tema 5Clasde 5
22/37
22
F,,:Rutinas anidadasacceso al ambiente noBlocal
& " 4
4 t
t u
& W
" t W
& Wcurrent
global
f1
f2
f(
f2
main
Secuencia de
llamadas:
main f) f* f0 f*
cadena din!mica
globallocal
; E y . t . # . 3
global
f1
local
//file
int &"4-f)5
@
int tu-
f*5
@
int &W-
f05
@
int "Wt-
C
& " < t < W < 4-
C
Cmain 58
@
int 4t-
C//end file
La cadena din+mica no sir1e
para locali3ar esas referencias
no locales& en lengua%es (ue
siguen la cadena est+tica
-
7/23/2019 Tema 5Clasde 5
23/37
2(
punto retorno
linK din!mico
lin est+tico
F,,:Acceso al ambiente nolocal
linK est!tico: apunta al registro de activacin de
la unidad $ue est!ticamente la contiene
la secuencia de linKs est!ticos se denomina
cadena est!tica
anidamiento
est!tico
-
7/23/2019 Tema 5Clasde 5
24/37
20
F:MNuO sucede cuando se llama
o retorna de una rutinaP
set 1D+1,
-
7/23/2019 Tema 5Clasde 5
25/37
2.
F,,:adena est!tica
& " 4
4 t
t u
& W
" t W
& Wcurrent
global
f1
f2
f(
f2
main
; E y . t . # . 3
global globallocal
f1
local
on la cadena est+tica
podemos locali3ar esas
referencias no locales& en
lengua%es (ue siguen lacadena est+tica
-
7/23/2019 Tema 5Clasde 5
26/37
2>
F: Ejemplo de lenguajes
F, F,,
-
7/23/2019 Tema 5Clasde 5
27/37
2
adena est!tica adena din!mica
A
est!tico
b es la de A true
din!mico
b es la de false
A
boolean b true
boolean b false
print b
-
7/23/2019 Tema 5Clasde 5
28/37
23
G:Datos m!s din!micos
.U
Registro de
activacin cu"otamaSo se conocecuando se activa la
unidad#
.UU
7os datos pueden
alocarse durante laejecucin#
Datos
semidin!micos
Datos
din!micos
-
7/23/2019 Tema 5Clasde 5
29/37
2G
G,:Datos semidin!micos
Jariables cu"o tamaSo se conoce en compilacin
Arreglos din+micos
type VECTOR is array (INTEGER range );define un arreglo con Hndice irrestricto
A: VECTOR (0..N);
B: VECTOR(1..);
9 " L deben ligarse a algTn valor entero para $ueA " puedan alocarse en ejecucin ;referenciaal ambiente no local o par!metros=
-
7/23/2019 Tema 5Clasde 5
30/37
(*
G,:8mplementacin dearreglos din!micos
@"!JLAJ@N:se reserva lugar en el registro deactivacin para los descriptores de los arreglosdin!micos#
Qodos los accesos al arreglo din!mico son traducidoscomo referencias indirectas a travOs del puntero en eldescriptor cu"o despla4amiento se determinaest!ticamente#
A 5n)//n*&m)//m*lugar donde se
almacenara A
tamaSo est!tico
n1
n2
m2
m1
-
7/23/2019 Tema 5Clasde 5
31/37
(1
A: VECTOR (0..N);
B: VECTOR(1..);
EYEF869
A
punto retorno
linK din!mico
li A
ls A
li
ls
linK est!tico
vbles localesli A
ls A
li
ls
6L'87A869
AQ8JA869 DE 7A
F98DAD 5E
EJA7FA9 765
78L8QE5
codigo generado
por el compilador
para implementar
este mecanismo
-
7/23/2019 Tema 5Clasde 5
32/37
(2
G,:Datos semidin!micos
'$'UJ@N: el registro de activacin se aloca envarios pasos:
1#5e aloca el almacenamiento para los datos detamaSo conocido est!ticamente " para los
descriptores de los arreglos din!micos#2#on la declaracin se calculan las dimensiones
en los descriptores " se e&tiende el registro deactivacin para incluir el espacio para la variable
din!mica#(#5e fija el puntero del descriptor con la direccindel !rea alocada
-
7/23/2019 Tema 5Clasde 5
33/37
((
p pointer to integer
A
neW p
ne# p
Ap
el reg de Act de A noesta en el tope
el reg de Act de no permite
$ue luego se use en A
donde alocar el objeto
apuntadoP
A C
5e alocan e&plHcitamente durante la ejecucin
mediante instrucciones de alocacin
G,,:Datos din!micos
-
7/23/2019 Tema 5Clasde 5
34/37
(0
el tiempo de vida no depende de la sentencia de
alocacin vivir! mientras este apuntada
pila
%eap
Ap
la solucin es
alocarla en la
%eap
-
7/23/2019 Tema 5Clasde 5
35/37
(.
>: 7E9ZFAYE5
din!micos 5e trata de a$uellos lenguajes $ue adoptan m!s
reglas din!micas $ue est!ticas#
A'7 5nobol0 " algunas variantes de 7isp usantipadodin!mico " reglas de alcancedin!micas#
5e podrHan tener reglas de tipado din!micas "de alcance est!tico pero en la practica laspropiedades din!micas se adoptan juntas#
Fna propiedad din!mica significa $ue lasligaduras correspondientes se llevan a cabo enejecucin " no en compilacin#
-
7/23/2019 Tema 5Clasde 5
36/37
(>
Jariables est!ticas 1B2
Jariables semiest!ticas o autom!ticas
(B0
Jariables semidin!micas .X
Jariables din!micas .XX Qipos " alcance din!mico >
est+tico
pila
4eap
-
7/23/2019 Tema 5Clasde 5
37/37
(
Ejecucin siguiendo
cadena est!tica " din!mica
'ascal liKe
Diferentes resultados
por las diferentescadenas de ejecucin