organizzazione della memoria e ricorsione - …...sommario: organizzazione della memoria e...

50
Capitolo 10 Organizzazione della memoria e ricorsione c 2005 Pearson Education Italia Capitolo 10 - 1 / 28

Upload: others

Post on 08-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Capitolo 10

Organizzazione dellamemoria e ricorsione

c© 2005 Pearson Education Italia Capitolo 10 - 1 / 28

Page 2: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Sommario: Organizzazione della memoria e ricorsione

1 Invocazione di metodi, passaggio di parametri e rientro

2 Organizzazione della memoria

3 Metodi ricorsivi

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 2 / 28

Page 3: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezioni

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 4: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezioni

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 5: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezioni

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 6: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezioni

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 7: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezioni

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 8: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Intestazione di un metodo

ModificatoriForniscono informazioni relative al metodo e alla sua fruibilita daparte di altri metodi o classi

Tipo restituitoPuo essere un tipo primitivo o un tipo riferimento (riferimento a unoggetto oppure null)

void per indicare che un metodo non restituisce alcun valore

Nome del metodoUn identificatore scelto da chi ha scritto il metodo

Lista degli argomentiSono identificatori scelti da chi ha scritto il metodo. Ogniidentificatore e preceduto dal nome del proprio tipo. I parametri sonoseparati tra loro da virgole

Eccezionic© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 3 / 28

Page 9: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 10: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 11: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 12: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 13: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 14: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Parametri formali e parametri attuali

Parametri formali

Sono gli identificatori indicati nella lista degli argomenti

Sono di fatto variabili locali del metodo

private static int mcd(int a, int b)

Parametri attuali

Sono gli argomenti con cui il metodo viene chiamato

Sono espressioni di tipo compatibile con quelle dei parametri formalicorrispondenti

x = 3 * mcd(x + y, z) + 1;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 5 / 28

Page 15: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Invocazione di un metodo

Passaggio per valoreAl momento della chiamata, i parametri formali vengono allocati inmemoria e inizializzati con il valore dell’argomento corrispondente

EsecuzioneCompiuto il passaggio dei parametri la JVM inizia ad eseguire leistruzioni nel corpo del metodo

RientroL’esecuzione del metodo termina con l’istruzione return:

restituisce il risultatodetermina il ritorno al metodo chiamante

Il tipo dell’espressione che segue return dev’essere assegnabile al tiporestituito dal metodo

Distruzione dell’ambiente di esecuzioneTerminata l’esecuzione viene rilasciata la memoria utilizzata perl’esecuzione del metodo

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 6 / 28

Page 16: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Invocazione di un metodo

Passaggio per valoreAl momento della chiamata, i parametri formali vengono allocati inmemoria e inizializzati con il valore dell’argomento corrispondente

EsecuzioneCompiuto il passaggio dei parametri la JVM inizia ad eseguire leistruzioni nel corpo del metodo

RientroL’esecuzione del metodo termina con l’istruzione return:

restituisce il risultatodetermina il ritorno al metodo chiamante

Il tipo dell’espressione che segue return dev’essere assegnabile al tiporestituito dal metodo

Distruzione dell’ambiente di esecuzioneTerminata l’esecuzione viene rilasciata la memoria utilizzata perl’esecuzione del metodo

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 6 / 28

Page 17: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Invocazione di un metodo

Passaggio per valoreAl momento della chiamata, i parametri formali vengono allocati inmemoria e inizializzati con il valore dell’argomento corrispondente

EsecuzioneCompiuto il passaggio dei parametri la JVM inizia ad eseguire leistruzioni nel corpo del metodo

RientroL’esecuzione del metodo termina con l’istruzione return:

restituisce il risultatodetermina il ritorno al metodo chiamante

Il tipo dell’espressione che segue return dev’essere assegnabile al tiporestituito dal metodo

Distruzione dell’ambiente di esecuzioneTerminata l’esecuzione viene rilasciata la memoria utilizzata perl’esecuzione del metodo

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 6 / 28

Page 18: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Invocazione di un metodo

Passaggio per valoreAl momento della chiamata, i parametri formali vengono allocati inmemoria e inizializzati con il valore dell’argomento corrispondente

EsecuzioneCompiuto il passaggio dei parametri la JVM inizia ad eseguire leistruzioni nel corpo del metodo

RientroL’esecuzione del metodo termina con l’istruzione return:

restituisce il risultatodetermina il ritorno al metodo chiamante

Il tipo dell’espressione che segue return dev’essere assegnabile al tiporestituito dal metodo

Distruzione dell’ambiente di esecuzioneTerminata l’esecuzione viene rilasciata la memoria utilizzata perl’esecuzione del metodo

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 6 / 28

Page 19: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Invocazione di un metodo

Passaggio per valoreAl momento della chiamata, i parametri formali vengono allocati inmemoria e inizializzati con il valore dell’argomento corrispondente

EsecuzioneCompiuto il passaggio dei parametri la JVM inizia ad eseguire leistruzioni nel corpo del metodo

RientroL’esecuzione del metodo termina con l’istruzione return:

restituisce il risultatodetermina il ritorno al metodo chiamante

Il tipo dell’espressione che segue return dev’essere assegnabile al tiporestituito dal metodo

Distruzione dell’ambiente di esecuzioneTerminata l’esecuzione viene rilasciata la memoria utilizzata perl’esecuzione del metodo

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 6 / 28

Page 20: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 21: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 22: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 23: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 24: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 25: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Memoria utilizzata dalla JVM

Memoria statica

Utilizzata per i campi statici delle classi

Allocata al momento in cui le classi vengono caricate per l’esecuzione

La quantita di memoria statica necessaria per una classe puo esserestabilita a priori esaminando esclusivamente il testo della classe

Stack

Per contenere i dati usati dai singoli metodi che vengono man manoeseguiti

La sua struttura evolve dinamicamente durante l’esecuzione in basealle chiamate dei metodi

Heap

Per memorizzare gli oggetti creati dinamicamente durante l’esecuzione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 7 / 28

Page 26: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Gestione dello heap

Gli oggetti vengono creati dinamicamente richiamando i costruttoriall’interno di espressioni new

Quando un oggetto non e piu accessibile l’area di memoria utilizzatadall’oggetto puo essere recuperata e riutilizzata successivamente peraltri oggetti

Garbage collector

recupera la memoria occupata da oggetti non piu referenziati

riorganizza lo heap rimediando ai problemi di allocazione dovuti allaframmentazione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 8 / 28

Page 27: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Gestione dello heap

Gli oggetti vengono creati dinamicamente richiamando i costruttoriall’interno di espressioni new

Quando un oggetto non e piu accessibile l’area di memoria utilizzatadall’oggetto puo essere recuperata e riutilizzata successivamente peraltri oggetti

Garbage collector

recupera la memoria occupata da oggetti non piu referenziati

riorganizza lo heap rimediando ai problemi di allocazione dovuti allaframmentazione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 8 / 28

Page 28: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Gestione dello heap

Gli oggetti vengono creati dinamicamente richiamando i costruttoriall’interno di espressioni new

Quando un oggetto non e piu accessibile l’area di memoria utilizzatadall’oggetto puo essere recuperata e riutilizzata successivamente peraltri oggetti

Garbage collector

recupera la memoria occupata da oggetti non piu referenziati

riorganizza lo heap rimediando ai problemi di allocazione dovuti allaframmentazione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 8 / 28

Page 29: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Gestione dello heap

Gli oggetti vengono creati dinamicamente richiamando i costruttoriall’interno di espressioni new

Quando un oggetto non e piu accessibile l’area di memoria utilizzatadall’oggetto puo essere recuperata e riutilizzata successivamente peraltri oggetti

Garbage collector

recupera la memoria occupata da oggetti non piu referenziati

riorganizza lo heap rimediando ai problemi di allocazione dovuti allaframmentazione

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 8 / 28

Page 30: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Lo stack

Prende il nome dalla struttura dati utilizzata per gestirla, lo stack (pila).

Struttura LIFO: e possibile aggiungere o eliminare elementi solo incima alla pila

Memoria stack

E una pila di record di attivazione

Ogni record di attivazione e un’area di memoria locale contenente idati relativi a ciascun metodo attivato

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 9 / 28

Page 31: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Lo stack

Prende il nome dalla struttura dati utilizzata per gestirla, lo stack (pila).

Struttura LIFO: e possibile aggiungere o eliminare elementi solo incima alla pila

Memoria stack

E una pila di record di attivazione

Ogni record di attivazione e un’area di memoria locale contenente idati relativi a ciascun metodo attivato

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 9 / 28

Page 32: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Lo stack

Prende il nome dalla struttura dati utilizzata per gestirla, lo stack (pila).

Struttura LIFO: e possibile aggiungere o eliminare elementi solo incima alla pila

Memoria stack

E una pila di record di attivazione

Ogni record di attivazione e un’area di memoria locale contenente idati relativi a ciascun metodo attivato

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 9 / 28

Page 33: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Lo stack

Prende il nome dalla struttura dati utilizzata per gestirla, lo stack (pila).

Struttura LIFO: e possibile aggiungere o eliminare elementi solo incima alla pila

Memoria stack

E una pila di record di attivazione

Ogni record di attivazione e un’area di memoria locale contenente idati relativi a ciascun metodo attivato

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 9 / 28

Page 34: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 10 / 28

Page 35: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Struttura del record di attivazione

Informazioni di controllo

per memorizzare i risultati dei metodi richiamati

per effettuare correttamente il rientro dai metodi richiamati

Dati del metodo

variabili locali

parametri formaliinizializzati con gli argomenti specificati al momento della chiamata

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 11 / 28

Page 36: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Struttura del record di attivazione

Informazioni di controllo

per memorizzare i risultati dei metodi richiamati

per effettuare correttamente il rientro dai metodi richiamati

Dati del metodo

variabili locali

parametri formaliinizializzati con gli argomenti specificati al momento della chiamata

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 11 / 28

Page 37: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Struttura del record di attivazione

Informazioni di controllo

per memorizzare i risultati dei metodi richiamati

per effettuare correttamente il rientro dai metodi richiamati

Dati del metodo

variabili locali

parametri formaliinizializzati con gli argomenti specificati al momento della chiamata

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 11 / 28

Page 38: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

import prog.io.*;

public class Doppio {public static void main(String[] args) {ConsoleInputManager in = new ConsoleInputManager();ConsoleOutputManager out = new ConsoleOutputManager();

int x = in.readInt("Inserire un intero ");int y = doppio(x); //1int z = doppio(y); //2out.println(y);out.println(z);

}

public static int doppio(int n) {int k = 2 * n;return k;

}}

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 13 / 28

Page 39: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

invocazione del main

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 15 / 28

Page 40: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

int x = in.readInt("Inserire un intero ");

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 17 / 28

Page 41: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

int y = doppio(x); //1

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 19 / 28

Page 42: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

int k = 2 * n;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 21 / 28

Page 43: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

return k;

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 23 / 28

Page 44: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Esempio

int y = doppio(x); //1

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 25 / 28

Page 45: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Ricorsione

Un’entita e detta ricorsiva se e definita in termini di se stessa.

Definizione di funzioni matematiche

n! =

{1 se n = 0n · (n − 1)! altrimenti

Grammatiche

espressione ::= variabile | costante |espressione + espressione |espressione - espressione |espressione * espressione |espressione / espressione |(espressione)

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 26 / 28

Page 46: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Ricorsione

Un’entita e detta ricorsiva se e definita in termini di se stessa.

Definizione di funzioni matematiche

n! =

{1 se n = 0n · (n − 1)! altrimenti

Grammatiche

espressione ::= variabile | costante |espressione + espressione |espressione - espressione |espressione * espressione |espressione / espressione |(espressione)

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 26 / 28

Page 47: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Ricorsione

Un’entita e detta ricorsiva se e definita in termini di se stessa.

Definizione di funzioni matematiche

n! =

{1 se n = 0n · (n − 1)! altrimenti

Grammatiche

espressione ::= variabile | costante |espressione + espressione |espressione - espressione |espressione * espressione |espressione / espressione |(espressione)

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 26 / 28

Page 48: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Metodi ricorsivi

Un metodo ricorsivo e un metodo che richiama se stesso.

Esempio

n! =

{1 se n = 0n · (n − 1)! altrimenti

public static int fattoriale(int n) {if (n == 0)return 1;

elsereturn n * fattoriale(n - 1);

}

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 28 / 28

Page 49: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Metodi ricorsivi

Un metodo ricorsivo e un metodo che richiama se stesso.

Esempio

n! =

{1 se n = 0n · (n − 1)! altrimenti

public static int fattoriale(int n) {if (n == 0)return 1;

elsereturn n * fattoriale(n - 1);

}

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 28 / 28

Page 50: Organizzazione della memoria e ricorsione - …...Sommario: Organizzazione della memoria e ricorsione 1 Invocazione di metodi, passaggio di parametri e rientro 2 Organizzazione della

Metodi ricorsivi

Un metodo ricorsivo e un metodo che richiama se stesso.

Esempio

n! =

{1 se n = 0n · (n − 1)! altrimenti

public static int fattoriale(int n) {if (n == 0)return 1;

elsereturn n * fattoriale(n - 1);

}

c© 2005 Pearson Education Italia Capitolo 10 - Organizzazione della memoria e ricorsione 28 / 28