Università di Roma "La Sapienza"
Facoltà di Ingegneria
Corso di Fondamenti di Informatica

Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica, Ambiente e Territorio (v.p.)

Appello del 12-1-2000. Prima prova (tempo: 2 ore).

Esercizio 1 (18 punti)

Un cliente di una banca decide di memorizzare su un file (denominato PORTFOL.DAT) il suo portafoglio titoli. Nel file sono riportate, per ogni titolo posseduto dal cliente, le seguenti informazioni:

Alla fine di ogni settimana la banca invia a tutti i clienti possessori di titoli un file (denominato VALORI.DAT) in cui sono memorizzate, per ogni titolo trattato dalla banca, le seguenti informazioni:

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, dato il file PORTFOL.DAT costruisca, e restituisca attraverso opportuni parametri di uscita, una lista, rappresentata mediante record e puntatori, in cui sono memorizzati i codici dei titoli posseduti dal cliente il cui valore complessivo, all’acquisto, è superiore a 10000 Euro.

3) Scrivere una (o più) unità Pascal che, dati i due file PORTFOL.DAT e VALORI.DAT di cui sopra, memorizzi in un nuovo file i codici di tutti e soli i titoli che nella settimana considerata hanno ottenuto un guadagno. L'unità Pascal dovrà anche fornire in output il nome fisico del file costruito.



Università di Roma "La Sapienza"
Facoltà di Ingegneria
Corso di Fondamenti di Informatica

Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica, Ambiente e Territorio (v.p.)

Appello del 12-1-2000. Seconda prova (tempo: 1 ora).

Esercizio 2 (4 punti)

Si illustri un algoritmo di visita di grafi e se ne discuta la complessità.

Esercizio 3 (4 punti)

Siano date le seguenti dichiarazioni di tipo e di variabile. Il candidato quindi consideri i quattro successivi frammenti di programma Pascal e ne discuta la correttezza sintattica, rilevando e spiegando, per ciascuno dei frammenti, la presenza di eventuali errori di sintassi.

type
  t_ai  = array [1..3] of integer;
  t_fai = file of t_ai;
  t_fi  = file of integer;

var
  i    : integer;
  x    : t_ai;
  y    : array [1..3] of t_ai;
  f_ai : t_fai;
  f_i  : t_fi;
  1. reset(f_ai);
    for i:= 1 to 3 do read(f_ai, x[i]);
    ...
    
  2. reset(f_ai);
    for i:= 1 to 3 do read(f_ai, y[i]);
    ...
          
  3. reset(f_i);
    for i:= 1 to 3 do read(f_i, x[i]);
    ...
          
  4. reset(f_i);
    for i:= 1 to 3 do read(f_i, y[i]);
    ...
          

Esercizio 4 (4 punti)

Si scriva un sottoprogramma Fortran che, dato come parametro una matrice M quadrata di ordine N, a valori interi, verifichi se per la matrice M vale la seguente proprietà: la somma degli elementi della diagonale principale è minore della somma degli elementi della diagonale secondaria.