C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1
C. Gaibisso Il modello di memoria Programmazione di Calcolatori: Il modello di memoria2 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 X un insieme di locazioni In uso Disponibile x
C. Gaibisso Variabili Programmazione di Calcolatori: Il modello di memoria3 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 lindirizzo di una variabile è lindirizzo della prima di tali locazioni x x x x x x x 3 intero 4 locazioni x un valore intero
C. Gaibisso Stato della memoria Programmazione di Calcolatori: Il modello di memoria4 Molto informalmente: è una foto del contenuto della memoria ad un certo istante Molto meno informalmente: è determinato dallinsieme delle quadruple ( nome var, tipo var, valore var, indirizzo var )
C. Gaibisso Stato della memoria Programmazione di Calcolatori: Il modello di memoria5 x x x x x x x x 3 A B 3A 2B 2 Stato 1 Stato 2 Stato 1 = Stato 2 ? x x x x x x x x 2 A B 2A 2C 2 Stato 1 Stato 2 Stato 1 = Stato 2 ? SI NO
C. Gaibisso Stato della memoria Programmazione di Calcolatori: Il modello di memoria6 x x x x x x x x 2 A B 2A 3B 2 Stato 1 Stato 2 Stato 1 = Stato 2 ? NO x x x x x x x x 2 A B 2A 2.0B 2 Stato 1 Stato 2 Stato 1 = Stato 2 ? NO
C. Gaibisso Stato della memoria Programmazione di Calcolatori: Il modello di memoria7 x x x x x x x x 2 A B 2A 2B 2 Stato 1 Stato 2 Stato 1 = Stato 2 ? x x NO x x x x x x x x Stato 1 Stato 2 Stato 1 = Stato 2 ? NO
C. Gaibisso Definizione di una variabile Programmazione di Calcolatori: Il modello di memoria8 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 variabile Programmazione di Calcolatori: Il modello di memoria9 int y; x x x x x x x y intero Esempio:
C. Gaibisso Rilascio di memoria allocata Programmazione di Calcolatori: Il modello di memoria10 avviene rendendo di nuovo disponibili le celle allocate per la variabile { int A; …. } Esempio: x x x x A Rilascio della memoria:
C. Gaibisso Assegnamento di valori a variabili Programmazione di Calcolatori: Il modello di memoria11 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 nome Programmazione di Calcolatori: Il modello di memoria12 Esempio: B = A+C; x C x x x x x A 3 x x x x x x B 8 -4
C. Gaibisso Accesso allindirizzo di una variabile Programmazione di Calcolatori: Il modello di memoria13 Loperatore &: &nome_variabile Valore restituito: lindirizzo di nome_variabile; B = &A; A 3 x x x x B x x 2839 puntatore
C. Gaibisso Accesso alle variabili tramite indirizzo Programmazione di Calcolatori: Il modello di memoria14 Loperatore *: A=*B+1; 3 *nome_puntatore Effetto: equivale al nome della variabile il cui indirizzo è in nome_puntatore; A 3 x x x x B x x A Esempio:
C. Gaibisso Accesso alle variabili tramite indirizzo Programmazione di Calcolatori: Il modello di memoria15 Esempio: x C x x x x B x 2837 A 3 x x x x 4 *B = A+C; C43 7