Scope (visibilità) Scope di un identificatore

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Scope (visibilità) Scope di un identificatore"

Transcript

1 Scope (visibilità) Scope di un identificatore Lo scope (visibilità) di un identificatore è la porzione di codice in cui quell identificatore è definito e ha senso Se l identificatore si riferisce a una variabile, lo scope è la porzione di codice che inizia dal punto in cui viene definita la variabile e termina alla fine del blocco che la contiene (chiusura della parentesi graffa) Non è possibile utilizzare una variabile al di fuori del suo scope Si può pensare che la variabile, raggiunto il termine dello scope, venga distrutta 1

2 Scope di un identificatore int b = 4; if (b == 3) { Scope di a nel ramo-if Scope di b int a = 5; printf("b è uguale a 3\n e a è uguale a %d", a); else { Scope di a nel ramo-else int a = 1; printf("b non è uguale a 3 e a è uguale a %d\n", a); Il codice è corretto, però bisogna prestare attenzione: La variabile a del ramo-if non corrisponde alla variabile a del ramo-else Entrambe le variabili a vengono distrutte al termine del blocco, quindi qualsiasi riferimento a queste variabili dopo questo blocco di istruzioni sarebbe un errore Scope di un identificatore Se l identificatore si riferisce a una funzione, lo scope è la porzione di codice che inizia dal punto in cui viene definita e che termina alla fine del file sorgente, cioè è la zona in cui il compilatore è in grado di recuperare la definizione della funzione (il body) e il tipo e il numero di argomenti che la funzione stessa richiede, nonché il tipo del valore di ritorno 2

3 Esempio Non si può invocare una funzione non dichiarata (è fuori dallo scope) Invocazione senza dichiarazione int main(void) { int a=f(3,5); printf("%d",a); return 0; int f(int x, int y){ return 2*x + 3*y; ERRORE! Anche le funzioni di libreria (printf, strlen, ) sottostanno a questa regola: i file header (stdio.h, string.h, ) contengono le dichiarazioni delle funzioni Esempio La definizione di una funzione è implicitamente una dichiarazione: Dichiarazione, invocazione e definizione int f(int x, int y); int main(void) { int a = f(3,5); printf("%d", a); return 0; int f(int x, int y) { return 2*x + 3*y; Definizione (con dichiarazione implicita) e invocazione int f(int x, int y) { return 2*x + 3*y; int main(void) { int a = f(3,5); printf("%d", a); return 0; 3

4 Tipi derivati: struct Strutture Gli array sono utili quando dobbiamo aggregare informazione omogenea Quando invece dobbiamo aggregare informazione eterogenea è necessario utilizzare una struttura: una collezione finita di variabili (chiamate membri) non necessariamente dello stesso tipo, ognuna identificata da un nome Sintassi struct <etichetta> { ; <definizione-di-variabili> L etichetta è opzionale e rappresenta il nome della struttura 4

5 Dichiarazione di Strutture Esempio di dichiarazione di una struttura struct studente { char nome[20]; int eta; char sesso; float media; ; studente è il nome della struttura composta da tre membri: nome, eta, sesso e media N.B.: La definizione della struttura non provoca allocazione di memoria, ma introduce un nuovo tipo di dato La memoria viene allocata solo al momento della dichiarazione di una variabile del tipo struct studente Definizione di variabili di tipo struttura Dichiarazione di due variabili di tipo struct studente: struct studente p1, p2; Dichiarazione di un array di 50 elementi ciascuno dei quali è di tipo struct studente: struct studente elenco[50]; 5

6 Definizione di variabili di tipo struttura In memoria i membri di una struttura vengono allocati nello stesso ordine di dichiarazione Tra un membro e l altro, a seconda dell architettura, possono esserci spazi intermedi di allineamento di memoria inutilizzabili e di contenuto indefinito e che sono utili per rendere più efficiente la copia dei dati Es. su una macchina a 64 bit con char da 1 byte, int da 4 byte e float da 4 byte, sizeof(struct studente) non vale 29 ma 32: 3 byte vengono usati per allineare il char Regole per nominare i membri I membri devono avere nomi univoci all interno di una struttura, ma si può usare lo stesso nome in strutture diverse I nomi dei membri possono coincidere con nomi di variabili o funzioni int x; struct a { char x; int y; ; //corretto struct b { int w; float x; ; //corretto 6

7 Accesso ai membri di una struttura Si accede ai membri mediante la notazione con punto: <nome-variabile>.<nome-mebro> struct carta { int valore; char seme; ; struct carta c1, c2; c1.valore = 5; c1.seme = 'Q'; c2.valore = 9; c2.seme = 'C'; struct punto { int x, y; ; struct punto p1, p2; p1.x = 10; p1.y = -2; p2.x = 5; p2.y = 7; Ogni membro si usa come una normale variabile del tipo corrispondente a quello del membro Puntatori a strutture Se ho un puntatore a una struct, per accedere ai suoi membri, invece di usare l operatore di dereferenziamento e il punto, posso usare per maggiore comodità l operatore -> (freccia, scritta con meno e maggiore) struct data { int giorno, mese, anno; ; struct data d; struct data *pd = &d; //pd è un puntatore alla struttura d pd->giorno = 7; //equivalente a (*p).giorno pd->mese = 1; //equivalente a (*p).mese pd->anno = 2009; //equivalente a (*p).anno 7

8 Operazioni su Strutture Si possono assegnare variabili di un tipo struttura a variabili dello stesso tipo struttura struct data d1, d2; d1 = d2; Però non è possibile effettuare il confronto tra due variabili di tipo struttura struct data d1, d2; if (d1 == d2) //Errore! Per effettuare il confronto è necessario considerare separatamente ogni singolo membro: if (d1.giorno==d2.giorno && d1.mese==d2.mese && d1.anno==d2.anno) Il motivo è legato all allineamento in memoria (dato che lo spazio intermedio tra i membri ha contenuto indefinito e il C non può confrontare efficientemente le due zone di memoria, non offre all utente questa feature) Attenzione struct pippo { int codice; char nome[20]; float dato; ; struct pippo vrb1, vrb2;... vrb2 = vrb1; CORRETTO struct pippo { int codice; char nome[20]; float dato; ; struct pluto { int codice; char nome[20]; float dato; ; struct pippo vrb1; struct pluto vrb2;... vrb2 = vrb1; ERRATO Perché sia ammesso l assegnamento, non è sufficiente che le due strutture abbiano gli stessi campi, ma devono essere dichiarate con lo stesso tipo (il motivo è ancora legato al fatto che l allineamento dei dati in memoria potrebbe essere diverso) 8

9 Esercizio Dati due punti p1=(x1,y1) e p2=(x2,y2) in uno spazio bidimensionale R 2, la somma p1+p2 è il punto definito sommando componente per componente (x1+x2,y1+y2) Scrivere una versione della funzione somma che utilizzi la chiamata per valore e una versione che utilizzi la chiamata per riferimento (in entrambi i casi ovviamente occorre usare le strutture). Scrivere inoltre un main che richiami le due funzioni Definizione di nuovi tipi 9

10 Definizione di un nuovo tipo Con la parola chiave typedef si definisce un nuovo tipo (in realtà un abbreviazione per un tipo esistente): typedef <tipo_esistente> <nuovo_tipo>; Ad esempio typedef int votoesame; definisce un nuovo tipo, votoesame, che corrisponde al tipo int Quando dichiarerò una variabile potrò scrivere votoesame esame1, esame2; Definizione di un nuovo tipo Definire un nuovo tipo è utile per rendere più leggibile il codice o per nascondere al programmatore che usa un nostro modulo come realizziamo internamente al modulo una certa funzionalità 10

11 Definizione di un nuovo tipo Posso usare typedef anche sulle strutture: typedef struct { int codice; char nome[20]; float dato; nuovotipo; nuovotipo var1, var2; nuovotipo var3; Abbiamo definito un nuovo tipo derivato nuovotipo Grazie a typedef possiamo evitare di scrivere la parola chiave struct quando dichiariamo le variabili Esempio: Vettori parzialmente riempiti 11

12 Vettori parzialmente riempiti Definiamo una struttura dati in cui usiamo un vettore in cui memorizziamo via via degli interi fino a riempire interamente il vettore Vettori parzialmente riempiti 0 ff N-1 Il vettore può memorizzare N interi, ma contiene dati solo per una parte Per tenerne traccia usiamo la variabile ff (first free) per memorizzare l indice della prima posizione libera, dove si dovrà eventualmente inserire il prossimo elemento del vettore 12

13 Vettori parzialmente riempiti Definizione #define N 20 typedef struct { int vettore[n]; int ff; vpr_int; int main(void) { vpr_int miovettore; Vettori parzialmente riempiti Devo però preoccuparmi di inizializzare la struttura Quanto vale all inizio ff? Se non la inizializzassi, potrebbe avere casualmente qualsiasi valore, anche negativo È necessario, quindi, definire una funzione di inizializzazione da invocare prima di utilizzare un vettore parzialmente riempito 13

14 Vettori parzialmente riempiti Inizializzazione: vpr_int init(vpr_int vpr) { vpr.ff = 0; return vpr; La funzione verrà invocata in questo modo: int main(void) { vpr_int miovettore; miovettore = init(miovettore); Vettori parzialmente riempiti Stampa del vettore: void stampa(vpr_int vpr) { int i; for (i=0; i<vpr.ff; i++) printf("elemento %d: %d\n", i, vpr.vettore[i]); 14

15 Vettori parzialmente riempiti Funzione che determina se il vettore è pieno o se c è ancora spazio per inserire elementi: 0 N-1 ff int pieno(vpr_int vpr) { if (vpr.ff >= N) return 1; else return 0; Vettori parzialmente riempiti Inserimento di un elemento: vpr_int inserisci(vpr_int vpr, int n) { if (pieno(vpr)) return vpr; vpr.vettore[vpr.ff] = n; vpr.ff++; return vpr; 0 ff N-1 15

16 Vettori parzialmente riempiti Ricerca dell indice in cui è memorizzato un elemento: int cerca(vpr_int vpr, int n) { int i; for (i = 0; i < vpr.ff; i++) if (vpr.vettore[i] == n) return i; return -1; Vettori parzialmente riempiti Esempio di un main in cui testiamo il codice int main(void) { vpr_int miovettore; miovettore = init(miovettore); int i; for (i = 0; i <= N; i++) { printf("inserisco %d.\n", i); miovettore = inserisci(miovettore, i); stampa(miovettore); 16

17 Vettori parzialmente riempiti i = cerca(miovettore, N); if (i == -1) printf("%d non trovato.\n", N); else printf("%d trovato all'indice %d.\n", N, i); i = cerca(miovettore, 0); if (i == -1) printf("%d non trovato.\n", 0); else printf("%d trovato all'indice %d.\n", 0, i); return 0; Strutture come parametri Attenzione, quando si passa come parametro una struttura, questa viene copiata interamente Se la struttura contiene molti dati (ad esempio nel nostro caso la struttura vpr_int contiene un array), vengono tutti copiati Passare come parametro una struttura può quindi risultare inefficiente Usando i puntatori, si possono passare i parametri in modo più efficiente: per riferimento 17

18 Strutture come parametri Esempio di funzione stampa modificata con il passaggio per riferimento: void stampa(vpr_int *pv) { int i; for (i=0; i < pv->ff; i++) printf("elemento %d: %d\n", i, pv->vettore[i]); int main(void) { vpr_int miovettore; stampa(&miovettore); Conversione stringhe 18

19 Conversione di stringhe Per convertire gli argomenti da stringa a tipi primitivi si possono usare le funzioni di stdlib.h: int atoi(char *s): da stringa a intero long atol(char *s): da stringa a long double atof(char *s): da stringa a double Esempio: int ivalue = atoi(argv[1]); Conversione di stringhe Purtroppo atoi, atol e atod non effettuano controlli: se la stringa non può essere convertita, viene comunque restituito un valore senza segnalare errori Quindi queste funzioni dovrebbero essere usate solo quando si è certi che l argomento sia una stringa convertibile in intero In generale bisognerebbe invece usare le più complesse strtol e strtod (consultare il man per il loro uso) 19

20 Argomenti dalla linea di comando Argomenti dalla linea di comando Permettono di passare a un programma parametri da linea di comando. Ad esempio: $myprog par1 par2 Bisogna definire il main in questo modo: int main(int argc, char *argv[]) Il C mette a disposizione del programma un vettore di stringhe (cioè un vettore di vettori di char) in cui ogni stringa corrisponde a un parametro 20

21 Argomenti dalla linea di comando Più in dettaglio: argc è il numero di parametri, incluso l eseguibile stesso (quindi argc >= 1) argv è un vettore di stringhe: ogni suo elemento argv[i] è una stringa che corrisponde a un parametro (casi particolari: n argv[0] è il nome dell eseguibile stesso, n argv[argc] è NULL) Argomenti dalla linea di comando Ad esempio, invocando myprog in questo modo $myprog par1 par2: argc 3 argv NULL m y p r o g \0 p a r 1 \0 p a r 2 \0 21

22 Argomenti dalla linea di comando Esempio di un programma che stampa gli argomenti dalla linea di comando: #include <stdio.h> int main(int argc, char *argv[]) { int i; printf("argc = %d\n", argc); for (i=0; i<argc; i++) printf("argv[%d] = %s\n", i, argv[i]); return 0; Controllo degli argomenti Esempio di programma che calcola la somma dei suoi argomenti interi #include <stdio.h> #include <stdlib.h> int main (int argc, char* argv[]) { int sum = 0, i; if (argc < 3) { //controllo della cardinalità degli argomenti printf("sono richiesti almeno due parametri.\nuso: %s num1 num2... numn\n", argv[0]); exit(exit_failure); for (i=1; i<argc; i++) sum += atoi(argv[i]); printf("la somma totale è %d.\n", sum); return EXIT_SUCCESS; EXIT_FAILURE e EXIT_SUCCESSS sono costanti simboliche definite in stdlib.h 22

23 I/O v I/O su canali standard v I/O su file v I/O su stringhe Funzioni di I/O Abbiamo già visto l uso di scanf e printf per fare input/output sui canali standard Esistono altre funzioni che permettono di fare I/O Scrittura: con uso implicito di file (stdout) int putchar(int c); int puts(char *s); int printf(const char *format,...); con uso esplicito di file int fputc(int c, FILE *stream); int fputs(char *s, FILE *stream); int putc(int c, FILE *stream); Lettura: con uso implicitodi file (stdin) int getchar(void); int scanf(const char *format, ); con uso esplicito di file int fgetc(file *stream); char *fgets(char *s, int size, FILE *stream); int ungetc(int c, FILE *stream); 23

24 Scrivere sullo standard output Oltre alla printf ci sono: int putchar(int c); scrive un carattere sullo standard output (file speciale corrispondente al terminale) restituisce un numero intero corrispondente alla codifica ASCII del carattere scritto, EOF in caso di errore int puts(char *s); scrive una stringa sullo standard output restituisce un numero non negativo in caso di successo, EOF in caso di errore Leggere dallo standard input Oltre alla scanf ci sono: int getchar(void); legge un carattere dallo standard input (tastiera) e lo restituisce come carattere, EOF in caso di errore. 24

25 Esempi d uso #include <stdio.h> int main(void) { int c = getchar(); //legge un carattere da terminale (anche "a capo" è un carattere: è '\n') putchar(c); //stampa a video il carattere in c return 0; Molto spesso getchar è usata per sospendere l esecuzione di un programma in modo che l utente possa visionare risultati intermedi I/O su FILE Ogni funzione che opera su file utilizza una struttura chiamata FILE definita in stdio.h Senza entrare nei dettagli, è sufficiente sapere che FILE contiene informazioni riguardanti un file e che ci permette di operare su di esso. Per esempio, tiene traccia dell offset, cioè il punto del file a cui si è arrivati a leggere o scrivere. FILE viene allocata quando si apre un file e deallocata quando il file viene chiuso Prima di operare su un file, occorre aprirlo con la funzione fopen Si ottiene un puntatore alla struttura FILE che bisognerà poi passare come parametro alle funzioni di lettura/scrittura Quando si termina, occorre chiudere il file con fclose 25

26 Apertura di FILE FILE *fopen(const char *path, const char *mode); argomenti: n n il percorso (nome compreso) del file che si vuole aprire il modo: n "r" à lettura (il file deve esistere) [esistono anche "rb", "r+", "rb+"] n "w" à scrittura (crea un file vuoto ed elimina un eventuale file già esistente) [esistono anche "wb", "w+", "wb+"] n "a" à accoda (append; se il file esiste, scrive in coda al file; se non esiste lo crea vuoto) [esistono anche "ab", "a+", "ab+"] n valore di ritorno: n n Consultare il man per saperne di più se l istruzione va a buon fine, un puntatore a una struttura di tipo FILE. Lo stream è posizionato: n al primo byte del file (in caso di read/write) n all ultimo byte del file (in caso di append) se si verifica un errore, NULL (casi di errori possibili: non si hanno i diritti per leggere o scrivere il file oppure il file da leggere non esiste) I/O su FILE fscanf e fprintf sono le versioni relative ai file di scanf e printf int fscanf(file *fp, formato, argomenti) int fprintf(file *fp, formato, argomenti) I parametri e il funzionamento sono identici a quelli delle funzioni scanf e printf tranne per la presenza del parametro di tipo FILE* che identifica il file su cui le funzioni devono operare Abbiamo già visto fgets: char* fgets(char *str, int size, FILE *stream); Ricordate: In UNIX un file è un flusso (stream) di caratteri terminato dal carattere speciale EOF 26

27 Chiusura di FILE int fclose(file *fp); Richiede un puntatore a un file (precedentemente aperto) Restituisce 0 se la chiusura avviene con successo, EOF se con fallimento. In entrambi i casi, successivi tentativi di accedere al file chiuso falliranno È importante usare sempre fclose quando si è terminato di usare un file: l'accesso a un file (qualunque linguaggio di programmazione si usi) è gestito dal sistema operativo, che deve allocare apposite strutture per lo specifico processo richiedente fopen effettua una richiesta di allocazione al sistema operativo fclose rilascia al sistema operativo le strutture usate fino a quel momento; poiché le risorse di un computer sono sempre limitate, se non si dealloca mai si rischia di terminare le risorse Accesso ai FILE fscanf/fprintf successive fanno avanzare lo stream legato al file #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp = fopen("dati.txt", "r"); if (fp == NULL) { perror("errore nell apertura del file"); exit(exit_failure); int x; while (fscanf(fp, "%d", &x)!= EOF) printf("\n x= %d", x); fclose(fp); return EXIT_SUCCESS; void perror(char* s) è una funzione il cui prototipo è in stdio.h che, invocata dopo un errore in una system call, stampa la stringa passata come argomento seguita da un messaggio sulle cause dell errore In questo esempio si suppone che dati.txt sia un file di interi separati da spazi 27

28 Esempio alternativo #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp = fopen("dati.txt", "r"); if (fp == NULL) { //come nella slide precedente int x; while (!feof(fp)) { fscanf(fp, "%d", &x); printf("\n x=%d", x); fclose(fp); return EXIT_SUCCESS; int feof(file *f) è una funzione il cui prototipo è in stdio.h. Restituisce un numero diverso da zero (e quindi corrispondente a vero per il C) quando si è arrivati alla fine del file Flussi standard Ogni processo in esecuzione è associato a tre FILE* speciali, che risultano già aperti quando si lancia il programma: FILE *stdin //standard input, di solito la tastiera FILE *stdout //standard output, di solito lo schermo FILE *stderr //standard error, di solito lo schermo scanf è quindi un caso particolare di fscanf, in cui si usa stdin come parametro FILE * scanf(" ", ) equivale a fscanf(stdin, " ", ) Analogamente printf è un caso particolare di fprintf: printf(" ", ) equivale a fprintf(stdout, " ", ) 28

29 I/O su stringa Tramite le funzioni sscanf e sprintf è possibile operare (cioè leggere e scrivere dati) su una stringa anziché su file int sscanf(char *str, formato, argomenti); lettura da stringa; utile per parsificare dati con formato int sprintf(char *str, formato, argomenti); scrittura su stringa; utile per creare stringhe concatenando dati con formato I/O su stringa: sprintf char linea[128]; int x, y; float val; x = 25; y=7; val = 7.5F; sprintf(linea, "%d %d :: %f", x, y, val); Per effetto della sprintf linea corrisponde alla stringa "25 7 :: 7.5" che può essere mandata a video o scritta su file 29

30 I/O su stringa: sscanf char linea[128] = "25 7 :: 7.5"; int x,y; float val; sscanf(linea, "%d %d :: %f", &x, &y, &val); Per effetto della sscanf le variabili x, y e val saranno inizializzate come: X ß 25, y ß 7, val ß 7.5F Attenzione: affinché la sscanf abbia successo la sottostringa " :: " indicata nella stringa formato deve essere presente in linea Se i dati rispettano un certo formato in ingresso la sscanf è in grado di parsificare linea e compiere la conversione da stringa a tipo primitivo 30

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

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

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

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

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

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

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 al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream

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

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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

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

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

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

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

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa. dischi nastri cd GESTIONE DEI FILE I file possono

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

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

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

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

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

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

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

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

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Funzioni standard del C: Funzioni di I/O Allocazione dinamica della memoria Funzioni su stringhe di caratteri Testo di riferimento B.W. Kernighan & D.M. Ritchie

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

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

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

I files in C. A cura del prof. Ghezzi

I files in C. A cura del prof. Ghezzi I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files

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

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

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'Allocazione Dinamica della Memoria nel linguaggio C L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria

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

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

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione

Dettagli

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

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

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

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

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

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

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I/O in C Il sistema di I/O del C è una interfaccia uniforme

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

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

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

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

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile

Dettagli

GESTIONE DEI FILE IN C

GESTIONE DEI FILE IN C GESTIONE DEI FILE IN C Il concetto di file.. è una parte logicamente contigua del contenuto di un dispositivo! Deve essere capace di memorizzare grandi quantità di dati! I dati memorizzati devono sopravvivere

Dettagli

Linguaggio C: PUNTATORI

Linguaggio C: PUNTATORI Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

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

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

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

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

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

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

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

Matrici, stringhe e I/O da file

Matrici, stringhe e I/O da file Memory Leakage (I) Se si perde il valore di un puntatore di una zona di memoria allocata, quella memoria non e piu utilizzabile dal processo e non e piu liberabile : rimane quindi proprieta del processo

Dettagli

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani

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

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

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

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale. 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

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

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

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

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast Soluzione degli esercizi svolti in aula alla lavagna Seconda lezione Cast 1 Esempio Scriviamo un programma che converte temperature Fahrenheit in temperature Celsius La formula è cels = (fahr 32) * 5 *

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file File Input/Output 1 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 2 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni

Dettagli

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

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale File in C Indice La gestione dei file in C e gli stream Apertura e chiusura di un file Operazioni sui file Accesso sequenziale e non sequenziale Gestione dei file in C In C all interno della standard library

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012 Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione Introduzione a Funzioni di Ingresso e Uscita Compilazione 2 Come si termina...... un programma in esecuzione (processo)? Ctrl + C In UNIX ci si basa sul concetto di terminale Anche da GUI, quello che si

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Dettagli

La gestione dei file in C

La gestione dei file in C Gestione dei file La gestione dei file in C Il file è un astrazione molto ampia nella descrizione di un sistema informatico nastro di I/O supporto di comunicazione macchina/ambiente di ogni tipo (sensori,

Dettagli

Programmazione (imperativa)

Programmazione (imperativa) Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

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 I (Classe 1)

Programmazione I (Classe 1) Programmazione I (Classe 1) Appello 12 CFU 8 Settembre 2017 Docenti: Fuccella - Zizza Cognome: Nome: Matricola: Ritirato Riservato alla commissione d esame 1 2 3 4 5 6 7 8 TOT (/40) Da codice etico Unisa

Dettagli

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:

Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio: Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i

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

Il linguaggio C Puntatori

Il linguaggio C Puntatori Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

Struttura dati FILE. Motivazioni: memorie a confronto

Struttura dati FILE. Motivazioni: memorie a confronto Struttura dati FILE Motivazioni: memorie a confronto La memoria centrale (RAM) è tecnologia elettronica basata su Le memorie secondarie sono basate su tecnologie magnetiche (HD) o ottiche (CD, DVD) Conseguenze

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

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

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Lezione 8. Sottoprogrammi

Lezione 8. Sottoprogrammi Lezione 8 Il linguaggio C: Sottoprogrammi e Funzioni I puntatori Input/Output su file Sottoprogrammi Per risolvere un problema si può scomporlo in problemi più semplici e comporre le loro soluzioni in

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

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

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato. Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 2 febbraio 2016 Esercizio 1 (16 punti) Un file di testo contiene

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli