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 20 giugno 2000 -- 1a prova scritta
tempo a disposizione: 2 ore

Problema 1 (18 punti) Un tifoso di calcio scrive su un file di testo i risultati delle partite a cui è interessato. Per ogni partita sono rappresentate nel file le seguenti informazioni:

Ad esempio, in un certo istante il file potrebbe contenere le seguenti informazioni:
PRATO     NARNI     4 3
CROTONE   PERUGIA   0 0
TERNI     SPOLETO   2 2
GENZANO   PRATO     0 3
PERUGIA   LADISPOLI 0 0
SPOLETO   CROTONE   2 2
GELA      COMO      1 0
GELA      BARI      0 2
BARI      TERNI     2 2

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 argomenti il nome fisico f del file che contiene i dati e i nomi di due squadre p ed s, e restituisce una lista l contenente, nell'ordine, i dati relativi a tutte e sole le partite in cui p ha vinto, seguiti dai dati relativi a tutte e sole le partite in cui s ha vinto. Ad esempio, facendo riferimento al file sopra riportato e alle squadre PRATO e GELA, l'unità deve restituire la lista con le seguenti informazioni:

   __    ____________________    __________________    _____________ __
  |  |  |       |     | | |  |  |     |     | | |  |  |    |    | | |\ |
l | -+->|GENZANO|PRATO|0|3| -+->|PRATO|NARNI|4|3| -+->|GELA|COMO|1|0| \|
  |__|  |_______|_____|_|_|__|  |_____|_____|_|_|__|  |____|____|_|_|__|

3.
Scrivere una (o più) unità di programma Pascal che riceve come argomenti il nome fisico f del file che contiene i dati e il nome fisico g di un file di testo, e scrive su g il nome della squadra o delle squadre che hanno effettuato il massimo numero di pareggi. Ad esempio, facendo riferimento al file sopra riportato, il massimo numero di pareggi effettuato da una stessa squadra è 2, e quindi l'unità di programma deve produrre il file con le seguenti informazioni:
SPOLETO   
TERNI     
PERUGIA

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 20 giugno 2000 -- 2a prova scritta
tempo a disposizione: 1 ora

Problema 2 (4 punti) Illustrare almeno due fra le principali qualità del software, e per ognuna di esse illustrare almeno un metodo per aumentarla.

Problema 3 (4 punti)

Si consideri il seguente programma Pascal:

program What;
  function Boh(i: integer):integer;
  begin
    if i mod 2 = 0
      then Boh:= 1 + Boh(i div 2)
      else Boh:= 0
  end; { Boh }
begin
  writeln(Boh(24))
end. { What }

Problema 4 (4 punti) Data una matrice di interi M di dimensione 2 X C (C >= 2), si definisce ``l'allungamento'' di M la matrice di dimensione C X C la cui riga di indice i (1 <= i <= C)è:

Ad esempio, poniamo C=5 e sia M la seguente matrice:

2 3 4 5 6
9 8 7 6 5

L'allungamento di M è la seguente matrice:

2 3 4 5 6
9 8 7 6 5
2 3 4 5 6
9 8 7 6 5
2 3 4 5 6

1.
Scrivere un sottoprogramma Fortran che, ricevendo come parametro una matrice M di dimensione 2 X C (C >= 2), con indici da 1 ad 2 per le righe e da 1 a C per le colonne, calcoli e restituisca in modo opportuno al programma chiamante la matrice allungata di M.

2.
Scrivere un programma principale Fortran che:
(a)
crei la matrice M di esempio, sopra riportata,
(b)
invochi l'unità di programma progettata, su tale matrice.