Esercitazione n. 6. Gestione dei file e ricorsione
|
|
- Tommasa Graziano
- 6 anni fa
- Visualizzazioni
Transcript
1 Esercitazione n. 6 Gestione dei file e ricorsione dott. Carlo Todeschini tode@cremona.polimi.it Politecnico di Milano A.A. 2010/2011 Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.5 Italia
2 Problema: Che cosa succede se... (es. errori_array.c) #include <stdio.h> #define MAX_D 10 int j = 1; void pr_fun (int a[]) int i=0; for (i=0 ; i<max_d+2 ; i++) a[i] = i*j; j++; void pr (int a[max_d]) int i=0; for (i=0 ; i<max_d+2 ; i++) printf ("%d ", a[i]); main () int b[max_d]; pr_fun (b); pr (b); printf ("\n\n"); pr_fun (b); pr (b); printf ("\n"); 2
3 Problema: Che cosa succede se... (es. errori_array.c) gcc -o es_01_prova_con_array es_01_prova_con_array.c Segmentation fault tode@benfuter:~/esempi$ 3
4 Gestione dei file: ripasso/1... Per accedere a un file (sequenza lineare di byte) è necessario definire una variabile che punti al file: FILE *fp; Nota: si utilizza la libreria standard stdio.h. fp è definito un file pointer E' possibile gestire un file in tre fasi: apertura gestione/modifica chiusura 4
5 Gestione dei file: ripasso/1... Apertura di un flusso di comunicazione: FILE *fopen (nomefile, modalità) modalità: r, w, a, rb, wb, ab, r+, w+, a+, rb+, wb+, ab+ r : sola lettura (errore se non esiste) w : sola scrittura (creazione se non esiste) r+ : lettura e scrittura (errore se non esiste) w+ : scrittura e lettura (creazione se non esiste) a : append a+ : lettura e append Chiusura di un flusso di comunicazione int fclose (FILE *fp) 5
6 Gestione dei file: ripasso/2... Verifica se nelle precedenti operazioni di lettura/scrittura è stato riscontrato un errore: int ferror (FILE *fp) Nota: se restituisce 0 non ci sono stati errori Controlla se è stata raggiunta la fine del file: int feof (FILE *fp) Nota: se restituisce 0 non è stata ancora raggiunta la fine 6
7 Gestione dei file: ripasso/3... Per eseguire una operazione di scrittura formattata: int fprintf (FILE *fp, stringa di controllo, elementi) Per eseguire una operazione di lettura formattata: int fscanf (FILE *fp, stringa di controllo, indirizzo elementi) 7
8 Gestione dei file: ripasso/4... Per eseguire una operazione di lettura di un carattere: int fgetc (FILE *fp) Per eseguire una operazione di scrittura di un carattere: int fputc (int c, FILE *fp) Per eseguire una operazione di lettura di una stringa: char *fgets (char *s, int n, FILE *fp) Per eseguire una operazione di scrittura di una stringa: int fputs (char *s, FILE *fp) 8
9 Gestione dei file: ripasso/5... Per eseguire una operazione di lettura di uno o più blocchi di dati: int fread (void *ptr, dim_elemento, num_elementi, FILE *fp) Per eseguire una operazione di scrittura di uno o più blocchi di dati: int fwrite (void *ptr, dim_elemento, num_elementi, FILE *fp) 9
10 Gestione dei file: ripasso/6... Per eseguire un accesso diretto a un file che sposta l'indicatore di posizione di un numero offset di byte, in base alla direzione stabilita da ref_point : int fseek (FILE *fp, long offset, int ref_point) Per recuperare il valore corrente dell'indicatore di posizione del file: int ftell (FILE *fp) Per riportare all'inizio del file l'indicatore di posizione: rewind (FILE *fp) 10
11 Attenzione: formato dei file... Tipi di file: Testo... Binari... 11
12 C/1: Merge di file Problema Si vuole realizzare un programma in linguaggio C in grado di: leggere due file che contengono rispettivamente il titolo e gli attori principali (anche più di uno) di una serie di film creare un file unico con, per ogni film, titolo e attori principali. Formato file titoli : Il Signore degli Anelli Guerre stellari Frankenstein Jr. Formato file attori : Viggo Mortensen Ian McKellen Elijah Wood # Mark Hamill Harrison Ford # Marty Feldman Gene Wilder # 12
13 C/1: Merge di file Codice sorgente/1 /* Questo file contiene la definizione di una funzione, 'mergebibliodata', che prende in input il nome di due file che contengono rispettivamente il titolo e gli attori principali (anche più di uno) di una serie di film, e creano un file unico con, per ogni film, titolo e attori principali. Nel file con i titoli, ad ogni riga corrisponde un film diverso (non ci devono essere righe vuote alla fine). Nel file con gli attori, le sequenze di attori sono separate da una riga che contiene il solo carattere '#' (non sono ammesse righe vuote alla fine). 13
14 C/1: Merge di file Codice sorgente/2 Per esempio un file di attori può essere: Viggo Mortensen Ian McKellen Elijah Wood # Mark Hamill Harrison Ford # Marty Feldman Gene Wilder # */ La funzione 'mergebibliodata' ritorna un valore intero, che può assumere diversi valori a seconda del risultato della funzione: - 0 la funzione ha avuto successo - 1 non è stato possibile aprire il file di input con i titoli dei film - 2 non è stato possibile aprire il file di input con gli attori - 3 non è stato possibile aprire il file di destinazione - 4 il formato dei file di input non è corretto (per esempio se i due file contengono dati di un numero diverso di film) 14
15 C/1: Merge di file Codice sorgente/3 #include <stdio.h> #include <string.h> #include "usertypes.h" /* Si definisce il significato del codice ritornato dalla funzione 'mergebibliodata' */ #define SUCCESSO 0 #define FILE_TITOLI_NON_APERTO 1 #define FILE_ATTORI_NON_APERTO 2 #define OUTPUT_NON_APERTO 3 #define FORMATO_FILE_INPUT_ERRATO 4 /* Al massimo i file di input possono avere linee lunghe MAX_LUNGH_LINEA elementi */ #define MAX_LUNGH_LINEA 80 15
16 C/1: Merge di file Codice sorgente/4 /* Il tipo corrispondente di stringa ha 2 caratteri in più: uno per il carattere '\000' di fine stringa, e uno per il carattere di 'a capo' ('\n') */ typedef char riga_input [MAX_LUNGH_LINEA+2]; int mergebibliodata (char *nome_file_titoli, char *nome_file_attori, char *nome_file_output) FILE *titoli, *attori, *output; riga_input titolo, attore; bool prossimo_titolo; int lstr; 16
17 C/1: Merge di file Codice sorgente/5 /* Si aprono i file di input in modalità "sola lettura, file di testo"; se l'operazione di apertura del file non ha successo si ritorna un errore */ titoli = fopen (nome_file_titoli, "r"); if (titoli == NULL) return FILE_TITOLI_NON_APERTO; /* Nel caso si ritorni un errore, ci si deve prima ricordare di chiudere il file precedentemente aperto (stessa cosa quando si cerca di aprire il file di output) */ attori = fopen (nome_file_attori, "r"); if (attori == NULL) fclose (titoli); return FILE_ATTORI_NON_APERTO; 17
18 C/1: Merge di file Codice sorgente/6 /* Si apre il file di output in modalità "scrittura, file di testo"; se l'operazione di apertura del file non ha successo si ritorna un errore */ output = fopen (nome_file_output, "w"); if (output == NULL) fclose (attori); fclose (titoli); return OUTPUT_NON_APERTO; 18
19 C/1: Merge di file Codice sorgente/7 while (!feof(titoli)) /* Se non si è ancora arrivati in fondo al file dei titoli, ma non ci sono più attori, si segnala un errore, perchè ci sono più titoli che gruppi di attori */ if (feof (attori)) fclose (titoli); fclose (attori); fclose (output); return FORMATO_FILE_INPUT_ERRATO; 19
20 C/1: Merge di file Codice sorgente/8 fgets (titolo, MAX_LUNGH_LINEA+1, titoli); /* Si controlla l'ultimo carattere inserito nella stringa: se non è 'newline', si inserisce il carattere di '\n' in fondo alla stringa */ lstr = strlen (titolo); if (titolo[lstr-1]!= '\n') titolo[lstr] = '\n'; titolo[lstr+1] = '\000'; /* Si scrive il titolo ('newline' compreso!) nel file di output */ fputs (titolo, output); 20
21 C/1: Merge di file Codice sorgente/9 /* Si recuperano i nomi degli attori; se non ci sono più attori nel file vuol dire che ci sono più titoli di gruppi di attori, e si segnala un errore */ prossimo_titolo = false; while (!feof(attori) &&!prossimo_titolo) fgets (attore, MAX_LUNGH_LINEA+1, attori); /* Se il primo carattere della riga è '#' si passa al prossimo titolo, cioè sono finiti gli attori per il film corrente */ if (attore[0] == '#') prossimo_titolo = true; 21
22 C/1: Merge di file Codice sorgente/10 else /* Se serve, si aggiunge un '\n' in fondo alla riga letta */ lstr = strlen (attore); if (attore[lstr-1]!= '\n') attore[lstr] = '\n'; attore[lstr+1] = '\000'; fputs (attore, output); fprintf (output, "#\n"); fclose (titoli); fclose (output); 22
23 C/1: Merge di file Codice sorgente/11 /* Se si è giunti in fondo al file dei titoli, ma ci sono ancora attori, si segnala un errore, perchè ci sono più gruppi di attori che titoli di film */ if (!feof(attori)) fclose (attori); return FORMATO_FILE_INPUT_ERRATO; fclose (attori); return SUCCESSO; 23
24 C/1: Merge di file Codice sorgente/12 main () int ris; ris = mergebibliodata ("es_02_mergefile_titolifilm", "es_02_mergefile_attorifilm", "es_02_mergefile_datifilm"); 24
25 C/1: Merge di file Codice sorgente/13 switch (ris) case SUCCESSO: printf ("Operazione avvenuta con successo\n"); break; case FILE_TITOLI_NON_APERTO: printf ("Errore nell'apertura del file con i titoli\n"); break; case FILE_ATTORI_NON_APERTO: printf ("Errore nell'apertura del file con gli attori\n"); break; case OUTPUT_NON_APERTO: printf ("Errore nell'apertura del file di output\n"); break; case FORMATO_FILE_INPUT_ERRATO: printf ("I file di input hanno un formato errato\n"); break; default: printf ("Codice ritornato non riconosciuto!\n"); 25
26 C/2: Controllo parentesi Problema Si vuole realizzare un programma in linguaggio C in grado di leggere un file di testo in codice C, e di controllare che per ogni parentesi graffa e tonda aperta ce ne sia una chiusa corrispondente (vengono verificate anche le parentesi all'interno dei commenti). Una parentesi graffa non può apparire mentre ci sono parentesi tonde aperte. Esercizio da svolgere in autonomia: modificare il programma in modo tale che le parentesi all'interno dei commenti vengano saltate (per questo occorre riconoscere le sequenze di caratteri che marcano l'inizio e la fine di un commento...) 26
27 C/2: Controllo parentesi Codice sorgente/1 /* Questo file contiene la definizione di una funzione, 'controllaparentesi', che prende in input il nome di un file che contiene codice C, e controlla che per ogni parentesi graffa e tonda aperta ce ne sia una chiusa corrispondente (vengono verificate anche le parentesi all'interno dei commenti). Una parentesi graffa non può apparire mentre ci sono parentesi tonde aperte. */ La funzione ritorna un intero, che può assumere i seguenti significati: - 0 tutto OK - 1 sono presenti delle parentesi graffe aperte - 2 sono presenti delle parentesi tonde aperte - 3 sono presenti delle parentesi graffe chiuse e mai aperte - 4 sono presenti delle parentesi tonde chiuse e mai aperte - 5 sono presenti graffe aperte o chiuse ma ci sono ancora delle tonde da chiudere - 6 impossibile aprire il file 27
28 C/2: Controllo parentesi Codice sorgente/2 #include <stdio.h> #define OK 0 #define GRAFFE_APERTE 1 #define TONDE_APERTE 2 #define GRAFFE_NON_APERTE 3 #define TONDE_NON_APERTE 4 #define GRAFFE_CON_TONDE 5 #define FILE_NON_APERTO 6 28
29 C/2: Controllo parentesi Codice sorgente/3 int controllaparentesi (char *nome_file_c) FILE *file; char curr; int graffe_aperte = 0, tonde_aperte = 0, ris = OK; /* Si apre il file di input in modalità sola lettura, file di testo; se l'operazione di apertura del file non ha successo si ritorna un errore. */ file = fopen (nome_file_c, "r"); if (file == NULL) return FILE_NON_APERTO; 29
30 C/2: Controllo parentesi Codice sorgente/4 while (ris == OK &&!feof(file)) curr = fgetc (file); if (curr == '') if (tonde_aperte > 0) ris = GRAFFE_CON_TONDE; else graffe_aperte++; else if (curr == '(') tonde_aperte++; else if (curr == '') 30
31 C/2: Controllo parentesi Codice sorgente/5 if (graffe_aperte > 0) if (tonde_aperte > 0) ris = GRAFFE_CON_TONDE; else graffe_aperte--; else ris = GRAFFE_NON_APERTE; 31
32 C/2: Controllo parentesi Codice sorgente/6 else if (curr == ')') if (tonde_aperte > 0) tonde_aperte--; else ris = TONDE_NON_APERTE; if (ris == OK && graffe_aperte > 0) ris = GRAFFE_APERTE; else if (ris == OK && tonde_aperte > 0) ris = TONDE_APERTE; fclose (file); return ris; 32
33 C/2: Controllo parentesi Codice sorgente/7 main () int ris; ris = controllaparentesi ("es_03_controlloparentesitest.c"); switch (ris) case OK: printf ("Operazione avvenuta con successo\n"); break; case GRAFFE_APERTE: printf ("Ci sono delle parentesi graffe aperte\n"); break; case TONDE_APERTE: printf ("Ci sono delle parentesi tonde aperte\n"); break; 33
34 C/2: Controllo parentesi Codice sorgente/8 case GRAFFE_NON_APERTE: printf ("Ci sono delle parentesi graffe chiuse e mai aperte\n"); break; case TONDE_NON_APERTE: printf ("Ci sono delle parentesi tonde chiuse e mai aperte\n"); break; case GRAFFE_CON_TONDE: printf ("Ci sono delle parentesi graffe aperte o chiuse con parentesi tonde da chiudere\n"); break; case FILE_NON_APERTO: printf ("Non è stato possibile aprire il file\n"); break; default: printf ("Codice ritornato incomprensibile!\n"); 34
35 Programmazione ricorsiva: ripasso/1... Dal libro di testo: Si parte dal presupposto che per moltissimi problemi la soluzione per un caso generico può essere ricavata sulla base della soluzione di un altro caso, generalmente più semplice, dello stesso problema 35
36 Programmazione ricorsiva: ripasso/2... Un sottoprogramma può dunque richiamare se stesso! Il classico esempio: la successione dei numeri di Fibonacci f 0 = 0 f 1 = 1 Per n>1, f n = f n-1 + f n-2 String reversal 36
37 Programmazione ricorsiva: ripasso/3... #include <stdio.h> int calcolafibonacci (int numero); main () int numerodacalcolare; printf ("Inserire numero: "); scanf ("%d", &numerodacalcolare); printf ("Numero di Fibonacci f(%d) = %d\n", numerodacalcolare, calcolafibonacci (numerodacalcolare)); int calcolafibonacci (int numero) if (numero == 0) return 0; else if (numero == 1) return 1; else return (calcolafibonacci (numero-1) + calcolafibonacci (numero-2)); 37
38 C/4: Palindrome Problema Si vuole realizzare un programma in linguaggio C in grado di verificare se una parola inserita dall'utente è o meno palindroma. Es: ama anna effe ereggere Il palindromo è una serie di simboli leggibile, senza cambiamento di significato, in ordine invertito. 38
39 C/4: Palindrome Codice sorgente/1 /* Questo programma prende una stringa e determina se è palindroma, cioè se è uguale sia che la si legga a partire dall'inizio, sia che la si legga a partire dal fondo. Per esempio, la parola RADAR è palindroma. Per verificare se una stringa è palindroma si usa tipicamente un algoritmo ricorsivo, che funziona nel modo che segue: 1. se la stringa da verificare è di lunghezza 1 o 0, STOP: è palindroma 2. confrontare il primo carattere con l'ultimo nella stringa: se sono diversi STOP, la stringa NON E' palindroma 3. se il primo e l'ultimo carattere sono uguali, ripetere l'algoritmo sulla stringa ottenuta eliminando il primo e l'ultimo carattere */ 39
40 C/4: Palindrome Codice sorgente/2 #include <stdio.h> #include <string.h> #include "usertypes.h" #define MAX_EL
41 C/4: Palindrome Codice sorgente/3 bool palindroma (char *s, int n_el) /* Caso di base: se la stringa ha solo 1 elemento o se è la stringa vuota, è palindroma */ if (n_el < 2) return true; /* Passo ricorsivo */ if (s[0] == s[n_el-1]) return palindroma(s+1, n_el-2); else return false; 41
42 C/4: Palindrome Codice sorgente/4 main () char parola[max_el+1]; bool palindroma (char *s, int n_el); printf ("Inserire la parola da controllare: "); scanf ("%s", parola); if (palindroma (parola, strlen(parola))) printf ("La parola \"%s\" è palindroma\n", parola); else printf ("La parola \"%s\" NON è palindroma\n", parola); 42
43 C/4: Palindrome Compito Il programma realizzato è in grado di riconoscere solo parole palindrome come ad esempio ama, anna, effe, ereggere. Da svolgere autonomamente: Modificare tale programma in modo che sia in grado leggere frasi palindrome come ad esempio Alle carte t'alleni nella tetra cella, E' corta e atroce (nota: non devono essere considerati segni di punteggiatura, accenti e spazi; cercare in rete frasi palindrome da verificare...) 43
44 C/5: Binary search Problema Si vuole realizzare un programma in linguaggio C che acquisisca una sequenza di interi, e li inserisca in modo ordinato (in ordine crescente) in un array di elementi. Viene data poi la possibilità all'utente di inserire un valore da cercare nell'array. La ricerca viene fatta con l'algoritmo di ricerca binaria (quello dell'elenco telefonico...). 44
45 C/5: Binary search Codice sorgente/1 /* Questo programma prende una sequenza di interi, e li inserisce in modo ordinato (in ordine crescente) in un array di elementi. Viene chiesto all'utente di inserire un valore da cercare nell'array. La ricerca viene fatta con l'algoritmo di ricerca binaria (quello dell'elenco telefonico...). */ Gli scopi della funzione definita in questo programma sono di mostrare come in realtà gli array siano SEMPRE passati per indirizzo (funzione inser_ord), e fare un esempio di funzione ricorsiva (binary_search) #include <stdio.h> #include "usertypes.h" #define MAX_EL
46 C/5: Binary search Codice sorgente/2 /* la funzione prende un array di interi a (il quale ha le prime n_el caselle occupate) e inserisce in modo ordinato un nuovo intero v, se v ancora non esiste nell'array. Se l'operazione va a buon fine viene restituito l'indice in cui viene inserito il nuovo elemento e il numero di elementi nell'array viene incrementato di 1, altrimenti viene restituito -1 (una variante rispetto all'uso di un tipo bool apposito). Si tratta l'array con la sintassi degli array, quindi si riferiscono gli elementi con le parentesi quadre. */ 46
47 C/5: Binary search Codice sorgente/3 int inser_ord (int v, int a[max_el], int *n_el) /* possibile intestazione anche per la funzione: int inser_ord (int v, int a[], int *n_el) int inser_ord (int v, int *a, int *n_el) */ int j, i=0; while (i<*n_el && a[i] < v) i++; /* Se il valore esiste già si ritorna -1 senza modificare l'array */ if (i<*n_el && a[i] == v) return -1; 47
48 C/5: Binary search Codice sorgente/4 else /* Prima di tutto si spostano tutti gli elementi nell'array in avanti di un posto */ for (j=*n_el; j>i ; j--) a[j] = a[j-1]; a[i] = v; *n_el = *n_el+1; /* Attenzione perchè se si scrive *n_el++ non è corretto perchè viene incrementato l'indirizzo contenuto in n_el, invece che il contenuto della cella in cui indirizzo è in n_el */ return i; 48
49 C/5: Binary search Codice sorgente/5 /* Notare come in realtà in questo programma non si faccia per niente uso della costante 'MAX_EL'. In effetti, per il C, scrivere che un parametro in ingresso è "int a[max_el]", oppure è "int a[]", oppure ancora (ed è la scrittura più comune) è "int *a" non cambia niente, le tre scritture sono del tutto equivalenti. Non è quindi possibile verificare che l'array passato sia effettivamente della lunghezza MAX_EL (si potrebbe tranquillamente chiamare la funzione passando un array di MAX_EL*2 elementi, e il compilatore non segnalerebbe nessun errore), ne è possibile verificare che nell'array ci sia ancora spazio: è la funzione chiamante che deve preoccuparsi di passare un array che abbia ancora delle caselle libere per inserire l'elemento nuovo */ 49
50 C/5: Binary search Codice sorgente/6 /* In questa procedura, che stampa i primi n_el elementi di un array a di interi, si tratta l'array come un puntatore (perchè un array in realtà è un puntatore). Invece di fare riferimento agli elementi con la notazione con le parentesi quadre, si utilizza la notazione dei puntatori (con gli '*') */ void stampa_array (int *a, int n_el) int i; for (i=0 ; i<n_el ; i++) printf ("%d ", *(a+i)); printf ("\n"); 50
51 C/5: Binary search Codice sorgente/7 /* Questa funzione prende in ingresso un array ordinato di interi (insieme al numero di caselle occupate dell'array), e un valore, e ritorna true o false a seconda che il valore passato sia presente nell'array o no. */ L'algoritmo che viene usato è tipicamente ricorsivo: 1. Passo di base: se l'insieme in cui cercare è vuoto STOP, l'elemento NON esiste; 2. Passo ricorsivo: si prende l'elemento di mezzo dell'insieme; se l'elemento è uguale a quello cercato STOP, l'elemento è stato trovato; se l'elemento di mezzo è MAGGIORE di quello cercato, applicare la ricerca binaria alla prima metà dell'insieme, altrimenti applicare la ricerca binaria alla seconda metà dell'insieme. 51
52 C/5: Binary search Codice sorgente/8 bool binary_search (int v, int *a, int n_el) /* Caso di base: se l'insieme è vuoto, l'elemento cercato non esiste */ if (n_el == 0) return false; /* Passo ricorsivo */ if (a[n_el/2] == v) return true; else if (a[n_el/2] > v) return binary_search (v, a, n_el/2); else return binary_search (v, a+n_el/2+1, n_el/2-1+n_el%2); 52
53 C/5: Binary search Codice sorgente/9 /* La parte più complessa è definire correttamente in C la forma delle due metà dell'insieme di partenza. Nel caso in cui si debba applicare la ricerca binaria alla SECONDA metà dell'insieme di partenza, si deve passare (ricorsivamente) alla funzione "binary_search" la seconda metà dell'array a. Per fare questo si passa l'indirizzo della casella dell'array successiva a quella che si trova a metà array (inizio della seconda metà dell'array a), e si specifica che la lunghezza di questa parte dell'array è n_el/2-1+n_el%2 Infatti, supponendo che n_el sia 8, e quindi che gli indici delle caselle nell'array a vadano da 0 a 7: a[n_el/2] (ovvero l'elemento di indice 4, che è il quinto) è l'elemento di mezzo che viene confrontato con v. Se v è maggiore di a[n_el/2] (quindi si trova nella seconda metà), si effettua la ricerca binaria sull'insieme [5 6 7], che è in effetti la parte di array che inizia dall'indice n_el/2+1, ed è lunga n_el/2-1+n_el%2, cioe' = 3 */ 53
54 C/5: Binary search Codice sorgente/10 main() int dati[max_el], dato_corr; int num_el=0; int inser_ord (int v, int a[max_el], int *n_el); bool binary_search (int v, int *a, int n_el); void stampa_array (int *a, int n_el); do printf ("Inserire elemento (0 per terminare, max %d elementi): ", MAX_EL); scanf ("%d", &dato_corr); 54
55 C/5: Binary search Codice sorgente/11 /* Qui si inserisce anche lo 0! */ inser_ord (dato_corr, dati, &num_el); /* num_el viene passato per indirizzo, viene incrementato solo se l'elemento non esiste già nell'array. */ Notare come sia possibile non assegnare il valore ritornato da una funzione, il quale in questo caso viene ignorato printf ("Nuova situazione dell'array:\n"); stampa_array (dati, num_el); while (dato_corr!= 0 && num_el<max_el); 55
56 C/5: Binary search Codice sorgente/12 do printf ("\ninserire elemento da cercare (0 per terminare): "); scanf ("%d", &dato_corr); if (binary_search (dato_corr, dati, num_el) == true) printf ("\nil numero %d è presente nell'array\n", dato_corr); else printf ("\nil numero %d NON è presente nell'array\n", dato_corr); while (dato_corr!= 0); 56
57 C/compito: La torre di Hanoi Problema Si vuole realizzare un programma in linguaggio C in grado di giocare al gioco della torre di Hanoi (v. libro di testo). Da Wikipedia: La Torre di Hanoi è un rompicapo matematico composto da tre paletti e un certo numero di dischi di grandezza decrescente, che possono essere infilati in uno qualsiasi dei paletti. Il gioco inizia con tutti i dischi incolonnati su un paletto in ordine decrescente, in modo da formare un cono. Lo scopo del gioco è portare tutti dischi sull'ultimo paletto, potendo spostare solo un disco alla volta e potendo mettere un disco solo su un altro disco più grande, mai su uno più piccolo. Tower of Hanoi 57
58 C/compito: La torre di Hanoi Buone vacanze Buon lavoro ;-) 58
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
DettagliOperazioni 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
DettagliI 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
DettagliGestione 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
DettagliGestione 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
DettagliLinguaggio 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
DettagliGESTIONE 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
DettagliEsercizi. 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
Dettaglifile 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
DettagliScrittura 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
DettagliI 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
DettagliGestione 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
DettagliDIPARTIMENTO 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
DettagliEsercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
DettagliFile 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
DettagliGestione dei File. Indice. Il file system in C. Principali operazioni sui file (dalla Standard Library) Esempi. Corso di Informatica A.
Gestione dei File Corso di Informatica A Vito Perrone 1 Il file system in C Indice Principali operazioni sui file (dalla Standard Library) Esempi 2 Il file system in C Flusso di comunicazione: binario
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliQuicksort e qsort() Alessio Orlandi. 28 marzo 2010
Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.
DettagliFile 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
DettagliLa 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,
Dettagliint ninv; /* numero di inventario */
1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti
DettagliGestione 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
DettagliC: 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
DettagliI 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
DettagliGestione 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
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
DettagliI file. un file è una sorgente/destinazione di dati per diversi attori
I file Il file è un astrazione molto ampia nella descrizione di un sistema informatico: Il concetto di file è uno snodo fondamentale di flussi di informazione anche tra applicazioni diverse un file è una
DettagliI 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
DettagliSuggerimenti, 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
DettagliSommario 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
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliGestione 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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliGestione dei file in PHP
Gestione di File Gestione dei file in PHP Per aprire un file è sufficiente utilizzare la funzione resource fopen(string filename, string mode) filename rappresenta il file da aprire mode rappresenta la
DettagliEsercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
DettagliC espressioni condizionali
C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera
DettagliEsercizio 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
DettagliIntroduzione 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
DettagliEsercizio 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
DettagliProgrammazione di base
Fondamenti di Informatica Testo A Secondo Appello 016-17 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene
DettagliFondamenti di Informatica
Cosa sono i file? Un file è un archivio di dati che puo essere registrato su un supporto di massa (testo, lettera, programma, archivio di dati, ecc.) Fondamenti di Informatica 12. Linguaggio C - Gestione
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliFile binari, Operazioni sui File binari, Allocazione dinamica della memoria
File binari, Operazioni sui File binari, Allocazione dinamica della memoria Vitoantonio Bevilacqua bevilacqua@poliba.it Parole chiave: File binari, Funzioni principali file binari, Funzione malloc, Allocazione
DettagliIndice. 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
DettagliIntroduzione 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:
DettagliCapitolo 11 Elaborazione di file
1 Capitolo 11 Elaborazione di file 11.1 Introduzione 2 I file Possono essere creati, modificati, ed elaborati da programmi scritti in C Sono utilizzati per la memorizzazione permanente dei dati La memorizzazione
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliEsercizio 1: calcolo insieme intersezione
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************
DettagliLaboratorio 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
DettagliAlgoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
DettagliLe 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- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t);
Appello 12.09.2007-1- punti 15 (4+6+5) a) ctunes è un programma per la gestione di archivi musicali; serve per raccogliere informazioni riguardanti tutti i file musicali presenti su un computer e per creare
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliUn 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
DettagliSono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n').
I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliLinguaggio C Gestione File
Gestione File: Il file è l'unità logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati non limitata dalle dimensioni della memoria centrale. Nel linguaggio
DettagliLab 10 Gestione file di testo
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 10 Gestione file di testo Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome
DettagliProgrammazione di base
Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,
DettagliLA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.
I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright
DettagliRelativamente 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
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 13/03/07 Nota Questi lucidi sono tratti
DettagliCaratteri 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
DettagliESERCIZIO: Lettura/Scrittura Array
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
DettagliFILE: 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
DettagliIL 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
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti
DettagliIl 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;
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi di riepilogo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi di riepilogo Indice 1 File... 3 1.1 Codifica file di testo...3 1.2 Elimina tag HTML...4 1.3 File binario ordinato...6 1.4 Archivio film...7 1.5 Archivio
DettagliArray. 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
DettagliInput/output in C e in C++
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni
DettagliComplementi. - 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
DettagliInput robusto. I/O Avanzato e File. Lettura da file. Input robusto. Esempio. Errori di formato
Problemi nella lettura da file Soluzione basata su fgetc Funzione sscanf Soluzione basata su fgets I/O Avanzato e File 2 Lettura da file I file di testo contengono dati secondo un certo formato È semplice
DettagliINTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C
12 10 8 INTRODUZIONE 6 4 ALLA PROGRAMMAZIONEColonna 1 Colonna 2 Colonna 3 in linguaggio C 2 0 Riga 1 Riga 2 Riga 3 Riga 4 di Mauro Casula { Scopi del seminario Essere chiaro ed esauriente; Spiegare nei
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliUnità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
DettagliLinguaggio C. Esercizio 1
Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili
DettagliLezione 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
DettagliInformatica 1. Prova di recupero 15 Febbraio 2005
Informatica 1 Prova di recupero 15 Febbraio 2005 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliCapitolo 5 -- Stevens
Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano
DettagliIntroduzione. 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
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Introduzione al C + Array
DettagliAnche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 27 novembre 2007 In C una stringa è rappresentata da una sequenza di caratteri terminante con il carattere nullo \0 il cui valore è
DettagliEsercizio 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
DettagliIL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
DettagliCorso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliEsercizio 1: Puntatori impiegati che sono manager
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliFondamenti di Informatica T. Linguaggio C: File
Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.
DettagliEsercizi su programmazione ricorsiva 1. Pericle Perazzo 23 marzo 2012
su programmazione ricorsiva 1 Pericle Perazzo pericle.perazzo@iet.unipi.it http://info.iet.unipi.it/~fondii/ 23 marzo 2012 Ripasso di programmazione ricorsiva Ripasso di programmazione ricorsiva Algoritmo
DettagliImplementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliCome usare la ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Come usare la ricorsione 2 1 Risolvere un problema per ricorsione 1. Pensa ad un problema piu piccolo (di taglia
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliUniversità 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
DettagliCostruiamo un programma per crittografare del testo
Costruiamo un programma per crittografare del testo Per codificare un messaggio in modo tale che il suo testo non risulti leggibile a persone che non siano in possesso dell'opportuna procedura di decodifica,
Dettagli