Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica - A.A. 1999-2000
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica, Nucleare

Appello del 10 luglio 2000 -- 1a prova scritta
tempo a disposizione: 2 ore

Problema 1  Il proprietario di una galleria d'arte possiede quadri e sculture, e memorizza su un file di testo i dati di tutte le sue opere. Per ogni opera scrive nel file le seguenti informazioni:

Ad esempio, in un certo istante il file potrebbe contenere le seguenti informazioni:

SCROFOLO      PAESAGGIO Q 1000.0
BUONARROTI    PIETA     S 1.0E+9
LEONARDO      GIOCONDA  Q 1.5E+9
DONATELLO     DAVID     S 1.0E+9
BUONARROTI    SISTINA   Q 0.8E+9
VANGOGH       GIRASOLI  Q 1.5E+9

Si richiede di risolvere i seguenti punti:

1.
Scrivere le dichiarazioni dei tipi di dato Pascal da utilizzarsi per risolvere i punti successivi.
2.
Scrivere una (o più) unità di programma Pascal che riceve come argomento il nome fisico del file f che contiene i dati e restituisce due liste l1 ed l2 contenenti, rispettivamente, i dati relativi a tutti i quadri più cari e i dati relativi a tutte le sculture più care.

Ad esempio, facendo riferimento al file sopra riportato, l'unità deve restituire le liste con le seguenti informazioni:

    __    _________________________ __    _____________________________
   |  |  |       |        | |      |  |  |        |        | |      |\ |
l1 | -+->|VANGOGH|GIRASOLI|Q|1.5E+9| -+->|LEONARDO|GIOCONDA|Q|1.5E+9| \|
   |__|  |_______|________|_|______|__|  |________|________|_|______|__|

    __    _________________________ __    ___________________________
   |  |  |          |     | |      |  |  |         |     | |      |\ |
l2 | -+->|BUONARROTI|PIETA|S|1.0E+9| -+->|DONATELLO|DAVID|S|1.0E+9| \|
   |__|  |__________|_____|_|______|__|  |_________|_____|_|______|__|

3.
Ad ogni autore è associato un valore complessivo delle opere (di entrambi i tipi) rappresentate. Scrivere una (o più) unità di programma Pascal che riceve come argomento il nome fisico del file f che contiene i dati e restituisce il valore massimo complessivo delle opere (di entrambi i tipi) di uno stesso autore. Ad esempio, facendo riferimento al file sopra riportato, l'unità deve restituire il valore 1.8E+09, che coincide con la somma dei valori delle opere di Buonarroti.

Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica - A.A. 1999-2000
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica, Nucleare

Appello del 10 luglio 2000 -- 2a prova scritta
tempo a disposizione: 1 ora

Problema 2 (4 punti)

1.
Scrivere la propria data di nascita in formato gg mm aa.
2.
Considerare le seguenti definizioni di g, m, a.
   g:= gg mod 10
   m:= - mm
   a:= aa mod 10

3.
Scrivere la rappresentazione di g, m ed a in complemento a 1, usando 5 bit.

Problema 3 (4 punti) Si consideri il seguente programma Pascal.

program Main;
const MAX =  8;
type
  CIFRA = 0..9;
  ARR   = array [1..MAX] of CIFRA;
function Cosa(a : ARR; i: integer): integer;
  begin
    if i > MAX then
      Cosa := 0
    else
      Cosa := a[i] + Cosa(a, i+1);
  end; { Cosa }
var io :  ARR;
    j  :  integer;
begin
  writeln('Inserire ordinatamente le 8 cifre del proprio numero di matricola');
  for j:= 1 to MAX do
    readln(io[j]);
  writeln(Cosa(io,1));
end. { Main }

Problema 4 (4 punti) Un file il cui nome fisico è di non più di 12 caratteri contiene righe costituite da un solo carattere. L'ultima riga contiene il carattere '$', mentre le altre righe contengono caratteri alfabetici maiuscoli.

Scrivere un sottoprogramma Fortran che:

Scrivere inoltre un programma principale che: