Algoritmi, Strutture Dati e Programmi I RECORD -...

2
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 Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record) # 3 UD 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. Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record) # 4 UD 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 Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record) # 5 UD 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; Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Dipartimento di Scienze della Comunicazione Algoritmi, Strutture Dati e Programmi: Strutture Dati Statiche (Record) # 6 UD 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;

Transcript of Algoritmi, Strutture Dati e Programmi I RECORD -...

Page 1: Algoritmi, Strutture Dati e Programmi I RECORD - dsc.unisa.itdsc.unisa.it/alberto/Alberto/07-08/Lucidi/6 DIA/3.b - Strutture... · Algoritmi, Strutture Dati e Programmi: ... Un Array

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;

Page 2: Algoritmi, Strutture Dati e Programmi I RECORD - dsc.unisa.itdsc.unisa.it/alberto/Alberto/07-08/Lucidi/6 DIA/3.b - Strutture... · Algoritmi, Strutture Dati e Programmi: ... Un Array

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;