Tema 5Clasde 5

download Tema 5Clasde 5

of 37

Transcript of 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