Corso di Informatica

Documenti analoghi
Corso di Informatica

Corso sul linguaggio Java

Corso di Informatica

Corso di Informatica

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Corso di Informatica

Corso di Informatica

Gestione di files Motivazioni

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1.

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Corso sul linguaggio Java

Files in C endofile

Corso sul linguaggio Java

Linguaggio C: i file

File binari e file di testo

Corso di Informatica

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

Corso di Informatica

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++

Gestione dei File. Credits Prof. Campi

Laboratorio di Programmazione

Gestione dei file di dati

Gestione dei file in C

ciclo di vita della soluzione (informatica) di un problema

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2)

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Informatica di Base

File file di testo file binari

LA MEMORIA NEL CALCOLATORE

Corso sul linguaggio Java

Corso di Informatica Modulo T3 2 Ambiente locale e globale

Architettura hardware

Corso di Informatica

Scrittura formattata - printf

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

Fasi di creazione di un programma

ciclo di vita della soluzione (informatica) d un problema

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

file fisico file logico

A. Ferrari Java: Stream e File

Streams e disk files

4. I moduli in Access 2000/2003

Sviluppo di programmi

Input/Output. Console e File.

Gestione dei files in linguaggio C. Fondamenti

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

I files in C. A cura del prof. Ghezzi

Corso di Informatica Modulo T1 C1-Sequenza e selezione

Trasformare array paralleli in array di record

Corso di Informatica

Corso di Informatica A.A

Guida allo sviluppo di applicazioni in linguaggio C# 1. ELABORAZIONE FILE DI TESTO : RIPRENDIAMO ALCUNE IDEE... 2

Trasformare array paralleli in array di record

Gestione dei file in C

Trasformare array paralleli in array di record

Operazioni su file di caratteri

Informatica giuridica

La memoria cache. Informatica generale

Corso di Informatica

Unità A1 I file testo

File e puntatori a file

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132

ELEMENTI DI INFORMATICA. Linguaggio C

CAPITOLO 3 - ALGORITMI E CODIFICA

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

GESTIONE DEI FILE IN C

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

Il sistema operativo

I Dati Strutturati ed il Linguaggio C

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

PASCAL - Record. Il linguaggio PASCAL consente l utilizzo dei RECORD

INFORMATICA. L informatica comprende:

Corso di Informatica Modulo T2 1 - Linguaggi e macchine

Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

Verifica su Record e File

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

C3 IL DBMS MICROSOFT ACCESS

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Lezione 16 programmazione in Java

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Strutture dati e loro organizzazione. Gabriella Trucco

Transcript:

Corso di Informatica Modulo T3 A1 - Struttura File 1 Prerequisiti Tecnica della programmazione elementare Sottoprogrammi Tipo di dato Concetti elementari sulle memorie di massa 2 1

Introduzione Nei casi più semplici, un programma comunica con l esterno con le istruzioni Leggi() e Scrivi() (tastiera ed il video), che però trattano dati volatili, ossia dati conservati in modo non permanente. Molti programmi (word processor, applicazioni grafiche, fogli elettronici) ci consentono invece, di registrare dati su un file su disco. Come fa un programma a creare un file su disco? Come fa un programma a leggere o scrivere dati sul disco? In questa Unità introduciamo un nuovo tipo di dato che risolve questo problema: il file sequenziale. 3 Il file sequenziale Mentre, in alcune applicazioni, è sufficiente gestire i dati in memoria centrale, spesso, nell'elaborazione automatica dei dati, è necessario che questi risiedano su memoria di massa. In quali situazioni ciò può essere necessario? conservazione permanente dei dati quantità dei dati da memorizzare riutilizzo dei dati 4 2

Il file sequenziale Si pensi, ad esempio, ai dati riguardanti gli articoli di un magazzino, ognuno dei quali potrebbe avere la seguente struttura: Intero codice Stringa descrizione Reale prezzo Stringa reparto 5 Le operazioni utente Per l utente sarebbero evidenti le seguenti necessità: poter eseguire su ciascun elemento almeno le operazioni di: immissione eliminazione visualizzazione stampa che definiamo operazioni utente; conservare nel tempo le informazioni su disco (tenendo conto che il numero di elementi presenti potrebbe essere anche molto elevato) In tutti i linguaggi di programmazione tradizionali, la memorizzazione permanente dei dati su disco, è consentita da un tipo di dato detto file. 6 3

File logico e record logico In particolare, immaginiamo che gli elementi del file, che chiamiamo record logici, siano disposti uno di seguito all'altro come se fossero su un nastro. Il file sequenziale rappresenta l unità logica (file logico) di memorizzazione dei dati su un supporto (disco, floppy, nastro, ecc). 001A 025B 120A 061B Pinze Presa CE Martello Semenze 3.50 3.50 6.50 1.10 ferramenta elettricità ferramenta minuteria Record 1 Record 2 Record 3 Record 4 Indicatore File sequenziale 7 Osservazioni 1) Il termine file dal punto di vista utente, indica il contenitore di dati sul disco, mentre dal punto di vista del programmatore indica una variabile di programma usata per trattare (leggere o scrivere) flussi di dati su disco. 2) Un file può essere composto da record di qualunque tipo (interi, reali, oggetti) tranne che altri elementi di tipo file. 3) Il file è dotato di un indicatore che, in ogni istante, individua un solo record. 4) Il termine del file è individuato dal carattere EOF (End Of File) 5) Il programma elabora i record logici, ma per svolgere su essi operazioni di lettura o scrittura, deve trasferirli dal disco alla RAM o viceversa facendo uso di una variabile detta variabile buffer. 8 4

File fisico e record fisico Quando un programma elabora dati memorizzati permanentemente su disco, questi risiedono sul disco stesso in aree fisiche, non necessariamente contigue, che compongono il file fisico. Il meccanismo elettronico di lettura/scrittura dell unità a disco, consente di accedere a singole aree su disco, ciascuna delle quali prende il nome di record fisico. Un record fisico può contenere: più record logici; una parte di un record logico. In questo contesto non siamo interessati a questo aspetto che è di competenza del modulo del sistema operativo detto file system. 9 Tipi di file In base al contenuto, possiamo considerare due tipi di file: file testo, sono file che contengono caratteri stampabili ed alcuni caratteri di controllo ( \n, \a, \t ). Sono usati per memorizzare caratteri e stringhe di caratteri. file binari, possono contenere qualunque tipo di dato essendo costituiti semplicemente da una successione di byte. Sono di solito utilizzati per la memorizzazione di dati in diversi formati. 10 5

File testo Un file di testo ha le seguenti caratteristiche: è costituito da caratteri ed organizzato in linee (ciascuna terminata da \n ); risulta leggibili e portabili, ma lento; ogni linea è terminata dal carattere di fine linea newline (carattere \n ); può essere accceduto carattere per carattere o per linee; pertanto l unità logica di riferimento può essere il singolo carattere oppure la singola linea Egregio Sig. Rossi \n Con la presente, La ringraziamo\n per il sollecito pagamento dell abbonamento\n\n Gradisca cordiali saluti. 11 File binari In generale, utilizzare i file binari conviene poiché un valore numerico (es. 125), rispetto alla sua rappresentazione come caratteri (es. 125 ): occupa meno byte (minore spreco di spazio) viene elaborato più rapidamente delle stringhe (maggiore velocità) 12 6

Stream di testo e stream binari Quando si parla dell I/O di un gruppo di dati si usa il termine stream (flusso). Avremo così stream testo e stream binari. In questo modo, possiamo considerare come stream anche i dati provenienti dalla tastiera e quelli che inviamo al video. Nei programmi, la tastiera è associata allo stream standard di input (stdin), mentre il video è associato allo stream standard di output (stdout). 13 Operazioni sui file Vediamo come si può operare da programma con un file formato da elementi rec di un generico tipo TipoRec (Intero, Reale, Carattere, Oggetto, ecc), introducendo la seguente dichiarazione Flusso f; Le operazioni logiche sono: Apertura file Chiusura file Leggi da file Scrivi su file Test di fine file Accesso diretto 14 7

Operazioni sui file Apertura file L apertura di un file è l operazione che: collega il programma con il file su disco contenente i dati crea la variabile buffer indispensabile per lettura/scrittura dei dati. Possiamo avere: apertura in lettura: consente di ispezionare i dati, ma non di scrivere ulteriori dati sul file (usata, ad esempio, per la ricerca di un dato) apertura in scrittura: consente l aggiunta di nuovi dati e può prevedere: l accodamento (aggiunta di ulteriori dati in coda a quelli esistenti) la riscrittura dell intero file (perdendo i dati precedenti) 15 Operazioni sui file Apertura in lettura L istruzione: ApriFileLettura (Flusso f, Stringa nomefile) apre f in modalità di lettura non consente scritture su f posiziona l indicatore sul primo record Questa istruzione va quindi usata per aprire il file al solo scopo di ispezionarne il contenuto (lettura, ricerca di un record, ecc) 16 8

Operazioni sui file Apertura in scrittura L istruzione: ApriFileScrittura (Flusso f, Stringa nomefile, Booleano modo) apre f in modalità scrittura in base a modo si ha: modo = false o non presente: se f esiste, ne annulla tutto il contenuto e lo predispone per una riscrittura; se f non esiste lo crea. Posiziona l indicatore all inizio del file modo = true: se f esiste, aggiunge i nuovi dati al file accodandoli a quelli esistenti; se f non esiste lo crea. Posiziona l indicatore alla fine del file. Con questa istruzione quindi apriamo il file per riscriverlo o per aggiungervi dati. 17 Operazioni sui file Lettura da file L istruzione Leggi (Flusso f, TipoRec rec) acquisisce il dato attualmente puntato dall indicatore e lo pone nella variabile buffer rec (che deve essere di tipo opportuno) avanza l indicatore al record successivo è lecita solo se l indicatore non è alla fine del file 18 9

Operazioni sui file Scrittura su file L istruzione Scrivi (Flusso f, TipoRec rec) scrive il dato contenuto nella variabile buffer rec nel file f nel punto in cui attualmente si trova l indicatore avanza l indicatore alla posizione successiva Ề opportuno sottolineare il fatto che nei file sequenziali i dati possono essere aggiunti soltanto in coda. 19 Operazioni sui file Test di fine file L istruzione EOF (Flusso f) restituisce true se l indicatore si trova alla fine del file. vale true, se f è aperto in scrittura, oppure se aperto in lettura o accodamento, e il file è vuoto. Il valore di EOF(f) influenza: la scrittura (per scrivere in fondo, EOF(f) deve essere true; la lettura (può avvenire solo se EOF(f) è false); 20 10

Operazioni sui file Accesso diretto L istruzione Cerca (Intero reclength, InteroLungo pos-1) posiziona l indicatore sul record in posizione pos, per cui la successiva lettura lo porta in memoria pos indica la posizione cercata e reclength la lunghezza (fissa) di ciascun record. Il calcolo della posizione viene effettuato tenendo conto che l indicatore deve oltrepassare pos-1 record di lunghezza reclength byte ciascuno. 21 Operazioni sui file Chiusura file Al termine della elaborazione è opportuno che venga rilasciato il collegamento tra la variabile file F e l area su disco. Questa operazione prende il nome di chiusura del file ed è svolta dall istruzione seguente: Chiudi (Flusso f) 22 11

Esempi ATTIVITA :Scrivere una funzione Inserisci(Stringa nomefile) che carica in un file f di nome numeri.dat una serie di valori interi n fino all immissione dello 0. Flusso f; void Inserisci (Stringa nomefile) { ApriFileScrittura (f, nomefile, false); Intero n; Leggi (n); Fintantochè (n!=0) fai { Scrivi (f, n); Leggi (n); } Chiudi (f); } Al momento dell istanza, il metodo viene invocato, ad esempio, con Inserisci ( numeri.dat ) 23 Esempi Booleano Esiste (Flusso f, Intero n, Stringa nomefile) { Intero rec; Booleano ret; ApriFileLettura (f, nomefile); Leggi (f, rec); Fintantochè (!EOF(f) && rec!=n) fai Leggi (f, rec); } ATTIVITA :Scrivere una funzione Esiste (f, n, dati.dat ) che restituisce true se l intero n esiste in f. ret =!EOF(f); Chiudi (f); Ritorna ret; La lettura da f prosegue fino al punto in cui l indicatore raggiunge la fine del file, oppure viene trovato il valore n 24 12

Esempi ATTIVITA :Scrivere un algoritmo che inserisca in un file (il cui nome è passato come parametro) una serie di oggetti riguardanti libri (autore, titolo, editore, prezzo). L immissione termina quando autore è una stringa vuota. void Registra (Stringa nomefile) { Libro l=new Libro(); // oggetto di classe Libro Flusso f; ApriFileScrittura (f, nomefile, true); Fintantochè (l.leggiautore!= ) fai { } l.leggititolo(); l.leggieditore(); Scrivi(f, l); } Chiudi (f); Il metodo legge gli attributi di un oggetto e restituisce null se l attributo autore è vuoto. 25 Esempi ATTIVITA :Scrivere un algoritmo che rilegga i dati dal file creato nell attività precedente e li stampi a video. void Elenco (Stringa nomefile) { Libro l; // oggetto di classe Libro Flusso f; ApriFileLettura (f, nomefile); Leggi (f, l); Fintantochè (!EOF(f) ) fai { l.scrivicodice(); l.scrivititolo(); l.scriviautore(); Leggi (f, l); } Chiudi (f); } 26 13

Osservazioni Dai concetti e dagli esempi visti scaturiscono le seguenti osservazioni: l operazione di scrittura su file sequenziale può avvenire soltanto alla fine del file e con il file aperto in scrittura o lettura-scrittura l operazione di lettura da file può avvenire soltanto se il file non è finito (o non vuoto) la struttura di controllo più adatta, in generale, per elaborare i file è la Fintantochè Fai il file è una struttura dinamica, ossia la sua estensione varia durante l esecuzione del programma. Il limite al numero di record registrabili è lo spazio disponibile su disco. 27 Argomenti Il file sequenziale Le operazioni utente File logico e record logico Osservazioni File fisico e record fisico Tipi di file File testo File binari Stream di testo e stream binari Operazioni sui file Apertura file Apertura in lettura Apertura in scrittura Lettura da file Scrittura su file Test di fine file Accesso diretto Chiusura file Esempi Osservazioni 28 14

Altre fonti di informazione G.Callegarin Corso di Informatica 2, ed. CEDAM Gallo, Salerno Informatica 3, ed. Minerva Italica 29 15