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.
-
program magico;
-
..var
-
....m, n: integer;
-
function pippo (m, n: integer): integer;
-
..begin
-
..if
(n <= m) and (m mod n = 0) then
-
........pippo :=
n
-
..else
if n > m then
-
..........pippo :=
pippo(n, m)
-
.....else
-
..........pippo :=
pippo(n, m mod n);
-
..end;
-
begin
-
..readln(m, n);
-
..writeln(pippo(m+1,
n+1));
-
end.
-
Dowload
testo in formato Word.