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

Documenti analoghi
2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

Uno stream rappresenta un flusso di dati da cui e' possibile

Gestione di files Motivazioni

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Gestione dei file di dati

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

ingresso/uscita da file

Laboratorio di Informatica

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

File binari e file di testo

ingresso/uscita da file

Corso di Programmazione ad oggetti

Input/output in C e in C++

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

1. Soluzione esercizio XYZ SpA

Files in C++ Fondamenti di Informatica. R. Basili. a.a

A. Veneziani Files di record

Input / Output attraverso stream. I/O in C vs. I/O in C++

4. Accesso diretto per gli archivi con record a lunghezza costante

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Laboratorio di Programmazione Gruppo III, Ml-ZZ. Alberto Finzi

Fondamenti di Informatica II 24. Gestione I/O e File in C++

Istruzioni semplici e strutturate

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

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

Input/Output. Console e File.

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd

Operazioni su file di caratteri

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

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

I files in C. A cura del prof. Ghezzi

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale.

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

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

file fisico file logico

File e puntatori a file

Introduzione alla programmazione in linguaggio C

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

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

I/O FILE. Sommario I/O FILE. I/O FILE LETTURA DA FILE DI TESTO oggetto di tipo ifstream. I/O FILE: lettura e scrittura su file di testo

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

La programmazione Orientata agli Oggetti: OOP

Corso sul linguaggio Java

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde

Introduzione al C. Stream e disk file

Input/Output. Input/Output. Lezione 16

Lezione 6 Introduzione al C++ Mauro Piccolo

Corso di Fondamenti di Informatica

Gestione dei File C. Generalità

Trasformare array paralleli in array di record

Lettura e scrittura di file di dati input/output

Esercizi. I File ed il C

Trasformare array paralleli in array di record

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

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Linguaggio C: i file

Lezione 16. Il Software di base

Introduzione al funzionamento di un calcolatore elettronico

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Corso di Fondamenti di Informatica (M-Z)

Lezione 16 programmazione in Java

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Primi passi col linguaggio C

Laboratorio di programmazione

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

Componenti di un sistema operativo

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

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

Le basi del linguaggio Java

Gestione dei File. dischi nastri cd

INFORMATICA. L informatica comprende:

Programma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Introduzione alla programmazione strutturata

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Capitolo 5 -- Stevens

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

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

Programmazione Orientata agli Oggetti in Linguaggio Java

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

Programmazione Procedurale in Linguaggio C++

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

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

Fondamenti di Informatica

Lezione 8. Sottoprogrammi

Transcript:

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

Librerie di I/O per la gestione dei FILE Il C++ consente di utilizzare le librerie standard di I/O del C mette anche a disposizione un nuovo sistema di gestione delle operazioni di I/O più adatto alla programmazione orientata agli oggetti Il questa lezione esamineremo brevemente alcuni dei meccanismi di lettura e scrittura su file di testo in C++ In una prossima lezione studieremo più nel dettaglio il sistema di I/O in C++

Il concetto di Stream Il sistema di I/O del C e del C++ si basa sul concetto di canale (stream) inteso come mezzo attraverso cui fluiscono le informazioni provenienti o inviate dai diversi dispositivi hardware (le unità esterne) In altre parole lo stream è un flusso (sorgente o destinazione) di dati che può essere associato ad un disco o ad altre periferiche Questi canali possono essere connessi a dispositivi fisici diversi mantenendo inalterato il proprio comportamento un flusso di informazioni, per mezzo delle stesse modalità, può essere mandato in uscita su un video, su una stampante o su un file ed analogamente un flusso di informazioni può provenire adottando le stesse modalità dalla tastiera o da un file presente nella memoria di massa

Stream di dati...ha lo scopo di rendere la scrittura dei programmi indipendenti dal particolare dispositivo impiegato; semplificare i problemi di portabilità dei programmi stessi. Lo stream consente di definire un interfaccia semplice (astrazione di un dispositivo generico) e uniforme verso l utente.

Stream di testo e stream binari La libreria (sia quella C che quella C++) supporta sia stream di testo che stream binari Uno stream di testo è una sequenza di linee, ciascuna formata da caratteri e chiusa dal carattere \n Uno stream binario è una sequenza di byte che registrano dati interni garantendo che una scrittura ed una successiva lettura sullo stesso sistema producano gli stessi caratteri

Connessione di uno stream ad un dispositivo Uno stream viene connesso ad un dispositivo di I/O tramite una operazione di apertura La connessione viene interrotta con una operazione di chiusura

Stream standard di I/O In C++ un programma comunica con l'esterno mediante i seguenti stream standard: stdin standard input (di default associato alla tastiera) stdout standard output (di default associato al video) stderr standard output per i messaggi (associato al video) che rispettivamente rappresentano il canale di immissione dati (tastiera), quello di uscita dei risultati (video) e quello in cui vengono riportati eventuali situazioni di errore causate dall esecuzione di un comando (di default il video) I canali standard di I/O sono collegati di default rispettivamente agli oggetti globali di I/O cin, cout e cerr Questi oggetti vengono messi automaticamente a disposizione all avvio dell esecuzione di un programma, il sistema provvede automaticamente all apertura ed alla chiusura dello stream ad essi associato

Operatori di flusso Utilizzando gli oggetti cin, cout e cerr è possibile effettuare le operazioni di I/O per mezzo degli operatori di flusso << (inserimento) i cui operandi di sinistra sono rispettivamente cout oppure cerr (che ha proprietà identiche a quelle di cout); >> (estrazione) il cui operando di sinistra è cin;

Gli stream standard cin e cout Le operazioni di I/O primarie avvengono in particolare a mezzo di due variabili standard: cin di tipo istream, che rappresenta la tastiera; cout di tipo ostream, che rappresenta il video....tali variabili, all atto dell esecuzione di ciascun programma, risultano predefinite e i file corrispondenti risultano aperti. 9

Gli stream standard cin e cout cin>>ch; ch (memory register) cout<<ch; Z 10

File Per memorizzare un dato su un'unità di memoria di massa viene utilizzata una variabile di tipo stream chiamata file Come già detto uno stream viene connesso al dispositivo tramite una operazione di apertura, la connessione viene interrotta chiudendo lo stream

File I file posso essere di due tipi: FILE DI TESTO: è una sequenza di caratteri, che durante il trasferimento può subire anche delle conversioni a seconda delle necessità dell'ambiente di destinazione. FILE BINARI: è una sequenza di byte Per leggere o scrivere su un file è necessario: 1. Includere nel programma C++ la libreria <fstream> 2. Dichiarare una variabile di tipo file fstream; Effettuare il collegamento tra la variabile dichiarata di tipo file e lo specifico flusso da cui vengono acquisite/scritte le informazioni, tale operazione prende il nome di apertura del file e viene effettuata attivando la funzione open. Durante questa operazione è necessario specificare la forma di accesso che si vuole utilizzare: lettura, scrittura o entrambe. 3. Al termine delle operazioni sul file, lo stream dovrà essere chiuso; questa operazione implica la distruzione del nome del file stesso.

Operazioni di I/O verso le memorie di massa...costituiscono una generalizzazione di quelle primarie La libreria I/O del C++ mette a disposizione tre classi: ifstream per l input; ofstream per l output; fstream per operazioni di aggiornamento; Le classi ifstream e ofstream sono derivate da istream e ostream e aggiungono alle operazioni da esse definite anche le operazioni su file ad accesso diretto. 13

Apertura di un file Richiede un collegamento tra l unità fisica in oggetto dell operazione e la variabile di tipo stream definita nel programma. Attraverso la funzione open <tipo file> nomeinterno; nomeinterno.open (nomeesterno [,<specificatori>]);

Chiusura di un file E complementare a quella di apertura e pone termine al collegamento tra la variabile di tipo file definita nel programma e il file disponibile sulle memorie di massa. Attraverso la funzione close; <tipo file> nomeinterno; nomeinterno.close();

Specifica delle operazioni da compiere Informazioni relative al tipo di operazioni sul file ios::in ios::out ios::in ios::out ios::out ios::app ios::ate Input Output Input & Output Output con append Dopo open si sposta a fine file

Specifica delle operazioni da compiere Informazioni relative alla struttura interna del file ios::binary Apertura in mod. binaria Informazioni relative alla creazione del file ios::noreplace ios::nocreate ios::trunc in scrittura apre un file nuovo, se esiste si ha un errore in scrittura apre un file esistente, se non esiste si ha un errore se il file esiste ne cancella i contenuti

Apertura per sola scrittura...è la più delicata perchè può produrre la cancellazione indesiderata di un file esistente. A tale scopo si può operare come segue: se il file da aprire è un file nuovo si usa ios::noreplace ; se il file deve essere scritto solo in append, si usa ios::out ios::app ; se il file da aprire può essere cancellato si usa la modalità ios::out ; se il file da aprire è un file già esistente che deve essere aggiornato, si usa la modalità ios::in ios::out.

File di Testo L apertura di un file avviene per default in modalità testo Su un file di tipo testo è possibile scrivere e leggere stream di caratteri utilizzando i consueti operatori di flusso (<< e >>)

Esempio (scrittura) void scrivinominativo(const char * nomefile, stringa nome, stringa cognome, stringa nascita) { char * NOMEFILE=new char[strlen(nomefile)+1]; strcpy(nomefile, nomefile); ofstream file; file.open(nomefile, ios::nocreate ios::app); if (!file) { file.open(nomefile, ios::noreplace ios::out); file << "*********ANAGRAFE**********" << endl; } file << nome << "\t" << cognome << "\t" << nascita << "\n"; file.close(); }

Esempio (lettura) bool legginominativo(const char * nomefile) { char * NOMEFILE=new char[strlen(nomefile)+1]; strcpy(nomefile, nomefile); stringa intestazione, NOME, COGNOME, DATA; //ATTENZIONE DEFINIRE tipo stringa ifstream file; file.open(nomefile); if (!file) return false; else { file >> intestazione; cout << intestazione; while(!file.eof()) { file >> NOME >> COGNOME >> DATA; cout << "\n" << NOME << "\t" << COGNOME << "\t" << DATA; } file.close(); return true; }