Università di Roma "La Sapienza" Facoltà di Ingegneria
Corso di FONDAMENTI DI INFORMATICA
Aerospaziale, Ambiente e Territorio (V.P.), Chimica, Elettrica, Materiali, Meccanica, Nucleare

PRIMA PROVA SCRITTA  1-7-99
(tempo a disposizione 120 minuti)

Problema  1 (18 punti)
Una industria alimentare  ha memorizzato in un file di record l'elenco delle materie prime necessarie alla propria produzione secondo il seguente schema:

1)  Codice prodotto (5 cifre);
2)  Quantità prodotto consumata nella settimana corrente (intero);
3)  Scorte del prodotto in magazzino (intero).

Settimanalmente l'azienda rinnova le scorte e per le materie prime ordinate sono memorizzate, su una lista rappresentata tramite record e puntatori, le seguenti informazioni:
1)  Codice prodotto (5 cifre);
2)  Quantità ordinata per la settimana successiva (intero).

1.  Scrivere le dichiarazioni dei tipi di dato Pascal da utilizzarsi per risolvere i due punti successivi;

2.  Scrivere una (o più) unità Pascal che, ricevendo come parametro il nome di un file di record riepilogativo di tutte le materie prime utilizzate in fabbrica, costruisca un nuovo file (il cui nome è anche passato come parametro) inserendovi tutte e sole le materie prime le cui scorte sono inferiori a 20.

3.  Scrivere una (o più) unità Pascal che ricevendo  come parametri il file riepilogativo delle materie prime e  la lista delle ordinazioni, costruisca, restituendola in uscita, una lista rappresentata tramite record e puntatori i cui elementi contengono i codici dei prodotti che rispettano il vincolo:

Scorte > = [quantità ordinata - quantità consumata]

Esempio. Dato il file contenente le informazioni illustrate in Figura 1, il punto 2 richiede la costruzione di un file contenente quanto mostrato in Figura 2. Data la lista illustrata in Figura 3 e il file illustrato in Figura 1, il punto 3 richiede la costruzione della lista illustrata in Figura 4.

Codice Prodotto Quantità Consumata Scorte in Magazzino
01010 30 80
01100 50 8
01011 48 10
Figura 1 (File materie prime)

Codice Prodotto Scorte in Magazzino
01100 8
01011 10
Figura 2 (File materie prime esaurite)


Figura 3 (Lista ordinazioni)


Figura 4 (Lista prodotti che rispettano il vincolo)

Università di Roma "La Sapienza" – Facoltà di Ingegneria
Corso di FONDAMENTI DI INFORMATICA
Aerospaziale, Ambiente e Territorio (V.P.), Chimica, Elettrica, Materiali, Meccanica, Nucleare

SECONDA  PROVA SCRITTA  1-7-99
(tempo a disposizione 60 minuti)

Problema 2 (4 punti)

Dato il seguente frammento di codice Pascal:

var n,m: integer;

function calc (x:integer; y:integer): integer;
begin
  if (y=1) or (y =0) then
    calc := 1
  else
    calc := calc(x+1, y-1) + calc(x, y-2)
end;

begin
  write('n : ');
  read(n);
  write(' m : ');
  read(m);
  write(calc(n,m))
end.

1.  Descrivere cosa viene stampato quando da input vengono introdotti i seguenti valori:
     n:   3
     m:  4
 

2.  Mostrare la pila di attivazione e quante volte viene attivato calc(1,1) se la funzione viene invocata con i valori
     n: 3 e m: 4;
 

Problema 3 (4 punti)

Si descrivano gli algoritmi di ordinamento Selection Sort e Merge Sort, si illustrino le differenze fra i due algoritmi.

Problema 4 (4 punti)

Si scriva un sottoprogramma Fortran che, dato come parametro una matrice di n righe ed m colonne, a valori reali, costruisca il vettore di dimensione n contenente la somma delle righe ed il vettore di dimensione m contenente la somma delle colonne.