eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
1
Argomenti coperti da queste diapositive
· Introduzione
·
•
•
•
•
•
•
•
Procedura come astrazione
Definizione di Procedure
Invocazione di Procedure
Ambiente di Procedure
Ambiente locale
Ambiente non locale
Bibliografia
Esercizi
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
2
Introduzione
• Procedure sono viste come astrazioni di parti di programma
in unità di esecuzione più piccole, come enunciati o
espressioni, nascondendo i dettagli irrilevanti ai fini del loro
uso..
• • Se si distinguono le unità di esecuzione, in ordine
crescente di complessità: enunciati, espressioni, blocchi,
programmi, allora si definisce astrazione procedurale la
rappresentazione di una unità di esecuzione attraverso
un’altra unità più semplice. In pratica è la rappresentazione
di un blocco attraverso un enunciato o una espressione.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
3
Procedura come astrazione
• Una procedura quindi è
contemporaneamente complessa, cioè
una sequenza di unità di esecuzione e la
rappresentazione di questa mediante un
unità di esecuzione semplice.
• La sua natura complessa è evidente nella
sua definizione, la sua natura di statement
(o per funzioni di espressioni) è evidente
nel suo uso;
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
4
Esempio in Pascal: definizione
•
•
•
•
•
•
•
Definizione di una procedura:
Procedure USELESS;
begin
writeln (‘this is the result’);
writeln (‘of an execution’);
writeln (‘of procedure USELESS’);
end
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
5
Esempio: Uso
• …….
• …….
• USELESS;
Nel suo uso la procedura
Diventa un semplice statement
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
6
procedura è un’astrazione
Nel suo uso, la procedura nasconde la
complessità della sua definizione, diventa
uno statement: questo può essere visto
come astrazione: la rappresentazione cioè
di una entità che nasconde quelli che
possono essere considerati dettagli
irrilevanti per il suo uso.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
7
Vantaggi dell’ astrazione
procedurale
• Almeno tre:
• Le unità di esecuzione che usano procedure, possono essere
semplici connesse ad un unico scopo, facili da scrivere e da
modificare: pensare alla riduzione di un problema a sotto
problemi,e a codificare ogni sottoproblema con una
procedura:progettazione top-down
• Il programma (la procedura) che usa una procedura non risente
(proprietà di incapsulamento) dei dettagli implementativi della
procedura usata, per cui l’implementazione può essere sempre
variata purché si mantenga l’interfaccia di comunicazione con il
programma “signature della procedura”.
• Le procedure sono riutilizzabili in ambienti diversi.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
8
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
9
Procedura e legami
• La definizione di una procedura specifica
quei legami che possono essere costruiti
durante la compilazione: compile-time.
• A sua volta l’attivazione (invocazione) di
una procedura provoca altri bindings che
sono chiaramente definiti a run-time.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
10
Legami a tempo di compilazione
Si costruisce durante il processamento da parte del
compilatore della definizione della procedura
analoga alla definizione di tipo di dato
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
11
Legami a run time
Conseguenza del processamento a run time di uno
Statement di invocazione della procedura: analogo
Alla definizione di una variabile di un determinato tipo
Compile time
Run time
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
12
Il record di attivazione varia
• Ogni processamento a run time di uno
statement di invocazione della stessa
procedura causa la generazione di un
nuovo “oggetto procedura” con lo stesso
legame di tipo, ma con diverso record di
attivazione.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
13
Informazioni contenute nel record
di attivazione
• Il record di attivazione consiste di tre parti:
ambiente LOCALE, ambiente dei
PARAMETRI, e PUNTATORE
ALL’AMBIENTE NON LOCALE.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
14
Ulteriore struttura che si forma a run
time Stack dei record di attivazione
• Quando una procedura è invocata, il suo record di
attivazione viene messo sullo stack dei record di
attivazione. Quando l’esecuzione della procedura
termina il record relativo viene tolto dallo stack, e il
record di attivazione dell’unità che aveva chiamato la
procedura e la cui esecuzione era stata sospesa, diventa
il top dello stack.
Questo stack si forma a run-time ,e, istante per
istante,contiene tutti i record di attivazione delle
procedure che ancora non hanno completato la loro
esecuzione.
• Attenzione: Solo l’unità il cui record di attivazione è al
top dello stack è realmente in esecuzione, le altre hanno
l’ esecuzione sospesa.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
15
Ambiente locale
• L’ambiente locale della procedura contiene gli oggetti dichiarati
nella procedura più il puntatore all’indirizzo di ritorno+ lo spazio
di memoria temporaneo.
• Il puntatore all’ indirizzo di ritorno ha come valore la locazione
contenente lo statement della procedura da cui l’esecuzione di
essa deve riprendere , quando, dopo una fase di
sospensione,la procedura avrà di nuovo il suo record di
attivazione al top dello stack di run-time,.
• Dell’ambiente locale fa parte lo spazio di memoria temporaneo,
spazio nel quale vengono messi i dati durante le valutazioni
delle espressioni, in modo da essere eventualmente presi in
considerazione quando si esegue il return.
• Questo spazio temporaneo è fortemente dipendente
dall’implementazione.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
16
Ambiente non locale
• Ambiente non locale
• E’ il posto per memorizzare l’informazione che permette
l’accesso alle entità DATO usate dalla procedura ma non
definite in essa.
• Questa informazione può essere rappresentata da un
puntatore al record di attivazione il cui ambiente locale e
non locale, determinerà l’ambiente non locale del
presente record di attivazione.
• Quando nel corso dell’esecuzione della procedura
chiamata viene fatto un riferimento ad un nome che non
è legato nell’ambiente locale, l’ambiente non locale è
esaminato per trovare tale nome.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
17
Come si trova l’ ambiente non
locale ovvero come si eredita
• Due politiche: Ambito di validità statico,
Ambito di validità dinamico.
• Scelto un linguaggio importante sapere
quale politica segue per la determinazione
dei componenti dell’ ambiente non locale
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
18
Ambito Statico
• Nello “STATIC SCOPE” l’ambiente non
locale per una procedura è l’ ambiente
locale e non locale dalla unità di
esecuzione nella quale la procedura è
definita.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
19
Ambito dinamico
• Nel “Dynamic Scope” l’ ambiente non locale per
una procedura generica k è l’ ambiente locale e
non locale della procedura che l’ ha chiamata
così come definito nel record di attivazione di
essa al momento della chiamata.
Viene quindi determinato dal record di attivazione
che nello stack a run time precede
immediatamente il record di attivazione della
corrente invocazione di k.
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
20
Esempi sullo stack di esecuzione
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
21
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
22
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
23
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
24
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
25
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
26
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
27
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
28
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
29
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
30
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
31
Arricchimento dei record di
attivazione
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
32
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
33
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
34
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
35
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
36
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
37
eliana minicozzi
linguaggi1a.a.2005-2006 lezione2
38
Scarica

L1Lezione2