Diploma Universitario in Ingegneria Elettronica

Diploma Universitario in Ingegneria Informatica

Fondamenti di Informatica I e II

Prova d'esame del 20 settembre 1999

Domande per chi deve sostenere la prova di Fondamenti I:

1. Trattare l'argomento relativo ai codici ridondanti; descrivere il codice di parità e il codice ciclico

2. In quali circostanze una variabile locale a una funzione può essere definita static? Quale vantaggio offre questa definizione?

3. Che cosa si intende per ambito o scope di una variabile all'interno di un programma?

4. Che cos'è la ricorsione? Quali vantaggi presenta?

Domande per chi deve sostenere la prova di Fondamenti II:

1 Si definisca il concetto di grafo.

2 Si descrivano almeno due possibili metodi di rappresentazione di un grafo, se ne confrontino vantaggi e svantaggi.

3 Facendo riferimento ad una delle due rappresentazioni prescelte si analizzino i metodi di ricerca in profondità e in ampiezza.

Esercizio di programmazione da svolgere al computer per Fondamenti I e II:

Il file "giacenze.dat" contiene le giacenze di magazzino dei prodotti di un'azienda. Ogni riga del file comprende due campi separati da punto e virgola:

a) codice del prodotto (intero)

b) giacenza (intero)

Scrivere un programma in linguaggio C che legga il contenuto del file e lo memorizzi in un'opportuna struttura di dati. Il programma deve quindi leggere il contenuto di un secondo file di nome "ordini.dat", le cui righe, costituite da due campi separati tramite punto e virgole:

a) codice prodotto (intero)

b) quantità ordinata (intero)

rappresentano ordini di prodotti dell'azienda. Per ogni riga di ordine, occorre aggiornare la giacenza del corrispondente prodotto; al termine si devono memorizzare le nuove giacenze su disco, sovrascrivendo il file originario "giacenze.dat", e visualizzare il codice dei prodotti la cui giacenza ha valore nullo (si suppone che gli ordini siano tali per cui le giacenze finali siano positive o al più nulle).

Il programma deve essere adeguatamente commentato; le prime righe devono contenere i dati anagrafici del candidato, ben evidenziati .

Al termine della prova salvare il programma nel direttorio radice dell'unita' disco F: ; i primi 8 caratteri del nome del candidato rappresenteranno il nome del programma (estensione .C).

Per chi deve sostenere la prova di Fondamenti I:

Si ipotizzi un numero massimo di codici prodotto. Si memorizzino i dati, in memoria centrale, utilizzando un array di strutture.

Per chi deve sostenere la prova di Fondamenti II (I+II):

Non si facciano ipotesi sul numero di prodotti trattati. Si memorizzino i dati in un albero binario di ricerca sfruttando l'allocazione dinamica della memoria. Prima di far terminare il programma si liberi la memoria allocata dinamicamente.