caratteri, immagini, suoni, ecc.

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "caratteri, immagini, suoni, ecc."

Transcript

1 Il linguaggio C Input e output I flussi di I/O L uso di buffer Apertura e chiusura di file Lettura e scrittura di dati La selezione di un metodo di I/O I/O non bufferizzato L accesso diretto a file Input e output 1 2 Introduzione Input / Output La gestione dell I/O su file è uno degli aspetti più complessi dei linguaggi di programmazione, perché strettamente correlato con le particolari modalità di accesso a file ed alle periferiche dettate dal sistema operativo difficoltà nella progettazione di servizi di I/O portabili Storicamente, l apposita libreria di run time del C e la libreria di I/O di UNIX erano parzialmente sovrapposte: tuttavia, la libreria C tratta l I/O bufferizzato, contrariamente alla libreria UNIX Le funzioni ANSI di I/O sono tutte bufferizzate (con possibilità di modifica della dimensione del buffer) Le funzioni ANSI di I/O operano inoltre una distinzione tra accesso a file in modalità binaria o testuale; in ambiente UNIX la distinzione è poco significativa poiché UNIX tratta file binari e file di testo alla stessa stregua come sequenze di byte (in altri sistemi operativi, tale distinzione è invece importante) Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L informazione può essere di ogni tipo: caratteri, immagini, suoni, ecc. 3 4

2 Stream Input / Output Stream di Input / Output Per acquisire dati, un programma apre uno stream (o flusso) associato alla sorgente di informazione (file, socket, memoria, ecc.) e legge l informazione sequenzialmente da esso. In modo analogo, un programma può inviare verso una destinazione esterna dei dati aprendo uno stream associato alla destinazione e scrivendovi in modo sequenziale i dati. Indipendentemente dall origine e dalla destinazione dei dati e dal loro tipo, gli algoritmi per leggere e scrivere sequenzialmente dei dati sono gli stessi. 5 6 Input / Output Lettura Apertura dello stream Finché e presente informazione lettura dell informazione Chiusura dello stream Scrittura Apertura dello stream Finché e presente informazione scrittura dell informazione Chiusura dello stream I flussi di I/O 1 Il linguaggio C non distingue tra periferiche e file su disco: in entrambi i casi le operazioni di I/O sono realizzate attraverso flussi o stream di I/O associati a file o periferiche Un flusso di I/O è una sequenza ordinata di byte: la lettura e la scrittura di un file o di una periferica implicano la lettura/scrittura di dati da/su un flusso Sorgente C Flusso File 7 I flussi di I/O: i programmi C accedono ai dati memorizzati in file attraverso array monodimensionali di caratteri, detti flussi di I/O 8

3 I flussi di I/O 2 Per eseguire l I/O, è necessario associare un flusso ad un file o a una periferica occorre dichiarare un puntatore alla struttura FILE La struttura FILE, definita in stdio.h, è costituita da campi che contengono informazioni quali il nome del file, la modalità di accesso, il puntatore al prossimo carattere nel flusso I campi della struttura FILE, istanziati all atto dell apertura di un flusso (o in fase di utilizzo), sono dipendenti dall implementazione e differiscono per sistemi operativi diversi FILE *fopen(char *filename, char *mode); I flussi di I/O 3 Le strutture FILE forniscono al sistema operativo le informazioni necessarie per la gestione dei file: l unico meccanismo di accesso ad un flusso è il puntatore alla struttura FILE, detto puntatore a file Il puntatore a file deve essere dichiarato nel programma, contiene l identificatore del flusso restituito da una chiamata alla fopen(), e viene utilizzato per leggere, scrivere e chiudere il flusso Ciascun programma può aprire più flussi simultaneamente, nel rispetto dei limiti imposti dalla particolare implementazione 9 10 I flussi di I/O 4 I flussi standard Uno dei campi della struttura FILE è un indicatore di posizione nel file, che punta al successivo byte da leggere o scrivere: a fronte di operazioni di lettura/scrittura, il sistema operativo modifica conseguentemente l indicatore di posizione L indicatore di posizione del file non può essere manipolato direttamente (in maniera portabile), ma può essere letto e modificato tramite funzioni di libreria, permettendo accessi al flusso non sequenziali Attenzione: il puntatore a file identifica un flusso aperto, che è connesso ad un file o a una periferica, l indicatore di posizione nel file identifica uno specifico byte all interno di un flusso Esistono tre flussi standard, che vengono aperti automaticamente per ogni programma: stdin, stdout, stderr I flussi standard sono connessi al terminale, per default, ma molti sistemi operativi ne permettono la redirezione (ad es., è possibile inviare messaggi di errore ad un file per effettuare diagnostica) Le funzioni printf() e scanf() utilizzano i flussi standard di I/O; possono essere utilizzate anche per fare I/O su/da file, ridirigendo stdin e stdout a file per mezzo della funzione freopen() Tuttavia, esistono le funzioni di libreria apposite, fprintf() e fscanf(), che permettono di specificare il flusso su cui operare 11 12

4 I formati testo e binario L uso del buffer 1 I dati possono essere acceduti in modalità testo o binaria: Un flusso testuale è composto da una sequenza di linee, concluse da newline (sistemi operativi diversi possono memorizzare linee con formati diversi, utilizzando un carattere differente di terminazione linea) I flussi standard sono testuali In formato binario il compilatore non effettua alcuna interpretazione dei byte: i bit sono letti e scritti come un flusso continuo I flussi binari sono utilizzati quando è fondamentale preservare l esatto contenuto del file Confrontate con la memoria centrale, le unità di memoria di massa sono estremamente lente: nei programmi, il tempo richiesto per accedere alle periferiche eccede largamente il tempo impiegato dalla CPU per i calcoli effettivi È di fondamentale importanza ridurre il numero di operazioni fisiche di lettura/scrittura, mediante tecniche di bufferizzazione Un buffer è un area dei memoria in cui i dati sono memorizzati temporaneamente, prima di essere inviati a destinazione Mediante l uso di buffer, il sistema operativo può limitare il numero di accessi alla memoria di massa Tutti i sistemi operativi utilizzano buffer per leggere/scrivere su unità di I/O: l accesso avviene con granularità di blocco, con blocchi di dimensione 512/4096 byte L uso del buffer 2 L uso del buffer 3 Le librerie di run time del C contengono un ulteriore livello di bufferizzazione che può assumere due forme distinte: bufferizzazione a linee e bufferizzazione a blocchi Nella bufferizzazione a linee, il sistema immagazzina i caratteri fino a quando si incontra un newline (o il buffer è pieno), inviando l intera linea al sistema operativo (ciò che accade per l inserimento da tastiera) Nella bufferizzazione a blocchi, il sistema immagazzina i caratteri fino a riempire un blocco, trasferendolo quindi al sistema operativo Tutti i flussi di I/O a file utilizzano una bufferizzazione a blocchi, i flussi riferiti a terminale sono dipendenti dal sistema operativo, ma sono o non bufferizzati o bufferizzati a linee 15 Le librerie standard di I/O del C comprendono un gestore di buffer che mantiene il buffer in memoria il più a lungo possibile: se si accede alla stessa porzione di un flusso più volte, si ha alta probabilità che il flusso sia stato mantenuto nella memoria centrale (si possono verificare problemi di accesso concorrente, gestibili via sistema operativo, se il file è condiviso da più processi) Sia nel caso di bufferizzazione a righe che a blocchi, è possibile richiedere esplicitamente al sistema operativo di forzare l invio del buffer a destinazione in un momento qualsiasi, per mezzo della funzione fflush() Il C consente di personalizzare il meccanismo di bufferizzazione (modificando le dimensioni del buffer) fino ad eliminarla, ponendo la dimensione del buffer a zero 16

5 Il file header <stdio.h> Per utilizzare le funzioni di I/O è necessario includere il file header stdio.h che contiene: Le dichiarazioni dei prototipi di tutte le funzioni di I/O La dichiarazione della struttura FILE Le macro costanti, come stdin, stdout, stderr, EOF EOF corrisponde al valore restituito dalle funzioni di I/O in corrispondenza dell identificatore di fine file Nota: La definizione di NULL, per l ANSI C, è invece contenuta nel file stddef.h #ifndef NULL #define NULL (void *) 0 #endif 17 Apertura e chiusura di file 1 Prima di poter accedere al contenuto di un file, è necessario aprirlo tramite la funzione fopen(), che prevede due parametri: il nome del file e la modalità di accesso Esistono due insiemi di modalità di accesso, per i flussi testuali e per i flussi binari r w a r+ w+ a+ Apre un file testuale esistente in lettura, posizionandosi all inizio del file; se il file non esiste, la funzione ritornerà il codice di errore NULL Crea un nuovo file testuale e lo apre in scrittura, posizionandosi all inizio del file; se il file esiste, i dati precedenti vengono eliminati Apre un file testuale esistente in modalità append; la scrittura può avvenire solo alla fine del file; se il file non esiste verrà creato automaticamente, in caso contrario il contenuto del file preesistente verrà mantenuto Apre un file testuale esistente in lettura e scrittura, posizionandosi all inizio del file; se il file non esiste, la funzione ritornerà il codice di errore NULL Crea un nuovo file testuale e lo apre in lettura e scrittura Apre un file testuale esistente o ne apre uno nuovo in modalità append; la lettura può avvenire in una posizione qualsiasi del file, la scrittura solo alla fine 18 Apertura e chiusura di file 2 Apertura e chiusura di file 3 Le modalità binarie differiscono per l aggiunta di una b (es., rb ) La funzione fopen() restituisce un puntatore a file, utilizzabile per accedere successivamente al file aperto Proprietà di file e flussi rispetto alle modalità di apertura della fopen() Il file deve esistere prima dell apertura * * r w a r+ w+ a+ Il file preesistente viene reinizializzato * * Possibilità di lettura del flusso * * * * Possibilità di scrittura sul flusso * * * * * Possibilità di scrittura solo alla fine * * 19 FILE *open_test() /* restituisce un puntatore ad una struttura FILE */ FILE *fp; Esempio: Funzione che apre un file testuale, denominato test, con accesso in lettura Note La funzione fprintf() è analoga alla printf(), eccettuato un parametro aggiuntivo, che identifica il flusso di uscita fp = fopen( test, r ); if (fp == NULL) fprintf(stderr, Errore nell apertura del file test\n ); return fp; La funzione open_test() è poco flessibile, perché permette l apertura del solo file test e soltanto per accessi in lettura 20

6 Apertura e chiusura di file 4 Apertura e chiusura di file 5 FILE *open_file(file_name, access_mode) char *file_name, *access_mode; FILE *fp; if ((fp = fopen(file_name, access_mode)) == NULL) fprintf(stderr, Errore nell apertura del file %s \ con modalità di accesso %s\n, file_name, access_mode); return fp; La funzione open_file() è equivalente alla fopen(), a meno della notifica di errore se il file non può essere aperto Per chiudere un file viene utilizzata la funzione fclose(), con argomento il puntatore alla struttura FILE da chiudere La chiusura del file provoca il rilascio della struttura FILE, per la successiva allocazione ad altri file La chiusura del file forza anche la scrittura del contenuto del buffer associato al flusso Dato che tutti i sistemi operativi stabiliscono un numero massimo di flussi aperti contemporaneamente, è buona norma chiudere i file quando se ne è conclusa l elaborazione Tutti i flussi aperti vengono comunque chiusi dal sistema operativo quando il programma termina correttamente (nel caso di terminazione anomala, il comportamento non è standardizzato) Lettura e scrittura per caratteri 1 Esistono quattro modalità per la lettura/scrittura di caratteri da un flusso getc(): macro che legge un carattere da un flusso fgetc(): analoga a getc(), ma realizzata come una funzione putc(): macro che scrive un carattere su un flusso fputc(): analoga a putc(), ma realizzata come una funzione Le macro getc() e putc(), in quanto tali, sono normalmente molto più veloci delle analoghe funzioni Tuttavia, se un parametro attuale contiene operatori che implicano effetti collaterali, fgetc() ed fputc() sono preferibili Per le altre macro di libreria, lo standard ANSI prevede che gli argomenti possano comparire una sola volta nel corpo della macro, per evitare effetti collaterali 23 Lettura e scrittura per caratteri 2 Esempio: Funzione che copia il contenuto di un file in un altro #define FAIL 0 #define SUCCESS 1 int copy_file(infile, outfile) char *infile, *outfile; FILE *fp1, *fp2; char c; if ((fp1 = fopen(infile, r )) == NULL) if ((fp2 = fopen(outfile, w )) == NULL) while ((c = getc(fp1))) putc(c, fp2); fclose(fp2); return SUCCESS; Note Entrambi i file vengono acceduti in modalità binaria La macro getc() legge il prossimo carattere dal flusso specificato e sposta l indicatore di posizione del file avanti di un elemento ad ogni chiamata In modalità binaria, non è possibile interpretare il valore di ritorno della getc() per decretare la fine del file: feof() invece non presenta ambiguità 24

7 Lettura e scrittura per linee 1 Lettura e scrittura per linee 2 Esistono due funzioni di I/O orientate alle linee, fgets() ed fputs() Il prototipo per la funzione fgets() è char *fgets(char *s, int n, FILE *stream); Gli argomenti hanno il seguente significato: s : puntatore al primo elemento dell array in cui vengono memorizzati i caratteri letti n : numero massimo dei caratteri da leggere (compreso \0 ) stream : puntatore al flusso da cui leggere La funzione fgets() legge caratteri fino ad un newline, la fine del file o il numero massimo specificato di caratteri, inserendo automaticamente un carattere NULL dopo l ultimo carattere scritto nell array; restituisce NULL se incontra la fine del file, altrimenti restituisce il primo argomento char *fputs(char *s, FILE *stream); La funzione fputs() scrive l array identificato dal primo argomento nel flusso identificato dal secondo argomento char *gets(char *s); La differenza fondamentale fra gets() (che legge da stdin) ed fgets() è che la seconda inserisce nell array (prima del \0 finale) anche il carattere di newline che delimita la linea Inoltre fgets() permette la specifica del numero massimo dei caratteri da leggere, mentre gets() procede sempre fino ad un terminatore (newline o EOF) Lettura e scrittura per linee 3 Lettura e scrittura per blocchi 1 #define FAIL 0 #define SUCCESS 1 #define LINESIZE 100 int copy_file(infile, outfile) char *infile, *outfile; FILE *fp1, *fp2; char line[linesize]; if ((fp1 = fopen(infile, r )) == NULL) if ((fp2 = fopen(outfile, w )) == NULL) while (fgets(line, LINESIZE, fp1)!= NULL) fputs(line, fp2); fclose(fp2); return SUCCESS; Note Il file è aperto in modalità testuale per accedere ai dati a livello di linea, altrimenti fgets() potrebbe operare in modo scorretto, cercando caratteri di newline non presenti nel file (il terminatore di linea può essere diverso per sistemi operativi diversi) fgets(), invece, si adegua alle caratteristiche del sistema operativo specifico La funzione copy_file() per linee è più lenta della versione per caratteri, poiché fgets() ed fputs() sono realizzate per mezzo di fgetc() ed fputc() (meno efficienti delle analoghe macro) 27 Un blocco può essere immaginato come un array: quando si legge o si scrive un blocco è necessario specificare il numero di elementi del blocco e la dimensione di ognuno di essi Le due funzioni orientate alla gestione dei blocchi sono fread() e fwrite() Il prototipo per la funzione fread() è int fread(void *ptr, int size, int nmemb, FILE *stream); Gli argomenti hanno il seguente significato: ptr : puntatore ad un array in cui vengono memorizzati i dati size : dimensione di ogni elemento dell array nmemb : numero di elementi da leggere stream : puntatore a file 28

8 Lettura e scrittura per blocchi 2 Lettura e scrittura per blocchi 3 La funzione fread() restituisce il numero di elementi effettivamente letti, che dovrebbe coincidere con il terzo argomento, a meno di errori o di condizioni di fine file La funzione fwrite() ha gli stessi argomenti, ma scrive nel flusso gli elementi contenuti nell array La funzione copy_file() può essere realizzata anche con granularità di blocco: La condizione di fine file è controllata confrontando il numero degli elementi letti, restituito da fread(), con il valore specificato nella lista degli argomenti: se sono diversi si ha una condizione di fine file o di errore La funzione ferror() viene utilizzata per stabilire quale condizione si è verificata 29 #define FAIL 0 #define SUCCESS 1 #define BLOCKSIZE 512 typedef char DATA; int copy_file(infile, outfile) char *infile, *outfile; FILE *fp1, *fp2; DATA block[blocksize]; int num_read; if ((fp1 = fopen(infile, rb )) == NULL) printf( Errore nell apertura del file %s \ in input\n, infile); if ((fp2 = fopen(outfile, wb )) == NULL) printf( Errore nell apertura del file %s \ in output\n, outfile); while ((num_read = fread(block, sizeof(data), BLOCKSIZE, fp1)) == BLOCKSIZE) fwrite(block, sizeof(data), num_read, fp2); fwrite(block, sizeof(data), num_read, fp2); if (ferror(fp1)) printf( Errore in lettura del file %s\n, infile); fclose(fp2); fclose(fp2); return SUCCESS; 30 La selezione di un metodo di I/O 1 Le macro putc() e getc() sono le più veloci, ma la maggior parte dei sistemi operativi è in grado di realizzare operazioni di I/O su blocchi ancora più efficienti (ad es., read() e write() in UNIX) Talvolta occorre privilegiare la semplicità all efficienza: fgets() e fputs(), ad esempio, sono lente, ma particolarmente adatte nei casi in cui sia necessario analizzare linee Funzione che conta il numero di linee di un file #define MAX_LINE_SIZE 120 int lines_in_file(fp) FILE *fp; char buf[max_line_size]; int line_num = 0; rewind(fp); /* sposta l indicatore di posizione all inizio del file */ while (fgets(buf, MAX_LINE_SIZE, fp)!= NULL) line_num++; return line_num; La selezione di un metodo di I/O 2 Ultimo, ma non meno importante, fattore da considerare nella scelta di un metodo di I/O è la portabilità, fondamentale non tanto nella scelta del tipo di I/O (granularità a caratteri, linee o blocchi), ma nella scelta della modalità testo o binaria Se il file contiene dati testuali (codice sorgente o documenti), la modalità testo e l accesso per linee sono da privilegiare Se i dati sono numerici e non sono strutturati per linee, è preferibile la modalità binaria, con accesso per caratteri o per blocchi (codice eseguibile) 31 32

9 I/O non bufferizzato 1 I/O non bufferizzato 2 Le librerie di run time del C consentono di modificare la dimensione del buffer: tale possibilità deve essere utilizzata con attenzione, dato che la dimensione del buffer dovrebbe essere ottima per il particolare sistema operativo Talvolta, è tuttavia necessario eliminare completamente la bufferizzazione, tipicamente quando si vogliono elaborare immediatamente i dati di input Per eliminare la bufferizzazione ci si può avvalere delle funzioni setbuf() e setvbuf() La funzione setbuf() richiede due parametri: un puntatore a file, ed un puntatore ad un array di caratteri da utilizzare come nuovo buffer; se tale puntatore è nullo, la bufferizzazione viene eliminata; setbuf() non restituisce valori setbuf(stdin, NULL); La funzione setvbuf() richiede due parametri aggiuntivi, che permettono di specificare la tipologia di bufferizzazione (per linee, per blocchi, o assente) e la dimensione dell array da utilizzare come buffer La tipologia di bufferizzazione va specificata mediante uno dei tre simboli definiti in stdio.h: _IOFBF : bufferizzazione per blocchi _IOLBF : bufferizzazione per linee _IONBF : bufferizzazione assente La funzione restituisce un valore diverso da zero se completata correttamente, zero se non è in grado di soddisfare la richiesta setvbuf(stdin, NULL, _IONBF, 0); L accesso diretto a file 1 In C, le funzioni per l accesso diretto a file sono fseek() e ftell() La funzione fseek() sposta l indicatore di posizione del file a un carattere specificato nel flusso Il prototipo della fseek() è int fseek(file *stream, long int offset, int whence) dove: stream : puntatore a file offset : numero di caratteri di spostamento whence : posizione di partenza da cui calcolare lo spostamento L argomento whence può assumere uno dei tre seguenti valori, definiti in stdio.h SEEK_SET : inizio del file SEEK_CUR : posizione corrente dell indicatore SEEK_END : fine del file 35 L accesso diretto a file 2 Esempio: L istruzione stat = fseek(fp, 10, SEEK_SET); sposta l indicatore di posizione del file al carattere 10 del flusso (l undicesimo), che sarà il prossimo elemento letto o scritto La fseek() restituisce zero se la richiesta è corretta, un valore diverso da zero altrimenti Esempio: L istruzione stat = fseek(fp, 1, SEEK_END); non è lecita se fp è aperto in sola lettura, perché sposta l indicatore oltre la fine del file Per flussi binari, lo spostamento può essere un qualsiasi numero intero che non sposti l indicatore al di fuori del file; per flussi testuali, deve essere zero o un valore restituito dalla ftell() 36

10 L accesso diretto a file 3 Esempio: dimensione del file La funzione ftell() richiede, come unico argomento, un puntatore a file e restituisce la posizione corrente dell indicatore di posizione nel file La posizione restituita da ftell() si intende relativa all inizio del file per flussi binari rappresenta il numero di caratteri dall inizio del file alla posizione corrente per flussi testuali rappresenta un valore dipendente dall implementazione, significativo solo se utilizzato come parametro per la fseek() cur_pos = ftell(fp); if (search(string) == FAIL) fseek(fp, cur_pos, SEEK_set); Se la ricerca di una certa stringa nel file fallisce, l indicatore di posizione nel file viene riportato al valore originale 37 /* Determinazione del numero di caratteri di un file con fseek e ftell */ main(int argc, char **argv) FILE *fp; long n; if (argc<2) printf( File non specificato\n ); else fp=fopen(argv[1], r ); /* apertura del file */ if (fp!= NULL) fseek(fp, 0, SEEK_END); /* puntatore alla fine del file */ n=ftell(fp); /* lettura posizione del puntatore */ fclose(fp); printf( Dimensione del file %ld\n, n); else printf( Errore: il file %s non esiste, argv[1]); 38 Lettura e scrittura di dati La gestione degli errori Su un file aperto è possibile utilizzare il puntatore a file per svolgere operazioni di lettura e scrittura Le operazioni di accesso al file possono essere effettuate su oggetti di granularità diversa, in particolare a livello di carattere linea blocco Qualsiasi sia la granularità, è impossibile leggere da un flusso e quindi scrivere sullo stesso flusso senza che fra le due operazioni venga effettuata una chiamata a fseek(), rewind() o fflush() Le funzioni fseek(), rewind() e fflush() sono le uniche funzioni di I/O che forzano la scrittura del buffer sul flusso Ogni funzione di I/O restituisce un valore speciale in caso di errore: alcune restituiscono zero, altre un valore diverso da zero o EOF Per ogni flusso aperto, esistono due campi booleani nella struttura FILE che registrano condizioni di errore o di fine file Si può accedere ai campi di fine file e di errore utilizzando le funzioni feof() e ferror() La funzione clearerr() pone entrambi i campi a zero #define ERR_FLAG 1 #define EOF_FLAG 2 char stream_stat(fp) FILE *fp; /* se nessun campo booleano è alterato, stat vale 0; * se il solo campo di errore è alterato, stat vale 1, * se il solo campo di fine file è alterato, stat vale 2 * se sono alterati entrambi, stat vale 3 */ char stat = 0; if (ferror(fp)) stat = ERR_FLAG; if (feof(fp)) stat = EOF_FLAG; clearerr(fp); return stat; 39 40

11 L allocazione dinamica della memoria 1 Alle variabili con durata fissa viene riservata memoria per l intera durata del programma, mentre alle variabili con durata automatica la memoria viene allocata ogni volta che si esegue il blocco relativo: in entrambi i casi si suppone di conoscere la quantità di memoria da allocare nel momento i cui si scrive il codice sorgente Tuttavia, talvolta l occupazione di memoria dipende strettamente dai dati in ingresso In C, esistono quattro funzioni della libreria di run time che permettono l allocazione dinamica della memoria malloc() alloca un numero specificato di byte in memoria e restituisce un puntatore all inizio del blocco allocato calloc() come malloc(), ma inizializza a zero i byte allocati; consente di allocare la memoria per più di un oggetto alla volta realloc() cambia la dimensione di un blocco precedentemente allocato free() libera la memoria che era stata allocata con malloc(), calloc() o realloc() 41

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

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES Con conversione di formato: int scanf (const char *format,... ) /* ritorna il numero di argomenti assegnati con successo altrimenti EOF se fine

Dettagli

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

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

Gestione dei file. Linguaggio ANSI C Input/Output - 13 Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni

Dettagli

Linguaggio C Gestione File

Linguaggio C Gestione File Gestione File: Il file è l'unità logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati non limitata dalle dimensioni della memoria centrale. Nel linguaggio

Dettagli

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

Capitolo 11 Elaborazione di file

Capitolo 11 Elaborazione di file 1 Capitolo 11 Elaborazione di file 11.1 Introduzione 2 I file Possono essere creati, modificati, ed elaborati da programmi scritti in C Sono utilizzati per la memorizzazione permanente dei dati La memorizzazione

Dettagli

LP1 Lezione 13: i File in C. Maurizio Tucci

LP1 Lezione 13: i File in C. Maurizio Tucci LP1 Lezione 13: i File in C Maurizio Tucci mtucci@unisa.it 1 Il File: Dichiarazione Memorizzare dati in maniera non volatile In C (libreria ) è definito un tipo FILE che astrae il concetto di sequenza

Dettagli

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

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto alla volta Scrittura di un fputc Int fputc(int ch, FILE *flusso); carattere alla volta Lettura

Dettagli

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T Suggerimenti, note utili ed errori comuni Fondamenti di informatica T printf, scanf e stringhe di formato La lettura e scrittura di variabili in formato testo sono realizzate tramite printf e scanf sfruttando

Dettagli

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

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp. Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma

Dettagli

Esercizi. I File ed il C

Esercizi. I File ed il C Politecnico di Milano Esercizi File di testo,, file binari I File ed il C Insieme omogeneo di dati, memorizzato su disco e caratterizzato da un nome La lunghezza di un file non è fissata a priori Astrazione

Dettagli

Sulla libreria standard, III. Manipolare file con stdio.h

Sulla libreria standard, III. Manipolare file con stdio.h Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Cosa sono i file? Un file è un archivio di dati che puo essere registrato su un supporto di massa (testo, lettera, programma, archivio di dati, ecc.) Fondamenti di Informatica 12. Linguaggio C - Gestione

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

File binari, Operazioni sui File binari, Allocazione dinamica della memoria

File binari, Operazioni sui File binari, Allocazione dinamica della memoria File binari, Operazioni sui File binari, Allocazione dinamica della memoria Vitoantonio Bevilacqua bevilacqua@poliba.it Parole chiave: File binari, Funzioni principali file binari, Funzione malloc, Allocazione

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII Gestione dei files DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

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

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab INFORMATICA B Ingegneria Elettrica I file in Matlab I file I file sono contenitori di informazione: sequenze di byte associate ad un nome Sono memorizzati su memoria di massa (non- volatile) Possono continuare

Dettagli

Gestione dei File C. Generalità

Gestione dei File C. Generalità Gestione dei File C 1 Generalità Il linguaggio C non contiene alcuna istruzione di Input/Output. Tali operazioni vengono svolte mediante chiamate a funzioni definite nella libreria standard contenute nel

Dettagli

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n').

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n'). I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

MATLAB: FILES. Informatica B/C - A.A. 2013/2014

MATLAB: FILES. Informatica B/C - A.A. 2013/2014 MATLAB: FILES Informatica B/C - A.A. 2013/2014 I FILE Contenitori di informazione: sequenze di byte associate ad un nome Sono memorizzati su memoria di massa (non-volatile) Possono continuare ad esistere

Dettagli

Linguaggio C La libreria standard

Linguaggio C La libreria standard FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C La libreria standard 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 13/03/07 Nota Questi lucidi sono tratti

Dettagli

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file Corso di per il corso di Laurea di Ingegneria Meccanica Tecniche di input/output per l'accesso ai file Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'importanza

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

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

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture. Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una

Dettagli

Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it

Dettagli

Architettura degli elaboratori Docente:

Architettura degli elaboratori Docente: Politecnico di Milano Il File System Architettura degli elaboratori Docente: Ouejdane Mejri mejri@elet.polimi.it Sommario File Attributi Operazioni Struttura Organizzazione Directory Protezione Il File

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Sono file di caratteri, organizzati in linee. Ogni linea è terminata da un marcatore di fine linea (newline, carattere \n ).

Sono file di caratteri, organizzati in linee. Ogni linea è terminata da un marcatore di fine linea (newline, carattere \n ). I file Il file è l unità logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un file

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

I File. Il file e l unita logica di memorizzazione dei dati su memoria di massa.

I File. Il file e l unita logica di memorizzazione dei dati su memoria di massa. I File Il file e l unita logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un file

Dettagli

Cenni sul preprocessore e il suo utilizzo

Cenni sul preprocessore e il suo utilizzo Alessio Bechini - Corso di - Cenni sul preprocessore e il suo utilizzo Il preprocessore: cenni Il preprocessore Storicamente, i compilatori C operavano con passaggi multipli. Il primo passaggio eseguiva

Dettagli

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Concetto di FILE Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Corso di Laurea in Ingegneria Meccanica A-K. Fondamenti di Informatica A. A Gestione dei File. A.Pinto

Corso di Laurea in Ingegneria Meccanica A-K. Fondamenti di Informatica A. A Gestione dei File. A.Pinto Corso di Laurea in Ingegneria Meccanica A-K Fondamenti di Informatica A. A. 2011-2012 1 Memorizzazione dei dati su dispositivi di memoria esterna Dispositivi di memorizzazione secondaria sono: dischi,

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

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

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

Dettagli

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti Funzioni di I/O per numeri 2 Input e output di valori numerici Ver. 2.4.2 2012 - Claudio Fornaro - Corso di programmazione in C Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione

Dettagli

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00 File position pointer File position pointer Indica la posizione da cui leggere/scrivere i prossimi byte Non un puntatore, ma un valore intero (specifica la posizione dall inizio file in termini di numero

Dettagli

Lettura da tastiera e scrittura su monitor

Lettura da tastiera e scrittura su monitor Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

ARCHIVI E FILE. Prof. Ciaschetti

ARCHIVI E FILE. Prof. Ciaschetti ISTITUTO DI ISTRUZIONE SUPERIORE ANGIOJ ARCHIVI E FILE Prof. Ciaschetti Un archivio è un insieme di registrazioni (record) memorizzate in modo persistente, cioè resta memorizzato permanentemente, anche

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Tempo di vita e scope delle variabili

Tempo di vita e scope delle variabili Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere I/O INTERATTIVO scanf: quello che è indispensabile sapere printf: quello che è utile sapere Input da tastiera Funzioni disponibili (tra le altre): scanf getchar Schema di funzionamento Tastiera Sistema

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

FILE BINARI FILE BINARI FILE BINARI. OUTPUT BINARIO: fwrite()

FILE BINARI FILE BINARI FILE BINARI. OUTPUT BINARIO: fwrite() FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Strutture dati e realizzazione in C. Componenti software:

Strutture dati e realizzazione in C. Componenti software: Strutture dati e realizzazione in C Strutture dati: Termine usato per indicare tipi con elementi del dominio compositi, ad esempio: vettori e matrici; tavole; liste; insiemi; pile e code; alberi e grafi.

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

ingresso/uscita da file

ingresso/uscita da file ingresso/uscita da file fino ad ora: il programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti al volo dall utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

I file. I file. Classificazione per accesso. I file

I file. I file. Classificazione per accesso. I file I file 2 I file Ver. 2.4 File: sequenza di byte a cui il Sistema Operativo dà un nome ed una collocazione sul dispositivo di memoria di massa (es. disco) Può essere paragonato ad una lunga stringa Uno

Dettagli

Puntatori. Fondamenti di Programmazione

Puntatori. Fondamenti di Programmazione Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2013 2014 20.VI.2014 VINCENZO MARRA Indice Esercizio 1 1 Leggere stringhe e caratteri 1 Esercizio 2 2

Dettagli

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

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno. Tipo File Per memorizzare un dato su un supporto magnetico come un hard disk o un nastro, o più in generale su un'unità di memoria di massa viene utilizzata un tipo di dato chiamato file. Un file può essere

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Laboratorio di Algoritmi e Strutture Dati. La gestione della memoria dinamica Heap

Laboratorio di Algoritmi e Strutture Dati. La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Proff. Francesco Cutugno e Luigi Lamberti 2009 Cenni sui Processi Si definisce Programma un insieme di Istruzioni destinate

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

Vettori di caratteri. Caratteri e stringhe. Stringhe in C. Vettori di caratteri. char saluto[10] ; B u o n g i o r n o 4. Esempio.

Vettori di caratteri. Caratteri e stringhe. Stringhe in C. Vettori di caratteri. char saluto[10] ; B u o n g i o r n o 4. Esempio. Vettori di caratteri Il tipo stringa Terminatore nullo Input/output di stringhe Caratteri e stringhe 2 Stringhe in C Vettori di caratteri Nel linguaggio C non è supportato esplicitamente alcun tipo di

Dettagli