Concetti Chiave
- Il file PITTORI utilizza un'organizzazione sequenziale per gestire i record, che includono informazioni sui pittori.
- I record contengono CodPittore, CognomePittore, DataNascita e Genere, con specifiche di formato per ciascun campo.
- Il programma mostra.c permette operazioni come inserimento, ricerca e aggiornamento dei record, senza controlli sulla chiave primaria.
- La cancellazione dei pittori avviene in modo logico, impostando CodPittore a 0, seguita da una cancellazione fisica dei record.
- Le funzioni devono gestire anche la stampa di tutti i record e di quelli appartenenti a un certo genere, fornendo messaggi adeguati se non trovati.
Esercizio file binari
· organizzazione sequenziale
· accesso sequenziale e diretto
Scrivi un pgm C (creaPittori.c) che crea un file PITTORI avente il seguente tracciato record:
Struttura del record PITTORI
PITTORI (CodPittore, CognomePittore, DataNascita, Genere)
· CodPittore: chiave primaria, numero intero, per semplicità la inserisce l’utente da tastiera e il
sistema non fa alcun controllo. Stai attento/a a non inserire 2 record con la stessa chiave.
· CognomePittore: cognome del pittore, stringa di 25 caratteri effettivi, per semplicità
memorizziamo solo il cognome del pittore.
· DataNascita: di tipo data (struct di 3 interi: giorno, mese e anno). Non effettuare, per semplicità,
alcun controllo.
· Genere: genere del pittore, stringa di 15 caratteri effettivi. Supponiamo che ad un pittore sia
associato un unico genere.
Esempio:
CodPittore CognomePittore DataNascita Genere
001 Rossi 01/01/1945 paesaggista
002 Bianchi 12/09/1900 ritrattista
003 Verdi 02/04/1950 paesaggista
Funzioni del programma mostra.c
Scrivi poi un secondo pgm C (mostra.c) che gestisce l’archivio PITTORI.
Devono poter essere eseguite le seguenti funzioni (logiche):
a) Inserimento, in coda, di un nuovo record nel file. Per semplicità evita di controllare che la
chiave (CodPittore) sia già presente nell’archivio. Stai attento/a a non inserire 2 record con la
stessa chiave. La funzione ritorna 1 se il record è stato inserito, 0 altrimenti.
b) Ricerca di un record, data la chiave (CodPittore). La chiave deve essere un parametro di
ingresso della funzione. La funzione ritorna la posizione relativa del record nel file se il record è
presente (0, 1, 2 , ...) altrimenti -1.
c) Stampa delle informazioni di un pittore. Riceve come chiave il CodPittore, chiama la ricerca()
(vedi punto b)): se il record è presente lo stampa, altrimenti scrive un msg.
d) Stampa tutti i record dell’archivio.
e) Stampa tutte le informazioni dei pittori di un certo genere (parametro di ingresso, chiave
secondaria). Se nessun record viene trovato, la funzione stampa un msg.
f) Aggiorna il genere di un determinato pittore. Riceve il codice, chiama la ricerca, se il record è
presente aggiorna il record e la funzione (aggiorna()) ritorna 1, se il record non è presente la
funzione (aggiorna()) ritorna 0.
g) Cancella (logicamente) un certo pittore. Il parametro di ingresso è la chiave (CodPittore). Se il
record è presente (chiama la ricerca()), cancella logicamente il record mettendo nel campo
CodPittore il valore 0. In questo caso la funzione ritornerà 1, altrimenti 0 (se il pittore non è
presente). Modifica poi tutte le altre funzioni che hai già codificato, in quanto i record cancellati
(logicamente) non devono essere elaborati.
h) Cancellazione fisica dell’archivio: cancellare fisicamente tutti i record cancellati solo
logicamente.
Domande da interrogazione
- Qual è la struttura del record nel file PITTORI e quali sono i suoi campi principali?
- Come viene gestita la cancellazione di un pittore nel programma mostra.c?
Il record nel file PITTORI è composto da quattro campi principali: CodPittore (chiave primaria, numero intero), CognomePittore (stringa di 25 caratteri), DataNascita (struct di 3 interi: giorno, mese e anno) e Genere (stringa di 15 caratteri).
La cancellazione di un pittore nel programma mostra.c avviene in due fasi: cancellazione logica, dove il CodPittore viene impostato a 0, e cancellazione fisica, che rimuove definitivamente i record cancellati logicamente dall'archivio.