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