![Page 1: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/1.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
1
![Page 2: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/2.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
2
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
![Page 3: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/3.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
3
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.
![Page 4: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/4.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
4
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;
![Page 5: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/5.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
5
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
![Page 6: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/6.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
6
Esempio: Uso
• …….
• …….
• USELESS;Nel suo uso la proceduraDiventa un semplice statement
![Page 7: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/7.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
7
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.
![Page 8: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/8.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
8
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.
![Page 9: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/9.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
9
![Page 10: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/10.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
10
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.
![Page 11: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/11.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
11
Legami a tempo di compilazioneSi costruisce durante il processamento da parte del compilatore della definizione della procedura analoga alla definizione di tipo di dato
![Page 12: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/12.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
12
Legami a run time
Compile time Run time
Conseguenza del processamento a run time di unoStatement di invocazione della procedura: analogoAlla definizione di una variabile di un determinato tipo
![Page 13: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/13.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
13
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.
![Page 14: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/14.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
14
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.
![Page 15: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/15.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
15
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.
![Page 16: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/16.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
16
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.
![Page 17: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/17.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
17
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.
![Page 18: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/18.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
18
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
![Page 19: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/19.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
19
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.
![Page 20: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/20.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
20
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.
![Page 21: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/21.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
21
Esempi sullo stack di esecuzione
![Page 22: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/22.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
22
![Page 23: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/23.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
23
![Page 24: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/24.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
24
![Page 25: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/25.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
25
![Page 26: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/26.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
26
![Page 27: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/27.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
27
![Page 28: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/28.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
28
![Page 29: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/29.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
29
![Page 30: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/30.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
30
![Page 31: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/31.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
31
![Page 32: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/32.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
32
Arricchimento dei record di attivazione
![Page 33: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/33.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
33
![Page 34: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/34.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
34
![Page 35: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/35.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
35
![Page 36: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/36.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
36
![Page 37: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/37.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
37
![Page 38: Eliana minicozzi linguaggi1a.a.2005-2006 lezione2 1](https://reader035.vdocuments.pub/reader035/viewer/2022062418/5542eb57497959361e8c0d5b/html5/thumbnails/38.jpg)
eliana minicozzi linguaggi1a.a.2005-2006 lezione2
38