Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Record e Insiemi Dott. Pasquale Lops [email protected] Corso di Programmazione - DIB 1/14 Record • Registra in una n-pla di dati le principali caratteristiche di un’entità – Struttura non lineare – A dimensione fissa • Insieme di dati non omogenei – Operazioni consentite: • Lettura (selezione) – Reperimento del valore di un elemento • Scrittura (sostituzione) – Sostituzione del valore di un elemento con un nuovo valore Corso di Programmazione - DIB 2/14 Record • Numero fissato di componenti – Tipi potenzialmente diversi – Ciascuna esplicitamente denotata ed indirizzata tramite un selettore (campo) • Paragonabile ad una variabile ordinaria • Denotato da un identificatore • Definito dalla descrizione, per ogni singola componente, di: – Tipo • Limiti di variabilità del valore che può assumere – Identificatore per accedervi Corso di Programmazione - DIB 3/14 1 Record record identificatore : tipo; … identificatore : tipo • Accesso a qualunque componente – Specificandone il campo • Nome della variabile record seguito dall’identificatore del campo • Un elemento di un record può essere a sua volta di un tipo strutturato Corso di Programmazione - DIB 4/14 Record Rappresentazione • Componenti allocate – In posizioni di memoria contigue – Nell’ordine in cui sono specificate nella dichiarazione • Occupazione di memoria complessiva – Somma dell’occupazione di ciascun campo • Note in fase di compilazione • Posizione di memoria di un campo – Somma della posizione iniziale del record e della somma delle dimensioni dei campi precedenti Corso di Programmazione - DIB 5/14 Record • Variabile strutturata a molte componenti – Aggregazioni di dati – Tipi potenzialmente differenti – Accesso alle componenti tramite nome • Astrazione delle modalità di memorizzazione dei dati usate a livello di linguaggio macchina Corso di Programmazione - DIB 6/14 2 Record Esempi • Data – Giorno, Mese, Anno • Scheda bibliografica – Autore, Titolo, Prezzo, Anno, Prestito • Indirizzo – Via, N. civico, CAP, Città, Provincia • Scheda anagrafica – Nome, Cognome, Data di nascita, Stato civile Corso di Programmazione - DIB 7/14 Array vs. Record • Dimensione fissa • Tipi omogenei • Sequenza – Ordine • Dimensione fissa • Tipi diversi – Più generale • Insieme • Accesso diretto • Accesso diretto – Indice • Uso di espressioni – Flessibilità – Identificatore di campo Corso di Programmazione - DIB 8/14 Array & Record • Spesso si ha a che fare con strutture formate da array di record – Sequenza di schede • Simili fra loro • Distinguibili in base ad un sottoinsieme dei campi che le formano – Chiave – Esempi • Schedario di dipendenti (Chiave: Codice Fiscale) • Orario Ferroviario (Chiave: Numero Treno) Corso di Programmazione - DIB 9/14 3 Tipo Insieme • Insieme potenza di un insieme dato tipo I: (a,b,c) ins: insieme di I • • • • • • • • – Insieme di tutti i sottoinsiemi costruibili a partire da quello dato • È pensabile poter definire un tipo corrispondente a questa struttura { } insieme vuoto {a} {b} {c} {a,b} {a,c} {b,c} {a,b,c} =I Corso di Programmazione - DIB 10/14 Insiemi Operazioni Disponibili • Assegnamento • Appartenenza – Definizione di un insieme • Intersezione – Insieme degli elementi comuni a due insiemi dati • Unione – Insieme degli elementi che si trovano in almeno uno di due insiemi dati • Complemento relativo – Insieme degli elementi che appartengono ad un insieme dato ma non all’altro – Un elemento si trova in un insieme dato? • Eguaglianza – Due insiemi dati contengono gli stessi elementi? • Inclusione – Tutti gli elementi di un insieme dato si trovano anche nell’altro? • Dimensione – Numero di elementi di un insieme dato Corso di Programmazione - DIB 11/14 Insiemi • L’insieme di partenza deve essere numerabile – Un insieme può essere costruito solo su tipi definiti per enumerazione • Semplici • NON reali – È possibile pensare ad operazioni come l’iterazione eseguita su tutti gli elementi dell’insieme • do varying x in I … Corso di Programmazione - DIB 12/14 4 Insiemi Rappresentazione • Tramite array di valori logici – i-esima componente dell’array rappresenta la presenza (1) o meno (0) nell’insieme dell’i-esimo valore del tipo base • Insieme vuoto rappresentato da tutti bit 0 – Dimensione dell’array pari alla cardinalità del tipo base • Spesso limitata dalla dimensione della parola di memoria (n bit) – 2n possibili configurazioni binarie – 2n possibili sottoinsiemi • Operazioni su insiemi implementate tramite operatori logici, traslazione e maschere Corso di Programmazione - DIB 13/14 Set Rappresentazione • Esempio tipo base: {0…9}; ins: insieme di base; ins := [1, 4, 8, 9] – ins stringa di 10 bit |0|1|0|0|1|0|0|0|1|1| 0 1 2 3 4 5 6 7 8 9 Corso di Programmazione - DIB 14/14 5