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) { int a = 5; Scope di a nel ramo-if printf("b è uguale a 3\n e a è uguale a %d", a); else { int a = 1; Scope di b Scope di a nel ramo-else 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 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, definizione Definizione (con dichiarazione implicita) e invocazione 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; 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 gestire informazione eterogenea è necessario utilizzare una struttura: una collezione finita di variabili (chiamati 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 (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) == 32 invece di 29 Regole per nominare i membri I membri devono avere nomi univoci all interno di una struttura, ma strutture diverse possono avere membri con lo stesso nome 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'; 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 posso usare 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; Non è possibile effettuare il confronto tra due variabili di tipo struttura. struct data d1, d2; if(d1 == d2) //Errore! ma è necessario confrontare 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, delega il compito all utente) Esempio #include <stdio.h> struct complesso { float im; float re; ; int main(void) { struct complesso c1,c2,somma; c1.re = 3.; c1.im = 4.; c2.re = 2.; c2.im = 3.; somma.im = c1.im + c2.im; somma.re = c1.re + c2.re; printf("la somma di %f+i%f e %f+i%f è %f+i%f\n", c1.re,c1.im,c2.re,c2.im,somma.re,somma.im); return 0; 8

9 Attenzione struct pippo { struct pippo { int codice; int codice; char nome[20]; char nome[20]; float dato; float dato; ; ; struct pluto { int codice; struct pippo vrb1, vrb2; char nome[20];... float dato; vrb2 = vrb1; ; struct pippo vrb1; CORRETTO 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) Definizione di nuovi tipi 9

10 Definizione 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 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 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 a cui aggiungiamo via via degli interi fino a riempire interamente il vettore Vettori parzialmente riempiti 0 ff N-1 Il vettore occupa in memoria N celle (es. N interi) Ma contiene dati solo per una parte ff (first free) è l indice della prima posizione libera, dove si dovrà eventualmente inserire il prossimo elemento del vettore 12

13 Vettori parzialmente riempiti #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 print(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: 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; 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); 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 anche quando un membro della struttura è un array 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 degli argomenti Per convertire gli argomenti da stringa in 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 degli argomenti Purtroppo atoi, atol e atod non effettuano controlli: se il parametro s non può essere convertito, viene comunque restituito un valore senza segnalare errori Quindi sono da usare 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); 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, con $myprog par1 par2 il C crea le seguenti variabili: 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=0; i<argc; i++) sum += atoi(argv[i]); printf("la somma totale è %d.\n", sum); return EXIT_SUCCESS; 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 implicito di file (stdin) char* gets(char* s); 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) { char 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 il percorso (nome compreso) del file che si vuole aprire n 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 Consultare il man per saperne di più restituisce un puntatore a una struttura di tipo FILE se l istruzione va a buon fine. Lo stream è posizionato: n al primo byte del file (read/write) n all ultimo byte del file (append) n NULL se si verifica qualche errore (ad es. non si hanno i diritti per leggere o scrivere il file o 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 (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 È molto 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 EXIT_FAILURE e EXIT_SUCCESSS sono costanti simboliche definite in stdlib.h 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 siamo arrivati alla fine del file *f 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

Scope (visibilità) Scope di un identificatore

Scope (visibilità) Scope di un identificatore 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

Dettagli

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

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

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

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

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

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

Laboratorio di Informatica

Laboratorio di Informatica Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei

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

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

ELEMENTI DI INFORMATICA. Linguaggio C

ELEMENTI DI INFORMATICA. Linguaggio C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:

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

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

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto C I files di dati I files (archivi) Files di programmi sono solo gestiti dal compilatore C Files di dati Possono essere creati, aggiornati, letti, scritti da programmi C Servono per conservare dati su

Dettagli

Lezione 7: Funzioni e gestione dei File

Lezione 7: Funzioni e gestione dei File Lezione 7: Funzioni e gestione dei File Laboratorio di Elementi di Architettura e Sistemi Operativi 18 Aprile 2012 Le funzioni Funzioni Un programma C consiste di una o più funzioni Almeno main() Funzionamento

Dettagli

Streams e disk files

Streams e disk files Streams e disk files Streams 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: Testo: sequenza

Dettagli

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire.. File I file sono una illusione creata dal Sistema Operativo(SO) Il SO usa opportune strutture dati per implementare tale astrazione (ad esempio: File Control Block, FCB) Sono usati per memorizzare in modo

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

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 2017

Dettagli

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e! Settimana n.12 Obiettivi File!di!testo Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!scanf 437 Files Vista d insieme dei formati di file File File

Dettagli

Gestione dei File. Credits Prof. Campi

Gestione dei File. Credits Prof. Campi Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè

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

Lezione 22: Input/Output e Files

Lezione 22: Input/Output e Files Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard

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

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

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

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

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

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

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

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

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Laboratorio di Algoritmi

Laboratorio di Algoritmi Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in

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

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

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

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

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre Unica particolarità: viene chiamata dal Sistema Operativo, appena il programma viene avviato Non

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

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

Lezione integrativa: Dal C++ al C

Lezione integrativa: Dal C++ al C Lezione integrativa: Dal C++ al C Mario Sabbatelli smario@ce.unipr.it Palazzina 3 - int. 5792 www.ce.unipr.it/people/smario Contenuto della lezione Nel corso si utilizza l'ansi C Storia e standard panoramica

Dettagli

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali Files e S.O. I files sono gestiti dal S.O. e resi visibili

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

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

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

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Fondamenti di Informatica L-A

Fondamenti di Informatica L-A Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 6 Marzo 2016 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

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

Files in C endofile

Files in C endofile Files in C Il C vede i file semplicemente come un flusso (stream) sequenziale di bytes terminati da un marcatore speciale che determina la fine del file (end-of-file). 0 1 2 3 4... endofile A differenza

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

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)

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

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

Esercitazioni Fondamenti di Informatica

Esercitazioni Fondamenti di Informatica Esercitazioni Fondamenti di Informatica Marco Biagi Esercitazione 10 Email: marco.biagi@unifi.it Stringhe in C Una stringa è una sequenza di caratteri con un ordine prestabilito char c = p ; char stringa[]

Dettagli

Dichiarazioni e tipi predefiniti nel linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:

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

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

C: primi elementi. Lezione 4

C: primi elementi. Lezione 4 C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Maggio 2014 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott.

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott. Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Dettagli

LIBRERIE STANDARD in C Le librerie standard

LIBRERIE STANDARD in C Le librerie standard 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

Strutture. Una dichiarazione struct definisce un nuovo tipo. - Può essere seguita da una lista di variabili.

Strutture. Una dichiarazione struct definisce un nuovo tipo. - Può essere seguita da una lista di variabili. Strutture Una stuttura permette di aggregare variabili di tipo differente (a differenza degli array che rappresentano sequenze di variabili dello stesso tipo). Una dichiarazione di struttura ha la forma:

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

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

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Gestione dei files Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Struttura del disco fisso Un disco fisso è composto da una serie di piatti sovrapposti Ogni piatto è

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

Input/Output su File

Input/Output su File Input/Output su File Premessa importante Queste dispense si intendono unicamente come riferimento rapido per consultare il significato e I prototipi delle funzioni per l'accesso ai file. Per avere esempi

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2015 2nda prova in itinere Era il 21 Maggio 2 2nda prova in itinere Era il 21 Maggio Spostata (da 3 settimane) al 22

Dettagli

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

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri L elaborazione dei files in C DD, Cap. 11 + pp. 569-572 KP, pp. 581-583 Introduzione La memorizzazione dei dati nelle variabili e nei

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

puntatori Lab. Calc. AA 2006/07 1

puntatori Lab. Calc. AA 2006/07 1 puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

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

Introduzione al C. Esercitazione 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria Clinica

Introduzione al C. Esercitazione 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria Clinica Corso di Fondamenti di Informatica Ingegneria Clinica Domenico Daniele Bloisi Informazioni Generali ing. Domenico Daniele Bloisi Dipartimento di Informatica e Sistemistica Stanza B213, secondo piano Via

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

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci

Dettagli

Le stringhe. Le stringhe sono sequenze di caratteri,

Le stringhe. Le stringhe sono sequenze di caratteri, Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione

Dettagli

Dati strutturati in C

Dati strutturati in C Dati strutturati in C Fondamenti di Informatica Array Perchè usare gli array? float venditegennaio, venditefebbraio, venditemarzo, venditeaprile, venditemaggio, venditegiugno, venditeluglio, venditeagosto,

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

programmazione distribuita Introduzione Introduzione alla programmazione distribuita

programmazione distribuita Introduzione Introduzione alla programmazione distribuita Reti Informatiche Introduzione alla programmazione distribuita Introduzione Richiami di Programmazione C Differenze principali C/C++ 2 1 Definizioni di variabili Le variabili possono essere definite solo

Dettagli

Lezione 6: Array e puntatori

Lezione 6: Array e puntatori Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci

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