linguaggi di programmazione i – lezione 3wpage.unina.it/.../didattica/linguaggi/lezione03.pdflp1...
TRANSCRIPT
![Page 1: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/1.jpg)
LP1 – Lezione 3 1 / 19
Linguaggi di Programmazione I – Lezione 3
Prof. Marcello Settemailto://[email protected]
http://sette.dnsalias.org
16 marzo 2010
![Page 2: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/2.jpg)
Panoramica della lezione
LP1 – Lezione 3 2 / 19
Procedure come astrazioni
Record di attivazione
Propagazione dei data object
Bibliografia
![Page 3: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/3.jpg)
Procedure come astrazioni
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 3 / 19
![Page 4: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/4.jpg)
Procedure
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 4 / 19
Procedure sono astrazioni di parti di programma in unita diesecuzione piu piccole, come enunciati o espressioni, in modo danascondere i dettagli irrilevanti ai fini del loro (ri-)uso.
![Page 5: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/5.jpg)
Procedure
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 4 / 19
Procedure sono astrazioni di parti di programma in unita diesecuzione piu piccole, come enunciati o espressioni, in modo danascondere i dettagli irrilevanti ai fini del loro (ri-)uso.Vantaggi:
■ Programmi piu semplici da scrivere, leggere o modificare;suddivisione dei compiti in ogni brano di programma;progettazione top-down.
![Page 6: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/6.jpg)
Procedure
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 4 / 19
Procedure sono astrazioni di parti di programma in unita diesecuzione piu piccole, come enunciati o espressioni, in modo danascondere i dettagli irrilevanti ai fini del loro (ri-)uso.Vantaggi:
■ Programmi piu semplici da scrivere, leggere o modificare;suddivisione dei compiti in ogni brano di programma;progettazione top-down.
■ Unita di programmi indipendenti o con dipendenze benspecificate a livello piu alto.
![Page 7: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/7.jpg)
Procedure
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 4 / 19
Procedure sono astrazioni di parti di programma in unita diesecuzione piu piccole, come enunciati o espressioni, in modo danascondere i dettagli irrilevanti ai fini del loro (ri-)uso.Vantaggi:
■ Programmi piu semplici da scrivere, leggere o modificare;suddivisione dei compiti in ogni brano di programma;progettazione top-down.
■ Unita di programmi indipendenti o con dipendenze benspecificate a livello piu alto.
■ Riusabilita di brani di programmi; riduzione errori.
![Page 8: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/8.jpg)
Astrazione procedurale
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 5 / 19
■ Se si distinguono come unita di esecuzione, in ordine crescentedi complessita, espressioni, enunciati, blocchi, programmi, allorasi definisce
![Page 9: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/9.jpg)
Astrazione procedurale
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 5 / 19
■ Se si distinguono come unita di esecuzione, in ordine crescentedi complessita, espressioni, enunciati, blocchi, programmi, allorasi definisce
■ astrazione procedurale la rappresentazione di una unita diesecuzione attraverso un’altra unita piu semplice.
![Page 10: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/10.jpg)
Astrazione procedurale
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 5 / 19
■ Se si distinguono come unita di esecuzione, in ordine crescentedi complessita, espressioni, enunciati, blocchi, programmi, allorasi definisce
■ astrazione procedurale la rappresentazione di una unita diesecuzione attraverso un’altra unita piu semplice.
■ In pratica e la rappresentazione di un blocco attraverso unenunciato o una espressione.
![Page 11: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/11.jpg)
Dichiarazione di procedura
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 6 / 19
■ Causa la generazione di un oggetto analogo al Type Object(anche se in questo corso non esaminato).
![Page 12: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/12.jpg)
Dichiarazione di procedura
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 6 / 19
■ Causa la generazione di un oggetto analogo al Type Object(anche se in questo corso non esaminato).
■ Il processo avviene durante la compilazione.
nomecorpo
dei nomiSpazio
Bloccoeseguibile procedura
Tipo
![Page 13: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/13.jpg)
Invocazione di una procedura
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 7 / 19
■ Causa la generazione di un oggetto analogo al Data Object.
![Page 14: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/14.jpg)
Invocazione di una procedura
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 7 / 19
■ Causa la generazione di un oggetto analogo al Data Object.
■ Il processo avviene durante l’esecuzione, nel momento in cui c’el’invocazione della procedura.
■ Ogni invocazione diversa della stessa procedura causa lagenerazione di un nuovo “oggetto procedura” con lo stessolegame di tipo, ma con diverso record di attivazione.
proceduraSpazio tipi
tipo attivazione
attivazioneRecord di
Oggettoprocedura
![Page 15: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/15.jpg)
Ambiente di esecuzione
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 8 / 19
Analogamente a quanto avveniva per un blocco (di cui la procedura eastrazione), il record di attivazione rappresenta l’intero ambiente diesecuzione di una procedura.
![Page 16: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/16.jpg)
Ambiente di esecuzione
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 8 / 19
Analogamente a quanto avveniva per un blocco (di cui la procedura eastrazione), il record di attivazione rappresenta l’intero ambiente diesecuzione di una procedura. Esso consiste di solito in:
1. ambiente locale (tutti i data object che sono definiti all’internodella procedura);
![Page 17: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/17.jpg)
Ambiente di esecuzione
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 8 / 19
Analogamente a quanto avveniva per un blocco (di cui la procedura eastrazione), il record di attivazione rappresenta l’intero ambiente diesecuzione di una procedura. Esso consiste di solito in:
1. ambiente locale (tutti i data object che sono definiti all’internodella procedura);
2. ambiente non locale (tutti i data object la cui definizione epropagata da altre procedure);
![Page 18: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/18.jpg)
Ambiente di esecuzione
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 8 / 19
Analogamente a quanto avveniva per un blocco (di cui la procedura eastrazione), il record di attivazione rappresenta l’intero ambiente diesecuzione di una procedura. Esso consiste di solito in:
1. ambiente locale (tutti i data object che sono definiti all’internodella procedura);
2. ambiente non locale (tutti i data object la cui definizione epropagata da altre procedure);
3. ambiente dei parametri (contiene informazioni sui dati che sonopassati [d]alla procedura).
![Page 19: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/19.jpg)
Ambiente di esecuzione
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 8 / 19
Analogamente a quanto avveniva per un blocco (di cui la procedura eastrazione), il record di attivazione rappresenta l’intero ambiente diesecuzione di una procedura. Esso consiste di solito in:
1. ambiente locale (tutti i data object che sono definiti all’internodella procedura);
2. ambiente non locale (tutti i data object la cui definizione epropagata da altre procedure);
3. ambiente dei parametri (contiene informazioni sui dati che sonopassati [d]alla procedura).
Ogni volta che una procedura viene invocata il suo record diattivazione viene aggiunto al cosiddetto stack di esecuzione.Sul top dello stack c’e sempre il record relativo alla proceduracorrentemente in esecuzione.Alla terminazione della procedura, il record di attivazione vienerimosso dallo stack.
![Page 20: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/20.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
end;
p: prima di chiamare s
var i;program p;
s
i:= 2;
begin
esecuzioneStack
p
q
q end;
end.
r; begin procedure s;
else r if i>0 then i:= i−1; begin procedure r;
end; ... begin procedure q;
![Page 21: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/21.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
end;
s: prima di chiamare r
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
![Page 22: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/22.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
r: prima di chiamare r
end;
r
s
var i;program p;
s
i:= 2;
begin
esecuzioneStack
p
q
q end;
end.
r; begin procedure s;
else r if i>0 then i:= i−1; begin procedure r;
end; ... begin procedure q;
![Page 23: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/23.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
r: prima di chiamare q
end;
r
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
r
![Page 24: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/24.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
q: prima di terminare
end;
q
r
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
r
![Page 25: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/25.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
r: prima di terminare
end;
r
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
r
![Page 26: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/26.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
r: prima di terminare
end;
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
r
![Page 27: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/27.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
s: prima di q
end;
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
![Page 28: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/28.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
q: prima di terminare
end;
q
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
![Page 29: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/29.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
s: prima di terminare
end;
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
s
![Page 30: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/30.jpg)
Esempio
Procedure comeastrazioni
ProcedureAstrazioneprocedurale
Dichiarazione
Invocazione di . . .
Ambiente di . . .
Esempio
Record di attivazione
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 9 / 19
p: prima di terminare
end;
procedure q; begin ... end;
procedure r; begin i:= i−1; if i>0 then r else
procedure s; begin r;
end.
end; q
q
p
Stackesecuzione
begin
i:= 2;
s
program p;var i;
![Page 31: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/31.jpg)
Record di attivazione
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 10 / 19
![Page 32: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/32.jpg)
Ambiente locale
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 11 / 19
Include:
1. Tutte le variabili dichiarate localmente.
![Page 33: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/33.jpg)
Ambiente locale
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 11 / 19
Include:
1. Tutte le variabili dichiarate localmente.
2. Puntatore alla prossima istruzione [IP] (permette di riprenderel’esecuzione quando il controllo viene restituito alla procedurachiamante).
![Page 34: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/34.jpg)
Ambiente locale
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 11 / 19
Include:
1. Tutte le variabili dichiarate localmente.
2. Puntatore alla prossima istruzione [IP] (permette di riprenderel’esecuzione quando il controllo viene restituito alla procedurachiamante).
3. Memoria temporanea necessaria alla valutazione delleespressioni contenute nella procedura (altamente dipendentedalla realizzazione).
![Page 35: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/35.jpg)
Esempio
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 12 / 19
program p; var i;
s i:= 2;begin
q
end; s r; begin var vs; procedure s;
end;
else r if vr > 0 then vr:= i; i:= i−1; begin var vr; procedure r;
end; ... begin var vq; procedure q;
end.
Run time stack
i
Memoria tempp
![Page 36: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/36.jpg)
Esempio
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 12 / 19
program p; var i;
s i:= 2;begin
q
end; s r; begin var vs; procedure s;
end;
else r if vr > 0 then vr:= i; i:= i−1; begin var vr; procedure r;
end; ... begin var vq; procedure q;
end.
pMemoria temp
i
Run time stack
Memoria temps
vs
![Page 37: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/37.jpg)
Esempio
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 12 / 19
program p; var i;
s i:= 2;begin
q
end; s r; begin var vs; procedure s;
end;
else r if vr > 0 then vr:= i; i:= i−1; begin var vr; procedure r;
end; ... begin var vq; procedure q;
end.
pMemoria temp
i
Run time stack
Memoria temps
vs
Memoria tempr
vr
![Page 38: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/38.jpg)
Esempio
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 12 / 19
program p; var i;
s i:= 2;begin
q
end; s r; begin var vs; procedure s;
end;
else r if vr > 0 then vr:= i; i:= i−1; begin var vr; procedure r;
end; ... begin var vq; procedure q;
end.
pMemoria temp
i
Run time stack
Memoria temps
vs
Memoria tempr
vr
Memoria tempr
vr
![Page 39: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/39.jpg)
Esempio
Procedure comeastrazioni
Record di attivazione
Ambiente locale
Esempio
Propagazione deidata object
Bibliografia
LP1 – Lezione 3 12 / 19
program p; var i;
s i:= 2;begin
q
end; s r; begin var vs; procedure s;
end;
else r if vr > 0 then vr:= i; i:= i−1; begin var vr; procedure r;
end; ... begin var vq; procedure q;
end.
Run time stack
Memoria temps
vs
Memoria tempr
vr
Memoria tempr
vr
Memoria temp
i
Memoria tempp
qvq
![Page 40: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/40.jpg)
Propagazione dei data object
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 13 / 19
![Page 41: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/41.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
![Page 42: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/42.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
■ Se viene richiesto l’accesso ad un dato che non e definito localmente,esso viene ricercato in modo ricorsivo nei record di attivazioneprecedenti.
![Page 43: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/43.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
■ Se viene richiesto l’accesso ad un dato che non e definito localmente,esso viene ricercato in modo ricorsivo nei record di attivazioneprecedenti.
■ Tre tipologie di realizzazione della propagazione.
![Page 44: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/44.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
■ Se viene richiesto l’accesso ad un dato che non e definito localmente,esso viene ricercato in modo ricorsivo nei record di attivazioneprecedenti.
■ Tre tipologie di realizzazione della propagazione.
1. Propagazione in ambito statico. In questo caso l’ambiente nonlocale di una procedura e propagato dal programma che la contienesintatticamente: propagazione di posizione.
![Page 45: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/45.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
■ Se viene richiesto l’accesso ad un dato che non e definito localmente,esso viene ricercato in modo ricorsivo nei record di attivazioneprecedenti.
■ Tre tipologie di realizzazione della propagazione.
1. Propagazione in ambito statico. In questo caso l’ambiente nonlocale di una procedura e propagato dal programma che la contienesintatticamente: propagazione di posizione.
2. Propagazione in ambito dinamico. In questo caso l’ambiente nonlocale di una procedura e propagato dal programma chiamante.
![Page 46: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/46.jpg)
Realizzazione
LP1 – Lezione 3 14 / 19
■ Viene realizzata aggiungendo al record di attivazione un puntatore alrecord di attivazione della procedura da cui vengono propagate ledefinizioni o i dati.
■ Se viene richiesto l’accesso ad un dato che non e definito localmente,esso viene ricercato in modo ricorsivo nei record di attivazioneprecedenti.
■ Tre tipologie di realizzazione della propagazione.
1. Propagazione in ambito statico. In questo caso l’ambiente nonlocale di una procedura e propagato dal programma che la contienesintatticamente: propagazione di posizione.
2. Propagazione in ambito dinamico. In questo caso l’ambiente nonlocale di una procedura e propagato dal programma chiamante.
3. Nessuna propagazione. L’uso di ambienti non locali e scoraggiatoperche produce effetti collaterali non facilmente prevedibili.
![Page 47: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/47.jpg)
Ambito statico
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 15 / 19
program p;
var a, b, c: integer;
procedure q;
var a, c; integer;
procedure r;
var a: integer;
begin {r} {variabili: a da r; b da p; c da q;
... procedure: q da p; r da q}
end; {r}
begin {q} {variabili: a da q; b da p; c da q;
... procedure: q ed s da p; r da q}
end; {q}
procedure s;
var b: integer;
begin {s} {variabili: a da p; b da s; c da p;
... procedure: q ed s da p}
end; {s}
begin {p} {variabili: a, b, c da p;
... procedure: q, s da p}
end. {p}
![Page 48: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/48.jpg)
Ambito statico (2)
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 16 / 19
Supponendo una sequenza di attivazione (p, s, q, q, r), lo stack diesecuzione ha questa forma:
![Page 49: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/49.jpg)
Ambito statico (2)
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 16 / 19
Supponendo una sequenza di attivazione (p, s, q, q, r), lo stack diesecuzione ha questa forma:
s
r
q
pmemoria temp
IPlocalglobal
global local IP
memoria temp
memoria temp
IPlocalglobal
r
q
q
global local IP
memoria temp
s
p
memoria temp
IPlocalglobal
![Page 50: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/50.jpg)
Ambito dinamico
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 17 / 19
La stessa sequenza di attivazione precedente (p, s, q, q, r), generaallora lo stack di esecuzione:
![Page 51: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/51.jpg)
Ambito dinamico
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Realizzazione
Ambito statico
Ambito statico (2)
Ambito dinamico
Osservazioni
Bibliografia
LP1 – Lezione 3 17 / 19
La stessa sequenza di attivazione precedente (p, s, q, q, r), generaallora lo stack di esecuzione:
s
r
q
pmemoria temp
IPlocalglobal
global local IP
memoria temp
memoria temp
IPlocalglobal
r
q
q
global local IP
memoria temp
s
p
memoria temp
IPlocalglobal
![Page 52: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/52.jpg)
Osservazioni
LP1 – Lezione 3 18 / 19
Nella propagazione in ambito dinamico:
■ il puntatore all’ambiente non locale non e piu necessario;
![Page 53: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/53.jpg)
Osservazioni
LP1 – Lezione 3 18 / 19
Nella propagazione in ambito dinamico:
■ il puntatore all’ambiente non locale non e piu necessario;
■ e praticamente impossibile la determinazione dell’ambiente di esecuzionedi una procedura durante la scrittura del codice sorgente.
![Page 54: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/54.jpg)
Osservazioni
LP1 – Lezione 3 18 / 19
Nella propagazione in ambito dinamico:
■ il puntatore all’ambiente non locale non e piu necessario;
■ e praticamente impossibile la determinazione dell’ambiente di esecuzionedi una procedura durante la scrittura del codice sorgente.
program p;
var a: integer;
procedure q;
begin {vars: a da p o da r; procs: q da p}
...
end;
procedure r;
var
a: integer;
begin {vars: a da r; procs: q, r da p}
...
end;
begin {vars: a da p; procs: q, r, da p}
...
end.
![Page 55: Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1 – Lezione 3 4 / 19 Procedure sono astrazioni di parti di programma in unit`a di](https://reader033.vdocumenti.com/reader033/viewer/2022053004/5f07d4d97e708231d41ef88d/html5/thumbnails/55.jpg)
Bibliografia
Procedure comeastrazioni
Record di attivazione
Propagazione deidata object
Bibliografia
Bibliografia
LP1 – Lezione 3 19 / 19
■ H. L. Dershem. M. J. Jipping. Programming languages:
structures and models. Second edition. Cap. 5, par. 5.1 - 5.3.