File
I record
I record



Il record è una struttura dati che contiene informazioni di
tipo diverso o eterogenee.
Fino a questo momento abbiamo trattato variabili di
memoria, strutture dati (vettori e matrici, liste, pile code
ect.) atte a contenere dati di tipo omogeneo.
Ovviamente le strutture dati che contengono dati di tipo
omogeneo non ci permettono di risolvere al meglio i
molteplici problemi che dobbiamo trattare e
automatizzare.
Tracciato record



La struttura dati che serve a contenere dati di un oggetto
complesso e detta Record
in inglese record significa registrazione.
Per rappresentare un record accorre stabilire , quali sono
le unità elementari che lo compongono , i campi e le
caratteristiche, si definisce così il tracciato record.
Per ogni campo si dovrà indicare :
 Nome
 Tipo

Il tracciato record ACQUISTI (ipotizzando un record sugli
acquisti di merci ) sarà graficamente rappresentato :
Nome record : acquisti
CODICE_
ART
DESCRIZ
QUANT
PU
AL
ALFA(5)
ALFA(30)
NUM
NUM
NUM
Un record viene definito in VB come una struttura dati e la
descrizione deve iniziare con la parola TYPE.
PUBLIC TYPE ACQUISTI
CODICE_ART as string *5
DESCRIZ as string*30
QUANT as integer
PU as currency
AL as byte
END TYPE
PUBLIC MERCI AS ACQUISTI
poiché col TYPE definiamo solo la struttura dati è
necessario definire una variabile il cui tipo è la
struttura dati
Altro metodo per dichiarare il record
TYPE ACQUISTI
CODICE_ART as string *5
DESCRIZ as string*30
QUANT as integer
PU as currency
AL as byte
END TYPE
PUBLIC MERCI AS ACQUISTI
Dichiarazione in VB


in VISUAL BASIC la descrizione di una struttura dati di tipo
record deve essere dichiarata a livello di modulo.
All’interno del programma Visual Basic i campi del record
verranno identificati con l’identificatore della variabile di tipo
record e con l’identificatore di campo separato da un punto :
ES.
MERCI.CODICE_ART, MERCI.DESCRIZ
Quando occorre accedere a più campi dello stesso record per
inserire valori nei campi o per visualizzarne il contenuto, è utile
usare l’istruzione WITH
Esempio di codice
WITH MERCI
.CODICE_ART
.DESCRIZ
.QUANT
.PU
.AL
END WITH
I file di dati
Archiviazione dei dati
I file



Il termine file stà ad indicare tutto ciò che può essere
registrato su memoria di massa.
abbiamo lavorato con variabili di memoria, strutture dati
(vettori , matrici, array di record ) i cui dati risiedevano
in memoria centrale e non potevano essere riutilizzati per
successive elaborazioni.
Le informazioni all’interno dell’archivio sono
organizzate in RECORD (o struttura dati) e
all’interno del record l’informazione è suddivisa in
CAMPI ed ancora i campi possono essere suddivisi in
SOTTOCAMPI (o unità elementari del record).


Possiamo dire che il FILE è un’insieme di record legati
da un nesso logico, nel senso di informazioni organizzate
in un archivio.
Il file è quindi una struttura di dati che realizza
concretamente nella memoria di massa la struttura di
tabella definite in M.C. (memoria centrale)
File fisici e file logici

Il concetto di file può essere analizzato a due
livelli diversi :

Logico

fisico
File logico
Inizio del file
1° record
Fine del file
2° record
3° record
n° record
A livello software del programmatore, un file logico è una sequenza di
record (registrazioni) logici
File fisico
A livello hardware delle memorie di massa, un file fisico è una sequenza
Di bit memorizzati su supporti di memoria tramite opportune
Tecnologie (ottiche, magnetiche, ecc…)
Il programmatore

Deve occuparsi dell’aspetto software

Tutte le procedure per passare dal file logico a
un archivio fisico su disco, sono inserite in modo
automatico dal compilatore linker

Che richiama opportune procedure e funzioni del
S.O. , esattamente del FILE SYSTEM
File ad organizzazione sequenziali

L’organizzazione sequenziale.
Questa organizzazione è usata per archivi di
piccole dimensioni.
 Nei file sequenziali i dati vengono inseriti uno
di seguito all’altro (sequenziale)
 il ritrovamento dei record avviene allo stesso
modo , scandendo i record dal primo fino alla
fine del file.

Operazioni fondamentali

Le operazioni fondamentali da fare sugli archivi
sono :
Creazione /inserimento (scrittura sul file )
 Lettura di record (questa operazione precede quella
di modifica)
 Modifica

Riscrittura
 Cancellazione (logica)

Operazioni accessorie

Le operazioni accessorie possono essere svariate
a seconda delle esigenze della realtà che si vuole
automatizzare :
Stampe di diverso tipo
 Visualizzazioni di diverso tipo
 Varie elaborazioni

Operazione di apertura




stabilisce il collegamento fra la MC (memoria centrale)
e il file registrato su disco o memoria di massa.
In MC al momento dell’apertura del file viene riservata
una zona BUFFER utilizzata per le operazioni di
input/output
nella tabella dei descrittori dei file sono memorizzate le
informazioni per accedere ai blocchi fisici del disco che
contengono i dati.
L’operazione di apertura deve precedere qualsiasi altra
operazione
Apertura del file in VB

In VB l’istruzione per l’apertura del flusso è la seguente :
 OPEN
percorso/nomefile FOR
(output/input/append) AS numerofile [len =
dimensione buffer]
I
parametri inseriti fra parentesi quadre sono
opzionali
 ES.
open “a:\Ivdp\acquisti.dat” for output as #1
L’operazione di apertura si è detto precede tutte le altre, quando il
file Viene aperto si verificano le seguenti azioni :


Viene controllato se il file esiste, in caso contrario se ne
crea uno nuovo nel percorso specificato
viene creato un’ area Buffer in MC .



quando l’area Buffer è satura i record vengono
fisicamente scaricati nel disco è cioè all’interno
dell’archivio.
Viene creato un puntatore di file impostato all’inizio del
file sia per la modalità di apertura



Il Buffer è un’area di memoria temporanea dove vengono
memorizzati i record
INPUT
OUTPUT
tranne per la modalità APPEND dove il puntatore
punta alla fine del file.






Il puntatore viene sempre aggiornato per indicare la sua
posizione corrente nel file
Al file viene assegnato un numero di file (# 1) per
potervi fare riferimento.
A ciascun file usato nel progetto deve poter essere
assegnato un numero di file univoco.
Dopo che il file è stato chiuso, quel numero può essere
assegnato a un altro file .
I numeri di file ammessi sono da 1 a 511.
Con l’apertura si definisce anche il tipo di
organizzazione dell’archivio.
Operazione di chiusura del file


Con l’operazione di chiusura del file si chiude il
collegamento tra la MC ( esattamente dell’area
Buffer e si libera lo spazio occupato) e la
memoria di massa che contiene il file di dati.
L’istruzione usata è la : CLOSE numerofile (o
l’elenco di più file da chiudere separati dalla
virgola)

ES: close #1
Operazioni
Operazioni fondamentali
Operazione di scrittura


Con questa operazione trasferiamo sulla memoria di
massa i dati presenti in MC.
Le modalità di apertura del file per la scrittura sono 2 :
OUTPUT
 APPEND

Apertura in modalità OUTPUT



Con la modalità output viene creato un nuovo file di
dati.
Se il file esisteva i dati precedentemente inseriti vengono
persi e vengono inseriti i nuovi record.
Questo tipo di apertura si dice distrugga il contenuto
precedente del file, pertanto viene generalmente utilizzato
per azzerare l’archivio.
Modalità di apertura in Append





Con la modalità append i record vengono inseriti in coda a
quelli esistenti.
il puntatore si trova nella fine del file se nell’archivio sono
presenti altri record
si trova all’inizio del file se stiamo facendo il primo inserimento
Questa modalità di apertura ci permette di creare si l’archivio ma
anche di fare nuovi inserimenti.
Con i tipi di apertura (output/append) utili per la scrittura di
record attiviamo il collegamento fra MC e memoria di massa
le istruzione che permettono il trasferimento
dei dati dalla MC alla memoria di massa sono
 Write
 Print
L’istruzione print è la seguente :
 PRINT # numerofile, dato
 numerofile identifica il file su cui scrivere attraverso il
numero assegnato con l’istruzione open
 dato indica il nome contenente il campo da registrare
 ES. riferendoci al record definito in precedenza
possiamo scrivere la seguente istruzione :


print #1,merci.codice_art, merci.descriz, merci.quant,
merci.pu, merci.al
Istruzione write

L’istruzione write (quella che si consiglia di usare )
è la seguente :

Write #numerofile, campo1,campo2 , campo3 ect.
1) numerofile identifica il file su cui scrivere attraverso il
numero assegnato con l’istruzione open
 2) campo1,campo2,campo3 indica il nome contenente il
campo da registrare



ES. riferendoci al record definito in precedenza
possiamo scrivere la seguente istruzione write :
write #1,merci.codice, merci.descriz, merci.quant,
merci.pu, merci.al
Lettura dei dati


Per la lettura dei dati registrati all’ interno dell’archivio
utilizziamo le seguenti istruzioni :
line input #

In fase di lettura i record registrati tramite print # vengono
letti dal file tramite line input #
ES: line input # numerofile, campi

input #

In fase di lettura i record registrati tramite write # vengono
letti dal file tramite input #
ES: input # 1, campo1,campo2,campo3 ect..




Sappiano che nell’accesso sequenziale i dati (record)
vengono registrati uno di seguito all’altro
la lettura avverrà nello stesso ordine di inserimento fino
alla fine del file.
Occorre inserire nell’operazione di lettura un controllo
sulla fine del file , tale controllo viene svolto dalla
funzione EOF() (end of file)
che ha come argomento il numero del file, assume il
valore TRUE appena viene raggiunta la fine del file. Il
ciclo di lettura deve essere implementato tramite la
struttura iterativa o DO WHILE o LOOP UNTIL.
Diagrammi di flusso
È un metodo grafico per rappresentare e schematizzare il
processo di elaborazione
 Per l’operazione di scrittura dati o record
(tastiera)
Dati in input
(Memoria
centrale)
Programma in
elaborazione
monitor
stampante
Archivio dati

Per l’operazione di lettura record
(tastiera)
Dati in input
(Memoria
centrale)
Programma in
elaborazione
monitor
stampante
Archivio dati

Per l’operazione di riscrittura o modifica dei
record
(Memori centrale)
(tastiera)
Dati in input
Programma in
elaborazione
monitor
stampante
Archivio dati
Scarica

I record - E. Mattei