Programmazione di Calcolatori
description
Transcript of Programmazione di Calcolatori
G. Amodeo,C. Gaibisso Programmazione di Programmazione di
CalcolatoriCalcolatori
Lezione VIIIIl modello di memoria
Programmazione di Calcolatori: Il modello di memoria 1
G. Amodeo,C. Gaibisso
Il modello di memoriaIl modello di memoria
Programmazione di Calcolatori: Il modello di memoria 2
● ogni locazione memorizza una sequenza di 8 bit
● ogni locazione è univocamente identificata da un valore numerico detto indirizzo
● ad ogni locazione è associato un flag che indica se la locazione è correntemente in uso o è invece disponibile
283428352836283728382839284028412842284328442855
10100000 X
● un insieme di locazioni
In usoDisponibile
x
G. Amodeo,C. Gaibisso VariabiliVariabili
Programmazione di Calcolatori: Il modello di memoria 3
● una variabile è un insieme di locazioni contigue in memoria
● il numero delle locazioni allocate per una variabile è funzione del tipo della variabile
● ogni variabile è identificata da una stringa alfa-numerica detta nome della variabile
● ogni variabile memorizza un valore
● il tipo della variabile è il tipo del valore memorizzato
A● l’indirizzo di una variabile è
l’indirizzo della prima di tali locazioni
283428352836283728382839284028412842284328442855
x
x
x
xxxx
3
intero
4
G. Amodeo,C. Gaibisso Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 4
• Molto informalmente:è una foto del contenuto della memoria ad un certo istante
è definito dall’insieme delle locazioni di memoria in uso, dall’insieme delle variabili, dal valore e dalle locazioni ad esse assegnate
• Molto meno informalmente:
2834283528362837283828392840
2834283528362837283828392840
x
x
x
x
xx
xx
Stato1 Stato2
Stato1 = Stato2?
NO
G. Amodeo,C. Gaibisso Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 5
xx
xx
xx
xx
3A
B
3A
2B2
Stato1 Stato2
Stato1 = Stato2?
xx
xx
xx
xx
2A
B
2A
2C2
Stato1 Stato2
Stato1 = Stato2?
SI
NO
G. Amodeo,C. Gaibisso Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 6
xx
xx
xx
xx
2A
B
2A
3B2
Stato1 Stato2
Stato1 = Stato2?
NO
xx
xx
xx
xx
2A
B
2A
2.0B2
Stato1 Stato2
Stato1 = Stato2?
NO
G. Amodeo,C. Gaibisso Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 7
xx
xx
xx
xx
2A
B
2A
2B2
Stato1 Stato2
Stato1 = Stato2?
x
x
NO
G. Amodeo,C. Gaibisso Definizione di una variabileDefinizione di una variabile
Programmazione di Calcolatori: Il modello di memoria 8
• Definizione di una variabile:
• Modifiche allo stato della memoria:tipo_variabile nome_variabile
1. si riserva il numero di locazioni contigue in memoria necessario a memorizzare un valore di tipo tipo_variabile;
2. si associa il nome nome_variabile alle locazioni riservate;
3. si associa alla variabile il tipo tipo_variabile.
G. Amodeo,C. Gaibisso Definizione di una variabileDefinizione di una variabile
Programmazione di Calcolatori: Il modello di memoria 9
int y;
283428352836283728382839284028412842284328442855
x
x
x
xxxx
y
intero
• Esempio:
G. Amodeo,C. Gaibisso Rilascio di memoria allocataRilascio di memoria allocata
Programmazione di Calcolatori: Il modello di memoria 10
avviene rendendo di nuovo disponibili le celle allocate per la variabile
{{int A;….}
}
• Esempio: 283428352836283728382839284028412842284328442855
xxxx
A
• Rilascio della memoria:
G. Amodeo,C. Gaibisso Assegnamento di valori a Assegnamento di valori a
variabilivariabili
Programmazione di Calcolatori: Il modello di memoria 11
• Assegnamento:
nome_variabile = espressione
Attenzione:il tipo di nome_variabile e il tipo di espressione “devono” essere gli
stessi
• Modifiche allo stato della memoria:
1. si valuta il valore di espressione;2. si sostituisce tale valore al valore
memorizzato da nome_variabile.
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
nomenome
Programmazione di Calcolatori: Il modello di memoria 12
• Esempio:
B = A+C;-4 3
283428352836283728382839284028412842284328442855
x
Cxxxx
x
A3
xxxx
xxB8
-4
-1
G. Amodeo,C. Gaibisso Accesso all’indirizzo di una Accesso all’indirizzo di una
variabilevariabile
Programmazione di Calcolatori: Il modello di memoria 13
• L’operatore &:&nome_variabile
• Valore restituito:l’indirizzo di nome_variabile;
B = &A;2839
283428352836283728382839284028412842284328442855
A3xxxx
Bxx2839
puntatore
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
indirizzoindirizzo
Programmazione di Calcolatori: Il modello di memoria 14
• L’operatore *:
A=*B+1;
3
*nome_puntatore • Effetto:
equivale al nome della variabile il cui indirizzo è in nome_puntatore;
283428352836283728382839284028412842284328442855
A3xxxx
Bxx2839
4
A
• Esempio:
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
indirizzoindirizzo
Programmazione di Calcolatori: Il modello di memoria 15
• Esempio:283428352836283728382839284028412842284328442855
x
Cxxxx
Bx2837
A
3xxxx
4
*B = A+C;C 4 3 7