Carlo Gaibisso Bruno Martino Programmazione e Laboratorio di …cgaibisso/Corso 2016/Lezioni/L04...
Transcript of Carlo Gaibisso Bruno Martino Programmazione e Laboratorio di …cgaibisso/Corso 2016/Lezioni/L04...
-
Carlo Gaibisso
Bruno Martino
Programmazione e Laboratorio
di Programmazione
Lezione IV
Il modello di memoria
Programmazione e Laboratorio di Programmazione – Il modello di memoria 1
-
Carlo Gaibisso
Bruno Martino
Il modello di memoria
Programmazione e Laboratorio di Programmazione – 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
-
Carlo Gaibisso
Bruno Martino
Variabili
Programmazione e Laboratorio di Programmazione – 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 dei
valori memorizzabili
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
x
x
x
x
3
intero4 locazioni x un valore intero
-
Carlo Gaibisso
Bruno Martino
Stato della memoria
Programmazione e Laboratorio di Programmazione – 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)
-
Carlo Gaibisso
Bruno Martino
Stato della memoria
Programmazione e Laboratorio di Programmazione – Il modello di memoria 5
x
x
x
x
x
x
x
x
3A
B
3A
2B2
Stato1 Stato2
Stato1 = Stato2?
x
x
x
x
x
x
x
x
2A
B
2A
2C2
Stato1 Stato2
Stato1 = Stato2?
SI
NO
-
Carlo Gaibisso
Bruno Martino
Stato della memoria
Programmazione e Laboratorio di Programmazione – Il modello di memoria 6
x
x
x
x
x
x
x
x
2A
B
2A
3B2
Stato1 Stato2
Stato1 = Stato2?
NO
x
x
x
x
x
x
x
x
2A
B
2A
2.0B2
Stato1 Stato2
Stato1 = Stato2?
NO
-
Carlo Gaibisso
Bruno Martino
Stato della memoria
Programmazione e Laboratorio di Programmazione – Il modello di memoria 7
x
x
x
x
x
x
x
x
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
x
x
x
x
Stato1 Stato2
Stato1 = Stato2?
NO
-
Carlo Gaibisso
Bruno Martino
Definizione di una variabile
Programmazione e Laboratorio di Programmazione – 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
-
Carlo Gaibisso
Bruno Martino
Definizione di una variabile
Programmazione e Laboratorio di Programmazione – Il modello di memoria 9
int y;
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
x
x
x
x
y
intero
• Esempio:
-
Carlo Gaibisso
Bruno Martino
Rilascio di memoria allocata
Programmazione e Laboratorio di Programmazione – Il modello di memoria 10
avviene rendendo di nuovo disponibili le
celle allocate per la variabile
{
{
int A;
….
}
}
• Esempio: 28342835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
x
A
• Rilascio della memoria:
-
Carlo Gaibisso
Bruno Martino
Assegnamento di valori a variabili
Programmazione e Laboratorio di Programmazione – 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
-
Carlo Gaibisso
Bruno Martino
Accesso alle variabili tramite nome
Programmazione e Laboratorio di Programmazione – Il modello di memoria 12
• Esempio:
B = A+C;
-4 3
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cx
x
x
x
x
A
3x
x
x
x
x
x
B8
-4
-1
-
Carlo Gaibisso
Bruno Martino
Accesso all’indirizzo di una variabile
Programmazione e Laboratorio di Programmazione – 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
A3x
x
x
x
Bx
x2839
puntatore
-
Carlo Gaibisso
Bruno Martino
Definizione di un puntatore
Programmazione e Laboratorio di Programmazione – Il modello di memoria 14
• Definizione di un puntatore:
• Modifiche allo stato della memoria:
tipo_variabile_riferita* nome_puntatore
1. si riserva il numero di locazioni contigue in
memoria necessario a memorizzare un indirizzo
2. si associa il nome nome_variabile alle locazioni
riservate
3. si associa alla variabile il tipo "indirizzo di una
variabile di tipo tipo_variabile_riferita"
-
Carlo Gaibisso
Bruno Martino
Accesso alle variabili tramite indirizzo
Programmazione e Laboratorio di Programmazione – Il modello di memoria 15
• 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
A3x
x
x
x
Bx
x2839
4
A
• Esempio:
-
Carlo Gaibisso
Bruno Martino
Accesso alle variabili tramite indirizzo
Programmazione e Laboratorio di Programmazione – Il modello di memoria 16
• Esempio:2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cx
x
x
x
Bx2837
A
3
x
x
x
x
4
*B = A+C;
C 4 37