Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1...

55
LP1 – Lezione 3 1 / 19 Linguaggi di Programmazione I – Lezione 3 Prof. Marcello Sette mailto://[email protected] http://sette.dnsalias.org 16 marzo 2010

Transcript of Linguaggi di Programmazione I – Lezione 3wpage.unina.it/.../didattica/linguaggi/Lezione03.pdfLP1...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.