carlo gaibisso bruno martino programmazione e laboratorio di …cgaibisso/corso 2016/lezioni/l04...

16
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

Upload: others

Post on 22-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

  • 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