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