Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali,
Nucleare, Chimica, Ambiente e Territorio
Appello del 30-6-1997
PRIMA PARTE
Esercizio 1 (18 punti)
La biblioteca di un piccolo dipartimento possiede alcune migliaia di volumi ed è utilizzata da 50 utenti che possono prendere dei libri in prestito. La biblioteca è informatizzata e il sistema di gestione contiene l?archivio dei libri posseduti e l?archivio dei prestiti.
L?archivio dei libri posseduti è memorizzato in un file sequenziale (su disco fisso) denominato BIBLIO.DAT. Il file è un file di record di tipo Volume. Ciascun record contiene i seguenti campi:
· autore (max 30 caratteri);
· titolo (max 50 caratteri);
· prezzo (intero positivo);
· numero di inventario (intero positivo <=10000);
· prestito (boolean).
I 50 utenti sono identificati con un numero Nu (1<=Nu<=50) ed ogni utente può avere in prestito più libri. L?archivio dei prestiti è memorizzato in un array di liste: la componente i-esima dell'array è il puntatore alla lista di libri attualmente in prestito all'utente i-esimo. La lista dei libri prestati ad un utente contiene soltanto i numeri di inventario, che identificano il volume in modo univoco.
1. Scrivere le dichiarazioni di tipo necessarie per poter gestire in un programma l'archivio della biblioteca (tipo Volume e tipo del file archivio) e per rappresentare l?insieme dei libri in prestito.
2. Scrivere una procedura Pascal che, ricevendo come parametro di input un numero di inventario, restituisca
· il valore vero se il libro corrispondente è presente nell?archivio e non è in prestito
· il valore falso se il libro non è presente nell?archivio o se è in prestito.
3. Scrivere una procedura Pascal che, ricevendo come parametri di input un numero di inventario e un numero di utente e utilizzando la procedura precedente aggiorni la lista dei prestiti dell?utente e il file su cui è memorizzato l?archivio della biblioteca per tenere conto del nuovo prestito nel caso in cui esso sia possibile e stampi un opportuno messaggio qualora il prestito non sia possibile.

Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali,
Nucleare, Chimica, Ambiente e Territorio
Appello del 30-6-1997
SECONDA PARTE
Esercizio 2 (punti 4)
Elencare le principali funzioni del sistema operativo e in particolare illustrare le funzioni del gestore dei processi.
Esercizio 3 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo in ingresso una matrice quadrata di ordine N, restituisca una variabile booleana che assume il valore vero se la matrice è unitaria e falso altrimenti. Fornire le dichiarazioni da inserire nel programma principale.
Esercizio 4 (4 punti)
Siano A, B, C, D le ultime quattro cifre del numero di matricola del candidato (D è l'ultima). Che cosa stampa il seguente programma quando riceve in input i numeri AB e CD?
(Ad esempio sia 09002468 la matricola, i due numeri AB e CD sono 24 e 68).
Motivare la risposta e mostrare l?evoluzione dei record di attivazione della funzione.