Sequenza | Selezione | Iterazione | Funzioni | Ricorsione | Operat. su interi | Stringhe | Vettori | Array |
Tabelle | File | Liste | Alberi | Esami Maturità | Preparazione esami | Database | Macchina di Turing | Automi |
Algebra | Geometria | Giochi |
Esercizi sui File
1 |
Si deve organizzare un file che, per ogni
elemento, contenga informazioni del tipo: Nel file si vogliono elementi in ordine crescente sul campo "identificatore", inoltre si vuole un'organizzazione che permetta di trovare velocemente tutti gli identificatori degli elementi che hanno lo stesso valore nel campo proprietà. Dare un'ipotesi di struttura per gli elementi del file che permetta di evadere le richieste. Scrivere una procedura che, ricevendo come parametro un valore per il campo "Proprietà" produca un elenco di tutti gli "identificatori" degli elementi che hanno quel valore come proprietà". (Fare tutte le ipotesi aggiuntive che si ritengono necessarie). Scrivere la parte di programma per creare la prima delle liste che concatenano gli elementi con lo stesso valore nel campo proprietà. Procedimento consigliato: il valore del campo proprietà su cui fare il concatenamento è quello del primo elemento del file. Per concatenare gli elementi, conservare la posizione dell'elemento in cui va inserito il puntatore, scorrere sequenzialmente il file fino al prossimo elemento da concatenare (se c'è), quando si trova, inserire la sua posizione, ottenuta contando le letture, nel campo puntatore dell'elemento conservato prima e quindi proseguire per tutto il file.
|
2 |
Una compagnia di assicurazioni tiene in un file i dati relativi ai clienti (nome, cognome, indirizzo, targa auto assicurata); in un altro file i dati relativi ai contratti di assicurazione (numero polizza, targa auto assicurata, ammontare della rata annuale, dati di scadenza, un campo per indicare se la rata è stata pagata oppure no). Scrivere un programma che permetta di:
|
3 |
Un file di nome ACQUARIO, contiene le temperature dell'acqua, rilevate ogni ora, durante un giorno, in un acquario. Si vuole sapere qual è la temperatura più bassa che è stata registrata, quante volte ed in quali ore del giorno è stata registrata. |
4 |
Una mostra di scultura è aperta dall'1 al 20 di aprile. Il numero di visitatori di ogni giorno è registrato in un file di nome MOSTRA.
Si vuole sapere quanto è stato il massimo
numero di visitatori in un giorno, quante volte ed in quali giorni del mese
è stato registrato tale numero. |
5 |
In un ospedale viene registrato, per ogni giorno dell'anno (da 1 a 365), il numero di nascite avvenute in quel giorno. Questi numeri sono memorizzati in un file di nome NATI.
Si vuole sapere, a fine anno, quanto è
stato il maggior numero di nascite in un giorno, quante volte ed in quali
giorni è stato registrato tale numero. |
6 |
Durante un esperimento di laboratorio viene rilevata, ogni secondo, per 100 secondi, la velocità di un oggetto in movimento. I valori rilevati sono memorizzati in un file di nome MOTO.
Si vuole sapere quanto è la minima
velocità registrata, quante volte ed in quali secondi è stata registrata.
|
7 |
Un ente pubblico finanzia dei progetti di ricerca, e vuole registrare le informazioni necessarie per poter sapere, dato il nome di un progetto, il denaro stanziato per tale progetto, inoltre vuole poter avere l'elenco dei progetti per cui è stata stanziata una somma in denaro inferiore o superiore ad un valore assegnato.
|
8 |
Una pizzeria vuole organizzare in modo automatico la raccolta delle ordinazioni ai tavoli e lo smaltimento delle richieste nelle cucine. Ogni tavolo è fornito di un piccolo terminale attraverso il quale può fare le proprie ordinazioni. Sul video com-pare l'elenco dei diversi tipi di pizza e delle diverse bevande. Dal tavolo viene trasmessa l'ordinazione attraverso la tastiera con l'indicazione di tipo e quantità di pizze e bevande. La cucina riceve ordinazioni in sequenza e prepara quanto richiesto. Ogni volta che un'ordinazione è esaudita deve essere eliminata dalle richieste delle cucina.
|
9 |
Una associazione sportiva dispone di molte palestre, in ognuna di queste sono organizzati più corsi di attività sportive diverse. E' possibile iscriversi a più corsi in più palestre. Si vogliono organizzare archivi relativi alle palestre, ai corsi ed agli iscritti. Descrivere una possibile organizzazione di tali archivi, che renda agevoli le seguenti ricerche:
Individuare altre eventuali ricerche possibili sulla organizzazione proposta.
|
10 |
Un giovane intraprendente organizza una "società di facili guadagni" nel modo seguente: Spedisce a due conoscenti una lettera chiedendo ad ognuno di inviargli una certa quantità di denaro subito, ed una percentuale fissa per ogni quantità di denaro che essi riceveranno in seguito; chiede inoltre che ognuno dei due spedisca una richiesta analoga ad altre due persone. Si domanda:
|
11 |
Si vuole creare un sistema informativo per una catena alberghiera. Nella catena esistono alberghi di prima, seconda e terza categoria, in località turistiche di mare, montagna o lago.
Ogni albergo dispone di stanze a uno, due
o tre letti, con o senza bagno. Si chiede di definire l'organizzazione dei
dati per rispondere a richieste di prenotazione o di disponibilità; si
chiede inoltre di descrivere sinteticamente una procedura di ricerca per una
delle due richieste previste. |
12 |
Si vuole usare una tabella hash per ottenere, da un numero telefonico, il nome e l'indirizzo dell'abbonato corrispondente. Si supponga di dover affrontare il problema per un comune di circa 300 abbonati.
|
13 |
Si vogliono memorizzare in una tabella di tipo hash i numeri di targa degli autotreni della provincia di Livorno, ed i numeri di telaio dei veicoli corrispondenti. Si supponga che il numero degli autotreni sia circa 200.
|
14 |
In un archivio vanno memorizzate le seguenti informazioni:
relative ad una serie di rilevazioni. Poiché‚ i dati vengono inseriti da tastiera, si richiede di controllare la correttezza prima della registrazione. Fare un'analisi delle procedure di acquisizione e controllo dei dati nei tre casi e svilupparne una in modo completo.
|
15 |
Un provveditorato agli studi vuole avere una registrazione di tutte le scuole della provincia e del numero di alunni di ogni scuola, in modo da poter ottenere, dato il nome di una scuola, il numero dei suoi alunni, oppure l'elenco delle scuole con un numero di alunni inferiore o superiore ad un valore assegnato.
|
16 |
Si vogliono avere registrate le seguenti informazioni sugli alberghi di una località balneare: nome dell'albergo, numero di posti disponibili. Questo per poter ricercare, da un albergo, il numero di posti disponibili, oppure per avere un elenco degli alberghi con ricettività maggiore o minore di un valore dato.
|
17 |
Si vuole avere la registrazione dei comuni di una regione e del numero di abitanti di ogni comune, in modo da poter sapere, dato un comune, quanti abitanti ha, oppure quali comuni hanno un numero di abitanti maggiore o minore di un valore assegnato.
|
18 |
Una biblioteca gestisce i prestiti in modo automatico. Per ogni libro in prestito vengono registrati: il codice del libro (10 caratteri), il numero di tessera di chi chiede il libro (8 caratteri), la data del prestito. Il bibliotecario registra i prestiti e le restituzioni dei libri utilizzando un programma che viene mandato in esecuzione all'apertura della biblioteca e resta in esecuzione fino alla chiusura della biblioteca. Descrivere l'organizzazione dei dati e realizzare il programma.
|
19 |
Un'azienda ha alle dipendenze poco meno di cento addetti. Nel suo centro di calcolo è presente un archivio su disco che per un ben determinato mese contiene gli istanti di entrata e di uscita dei propri dipendenti. Il file è stato ottenuto attraverso il rilevamento automatico di presenze che prevede che il dipendente al momento dell'entrata si "annunci" facendo passare la sua "targhetta" nell'apposito rilevatore, e faccia altrettanto all'uscita. Ma questo a noi non interessa. Il record del file mensile contiene: la matricola del dipendente, l'anno, il mese, il giorno di entrata, l'ora di entrata, il minuto di entrata, il giorno di uscita, l'ora di uscita, il minuto di uscita. Esistono periodo lavorativi che sono a cavallo di due giorni: esempio il dipendente che entra alle ore 22 di stasera ed esce alle ore 6 di domani. Per ogni lavoratore vi sono più record inerenti a tutti i periodi lavorati nel mese e sono fisicamente e logicamente contigui nel file: sono i record che hanno la stessa matricola. E' garantito che l'archivio contenga dati validi nel senso che essi si riferiscono ad un ben preciso mese di un anno esistente che è uguale per tutti i record. Ancora, è garantito che l'istante di entrata preceda quello di uscita. Lo studente deve elaborare questo archivio al fine di stabilire quante ore e quanti minuti ciascun dipendente ha lavorato nel mese. Successivamente arrotondare i minuti alla mezza ora con le seguenti regole:
Le ore si considerino da 00 a 23. Esiste un secondo archivio anagrafico che contiene tra l'altro le generalità di ciascun dipendente. La chiave di questo archivio è la matricola. Esso contiene anche altri tre campi: anno, mese ed ore lavorate (di tipo float: esempio 120.5 significa 120 ore e 30 minuti). Lo studente, sulla base delle ore che scaturiscono dalla prima elaborazione, deve aggiornare il secondo archivio nei tre campi appena citati. Infine, lo studente deve produrre una stampa su carta dell'anagrafico evidenziando il cognome, il nome, la matricola e le ore. Lo studente deve, altresì, fare ipotesi aggiuntive che non sono state previste da questo testo, ma che sono necessarie per rendere la soluzione più valida e rispondente ai quesiti proposti. In particolare deve:
|
20 |
In un settore di un ufficio, gli impiegati sono sistemati in stanze occupate da una o più persone, con un telefono per stanza. Una rubrica di numeri di telefono, interni al settore, è disponibile su un file, ciascun record del quale contiene il nome di un impiegato (di 16 caratteri) ed il suo numero di telefono. Il file è in ordine alfabetico in base al nome degli impiegati. Scrivere un programma che legge la rubrica, e stampa un elenco degli impiegati di ogni stanza (con il relativo numero di telefono). Gli elenchi vanno stampati in ordine crescente di numero telefonico, ed i nomi degli impiegati di ogni stanza in ordine alfabetico. |
21 |
Una società di vendita per corrispondenza memorizza in un file su disco gli ordini giunti in sede. Dopo aver strutturato opportunamente il tipo base del file, realizzare un algoritmo che ordini in un altro file le richieste per località di destinazione, in modo tale, cioè, che gli ordini provenienti da una stessa città risultino consecutivi nel file destinazione.
|
22 |
Solo per gioco, si consideri che le 9 materie del corso di informatica siano solamente "orali". Sono abolite le prove scritte, pratiche e grafiche. Le materie sono codificate con i primi numeri naturali, cioè: 01 = italiano, 02 = storia, ecc.. (si può partire anche da 00). Si consideri un primo file "movimenti" di tipo sequenziale che contiene le seguenti informazioni: codice studente, data del voto o dell'assenza, codice materia, tipo di movimento, quantità, flag. Sui primi campi non vi sono dubbi. Il tipo di movimento può essere 'A' oppure 'V' col significato di assenza o di voto. La quantità rappresenta il voto oppure le ore di assenza. Il flag ha valore '0' od '1' per significare rispettivamente se il record deve essere ancora trasferito o se è già stato trasferito. Alla fine di ogni quadrimestre il file movimenti viene elaborato al fine di aggiornare un secondo file anagrafico che contiene i voti e le assenze di ciascun studente, in particolare: il codice studente, il cognome e il nome, un vettore di 9 campi per i voti, un vettore di 9 campi per le assenze. Tutti i campi partono da zero, e si considerano già inizializzati. I voti vengono accumulati e contati, nel senso che se uno studente prende in date diverse, sei, sette, sei in una stessa materia, avrà 19 nel campo voti e 3 nel conteggio voti per quella materia. Il file anagrafico di tipo hash, una volta aggiornato sulla base dell'archivio movimenti, rappresenta il "tabellone" quadrimestrale da esporre nell'atrio. Si limiti l'archivio alla sola informatica e si supponga che i "movimenti" si riferiscano ad un solo quadrimestre. Si elabori l'archivio movimenti e si produca la stampa del tabellone. Una intestazione, ed una riga per studente con i voti interi arrotondati con la regola dello 0.75 e con le ore di assenza disciplina per disciplina. Si aggiungano tutte le ipotesi che si ritengono necessarie, ancorché limitative.
I voti di partenza possono essere interi
o float, quelli di arrivo interi. |
23 |
Una casa editrice pubblica una rivista con le seguenti caratteristiche:
Attualmente la gestione degli abbonamenti è manuale ed è effettuata per mezzo di cartoncini che recano scritti i seguenti elementi:
Al momento dell'invio della rivista viene consultato lo schedario che contiene questi cartoncini; per coloro che sono in regola con l'abbonamento viene scritta una fascetta con sopra l'indirizzo, vengono eliminati i cartoncini relativi ad abbonamenti scaduti e vengono inseriti quelli relativi a nuovi abbonamenti. Progettare una procedura che automatizzi il procedimento sopra descritto; tale progetto deve prevedere sia la fase di inizializzazione che quella di mantenimento. Si richiedono inoltre le specifiche dei vari programmi che compongono la procedura (dati di input, output, trattamento subito dagli stessi dati, relativi tracciati), le interrelazioni tra gli stessi e lo sviluppo particolareggiato, sia a livello di diagrammi che di minutazione, di uno dei programmi che compongono la procedura.
|
24 |
In un file di nome PARTECIPANTI e di tipo base PARTECIPANTE:
sono stati raccolti i nomi e cognomi e il numero di iscrizione dei partecipanti ad una gara di tiro al piattello, con tutti i campi PUNTI messi al valore zero. A fine gara, si vuole costruire un file CLASSIFICA nel quale i record dei partecipanti devono comparire in ordine di punteggio, e con il campo PUNTI opportunamente riempito. Alla fine della costruzione della classifica si vogliono ottenere, a menù, le seguenti informazioni:
|