c. gaibisso programmazione di calcolatori lezione viii il modello di memoria programmazione di...
TRANSCRIPT
C. Gaibisso Programmazione di Programmazione di CalcolatoriCalcolatori
Lezione VIIIIl modello di memoria
Programmazione di Calcolatori: Il modello di memoria 1
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
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
10100000 X
● un insieme di locazioni
In uso
Disponibile
x
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
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
xxxx
3
intero 4 locazioni x un valore
intero
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
• Molto meno informalmente:è determinato dall’insieme delle
quadruple
(nomevar, tipovar, valorevar,
indirizzovar)
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
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
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
2834
2835
2836
2837
2838
2839
2840
2834
2835
2836
2837
2838
2839
2840
x
x
x
x
xx
xx
Stato1 Stato2
Stato1 = Stato2?
NO
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.
C. Gaibisso
Definizione di una variabileDefinizione di una variabile
Programmazione di Calcolatori: Il modello di memoria 9
int y;
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
xxxx
y
intero
• Esempio:
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: 2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
xxxx
A
• Rilascio della memoria:
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.
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
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cxxxx
x
A
3xxxx
xxB8
-4
-1
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
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
A3xxxx
Bxx2839
puntatore
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;
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
A3xxxx
Bxx2839
4
A
• Esempio:
C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite indirizzoindirizzo
Programmazione di Calcolatori: Il modello di memoria 15
• Esempio:2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cxxxx
Bx2837
A
3
xxxx
4
*B = A+C;C 4 3 7