Algoritmi, Strutture Dati e Programmi I RECORD -...
Transcript of Algoritmi, Strutture Dati e Programmi I RECORD -...
1
Algoritmi, Strutture Dati e Programmi
UD 3.b: Strutture Dati Statiche – Record
Prof. Alberto Postiglione
Dipartimento di Scienze della Comunicazione
AA 2007-2008
Dipartimento di Scienze della Comunicazione
I RECORD
Dispense, cap. 3.2.2
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 3UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Record
Un Array permette di “raggruppare” variabili elementari, purchè queste siano dello stesso tipo-base (es: array di interi)
Normalmente è possibile che un singolo dato abbia componenti elementari di tipo diverso:
interi, reali …caratteri (‘a’,’b’, …)sequenze di caratteri (dette stringhe, ”gatto ”, ”oggi piove !” …)
A tale aggregazione di componenti di tipo diverso viene dato il nome di record.
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 4UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Record
A cosa possono servire…...A rappresentare ad esempio le schede di una biblioteca
Ogni scheda presenta le seguenti informazioni elementari:
AutoreNome
AutoreCognome
Titolo
Scaffale
Posizione
… altre informazioni …..
Stringa (20)Stringa (20)
Stringa (40)
intero
intero
Campi del record
Costo reale
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 5UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Implementazione di un Record
Sintassi:NomeVarRecord: record
Campo1 : Tipo1;Campo2: Tipo2 ;…CampoN: TipoN ;
end;
Es.: Record per memorizzare una scheda bibliografica Scheda: record
AutoreNome : String [20];AutoreCognome : String [20];Titolo : String [40];Scaffale : Integer;Posizione : Integer;
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 6UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Uso di un Record
Supponiamo che venga definita una variabile Libro come record di tipo scheda:
var Libro : scheda;
Per accedere ai singoli campi di questa variabile, all’interno della zona di codice, si specifica il nome del record seguito dal nome del campo con un punto tra i due identificatori:
Libro.AutoreNome := ”Dante";Libro.AutoreCognome :=”Alighieri";Libro.Titolo :=”La Divina Commedia - Inferno";Libro.Scaffale := 5;Libro.Posizione := 123;Libro.Costo := 14,30;
2
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 7UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Esempio
Programma 7: Legge una scheda bibliografica e la memorizza in un record. Stampa il titolo del libro solo se lo scaffale è il numero 5
type Scheda : recordAutoreNome : String [20];AutoreCognome : String [20];Titolo : String [40];Scaffale : Integer;Posizione : Integer;Costo : Real;
end;var Libro : Scheda;Begin
Read (Libro.AutoreNome, Libro.AutoreCognome, Libro.Titolo, Libro.Scaffale, Libro.Posizione, Libro.Costo);if Libro.Scaffale=5 then write (Libro.Titolo);
end;
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 8UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Esempio
Programma 8: Legge la scheda di una partita e la memorizza in un record. Stampa il risultato solo se la partita è finita in parità
type Scheda : recordSquadraCasa : String [20];SquadraTrasferta: String [20];GolCasa : Integer;GolTrasferta : Integer;Spettatori : Integer;
end;var Partita : Scheda;Begin
Read (Partita.SquadraCasa, Partita.SquadraTrasferta, Partita.GolCasa, Partita.GolTrasferta, Partita.Spettatori);if Partita.GolCasa = Partita.GolTrasferta
then write (Partita.GolCasa, Partita.GolTrasferta);end;
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 9UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Memorizzazione di un Record
città : recordnome: array [0..9] of char; città.nome Z 0longitudine : real; U 1latitudine : real; R 2altitudine: integer; I 3popolazione : integer; G 4
end; O 567
città.nome 8città.longitudine 9città.latitudine città.longitudine 10 = 0 +10città.altitudine 11città.popolazione 12
13Ogni elemento dell'array occupa 1 byte. 14Un numero real occupa 8 bytes 15Un numero integer occupa 4 bytes 16
17città.latitudine 18 = 10 +8
19202122232425
città.altitudine 26 = 18 +8272829
città.popolazione 30 = 26 +4313233
47,23
400
4500000
47,23400
450.000
8,33
Struttura Dati: Memorizzazione della Struttura Dati:
ZURIGO8,33
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 10UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Array di Records
Nel caso di programmi gestionali il caso più frequente èdato quando siamo in presenza di una lista, anche lunga, di variabili di tipo record
La struttura dati da utilizzare è un array di recordsNon contravveniamo ai requisiti dell’array, perché gli elementi costituenti dell’array sono tutti oggetti dello stesso tipo, anche se composti.Si consideri il caso della gestione di un archivio bibliotecario. In questo caso la struttura dati per la memorizzazione dei dati è un array di records, dove ogni record è una variabile simile al record Scheda che abbiamo già incontrato.
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Diparti
mento di S
cienze
della Com
unicaz
ione
Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record)
# 11UD 3.b Prof Alberto Postiglione – Dipartimento di Scienze della Comunicazione – Università Salerno
Modificata il 23/11/2007 Array di Records
Programma 9: Legge 10000 schede di libri e le memorizza in un array di record.
type Scheda : recordAutoreNome : String [20];AutoreCognome : String [20];Titolo : String [40];Scaffale : Integer;Posizione : Integer;Costo : Real;
end;var Libro : Scheda;
Biblioteca : array [1..10000] of Scheda;Begin
i := 1;while i <= 10000 dobegin
Read (Biblioteca[i].AutoreNome, Biblioteca[i].AutoreCognome, Biblioteca[i].Titolo, Biblioteca[i].Scaffale, Biblioteca[i].Posizione, Biblioteca[i].Costo);
i := i +1;end;
end;