an fi 98-99 funzioni run time le funzioni a tempo di esecuzione record di attivazione
TRANSCRIPT
![Page 1: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/1.jpg)
AN FI 98-99 Funzioni Run Time
Le funzioni a tempo di esecuzione
Record di attivazione
![Page 2: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/2.jpg)
AN FI 98-99 Funzioni Run Time
Invocazione di una funzione P(<args>)
creazione di una nuova attivazione (istanza) del servitore P
allocazione di memoria per gli argomenti e le variabili locali
trasferimento degli argomenti trasferimento del controllo esecuzione del codice della
funzione
![Page 3: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/3.jpg)
AN FI 98-99 Funzioni Run Time
Il modello di valutazione applicativo
valutazione del nome della funzione (determinazione del codice da applicare);
determinazione degli argomenti da sostituire ai parametri formali;– avviene valutando le espressioni
specificate al momento della invocazione applicazione del codice agli
argomenti.
![Page 4: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/4.jpg)
AN FI 98-99 Funzioni Run Time
Esempio
public double try(double a, double b){return ( a==0 ) ? 1 : b;
}
Cliente:
double x =1.0; double y = 2.0; try( x,y )
![Page 5: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/5.jpg)
AN FI 98-99 Funzioni Run Time
Valutazione
Lega a al valore 1
Lega b al valore 2
return (a == 0) ? 1 : b; //con a=1, b=2
________________________Risultato: 2
![Page 6: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/6.jpg)
AN FI 98-99 Funzioni Run Time
Valutazione: un nuovo caso
double x = 0.0;try( x,1/x )
Il corpo della funzione non viene eseguito in quanto la valutazione di 1/x porta ad overflow.
_______________________Risultato: Run-Time Error
![Page 7: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/7.jpg)
AN FI 98-99 Funzioni Run Time
Meccanismi di trasferimento degli argomenti
Data la chiamata f(X), X viene trasferito a f per valore o copia (by value): si
trasferisce il valore di X
Oppure (in altri linguaggi) per indirizzo (by reference): si trasferisce
l’indirizzo di X– per valore-risultato (by value-result): si
copia il valore di X alla chiamata e alla terminazione della funzione
![Page 8: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/8.jpg)
AN FI 98-99 Funzioni Run Time
L’environment
La definizione di una funzione introduce un nuovo binding nell’environment di definizione della funzione (in C il global environment).
Al momento dell’invocazione, si crea un nuovo environment – composto da un frame che contiene i
binding dei parametri e degli identificatori dichiarati localmente alla funzione
![Page 9: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/9.jpg)
AN FI 98-99 Funzioni Run Time
Organizzazione della memoria
Area codice e Area dati.
L’area dati e' a sua volta differenziata in tre parti: – un' area dati globali, – uno stack – uno heap.
![Page 10: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/10.jpg)
AN FI 98-99 Funzioni Run Time
Heap
Lo heap e’ l’area di memoria destinata alle variabili dinamiche.
![Page 11: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/11.jpg)
AN FI 98-99 Funzioni Run Time
Stack
Lo stack (pila) contiene la rappresentazione a frame dell'environment corrente di esecuzione.
Il frame relativo all’attivazione di una funzione e’ rappresentati da una struttura di dati detta record di attivazione.
![Page 12: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/12.jpg)
AN FI 98-99 Funzioni Run Time
Record di attivazione
Viene creato al momento della invocazione di una funzione e distrutto (deallocato) al temine della esecuzione della funzione stessa. – Poiche' le funzioni terminano in modo
LIFO la zona di memoria riservata ai RA puo' essere gestita in modo efficiente attraverso una struttura a pila
![Page 13: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/13.jpg)
AN FI 98-99 Funzioni Run Time
Record di attivazione
SL RTA DL
area PARAMETRI
area VAR LOCALI
area di lavoro
STACK area
all' areacodice
SL
RTA
DL
area PARAMETRI
area VAR LOCALI
area di lavoro
STACK area
all' areacodice
Rappresentazione compatta
![Page 14: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/14.jpg)
AN FI 98-99 Funzioni Run Time
Esempio: fattoriale
Impostazione sintatticamente ricorsiva cheda’ luogo a un processo computazionale ricorsivo
int fact( int n ){return(n==0) ? 1 : n*fact(n-1);}
Cliente: fact( 3 )
![Page 15: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/15.jpg)
AN FI 98-99 Funzioni Run Time
Record di attivazione
fact(3)n3 n*fact(n-1);
2fact(2) n*fact(n-1);
1fact(1) n*fact(n-1);
n
n
0fact(0) -> 1n
RADL
![Page 16: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/16.jpg)
AN FI 98-99 Funzioni Run Time
fact(3)
SL RTA DL
all' istruzione che moltiplicail risultato di fact(n-1) per n
SL RTA DL
2
STACK area
SL RTA DL
SL RTA DL
RA difact(3)
fact(2)
RA difact(1)
RA difact(0)
3
1
0
n
n
n
n
area datiglobale
RTA ->
RA di
fact(3) 3 * fact(2)fact(2) 2 * fact(1)fact(1) 1 * fact(0)fact(0) =1
![Page 17: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/17.jpg)
AN FI 98-99 Funzioni Run Time
Fact1
int fact1( int n, int v, int k ){return
(n==k)?V:fact1(n,v*(k+1),k+1);
}
n
vk
RADL
vk
![Page 18: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/18.jpg)
AN FI 98-99 Funzioni Run Time
fact1(3,1,0)fact(3,1,0) fact(3,1*1,1)fact(3,1,1) fact(3,1*2,2)fact(3,2,2) fact(3,2*3,3)fact(3,6,3) =6
SL | RTA | DL310
SL | RTA | DL311
SL | RTA | DL322
SL | RTA | DL363
![Page 19: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/19.jpg)
AN FI 98-99 Funzioni Run Time
Definizioni
![Page 20: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/20.jpg)
AN FI 98-99 Funzioni Run Time
Ambiente lessicale e dinamico
L'ambiente lessicale e' l'ambiente in cui compare la definizione della funzione.
L'ambiente dinamico e' l'ambiente presente al momento di una particolare attivazione della funzione.
![Page 21: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/21.jpg)
AN FI 98-99 Funzioni Run Time
Chiusura lessicale
L’oggetto computazionale che correla una espressione con l’environment da usare nella sua valutazione prende il nome di chiusura
e in particolare di chiusura lessicale nel caso in cui l’ambiente sia quello di definizione della espressione
![Page 22: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/22.jpg)
AN FI 98-99 Funzioni Run Time
Tempo di vita delle variabili
e' il periodo di tempo per cui un'area di memoria e' allocata ad una variabile. – In caso di allocazione statica, il tempo di
vita e' di norma quello del programma.– In caso di allocazione dinamica, il tempo
di vita della variabile puo' dipendere dal tempo di vita dell'unita' di programma (blocco) in cui e' avvenuta la allocazione.
![Page 23: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/23.jpg)
AN FI 98-99 Funzioni Run Time
Categorie di variabili variabili statiche:
create prima della esecuzione che vivono per tutto il tempo di vita del programma;
variabili semistatiche: e' nota staticamente l'occupazione complessiva di memoria.
Verranno create dinamicamente;
variabili semidinamiche: create all'atto della attivazione del blocco in cui sono dichiarate
e la cui occupazione di memoria e' nota solo al momento della creazione;
variabili dinamiche: l’ occupazione complessiva di memoria cambia durante la
esecuzione del programma.
![Page 24: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/24.jpg)
AN FI 98-99 Funzioni Run Time
Modello di valutazione normale
la determinazione degli argomenti avviene con sostituzioni testuali dei valori attuali ai parametri
![Page 25: AN FI 98-99 Funzioni Run Time Le funzioni a tempo di esecuzione Record di attivazione](https://reader035.vdocuments.site/reader035/viewer/2022062404/5542eb5a497959361e8c6795/html5/thumbnails/25.jpg)
AN FI 98-99 Funzioni Run Time
Valutazioneint x = 0;
try( x,1/x )
lega a alla chiusura x/envCaller
lega b alla chiusura y/envCalleressendo envCaller l’ambiente al momento della chiamata
return (eval(x,envCaller) == 0) ? 1 : eval(y, envCaller)
________________________Risultato: 1