Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Nucleare, Ambiente e Territorio (v.p.)

Appello del 15 febbraio 2000 -- 1a prova scritta
tempo a disposizione: 2 ore

Problema 1 (18 punti) Una società sportiva registra in un file tutti i dati relativi alle gare di nuoto effettuate dai suoi atleti. In particolare, per ogni gara a cui ha partecipato almeno un suo atleta sono registrate nel file le seguenti informazioni:

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, dato il nome fisico del file che contiene i dati della società, un carattere c che rappresenta uno stile ed un intero i che rappresenta la lunghezza della gara, restituisce il tempo medio riportato dai nuotatori che si sono piazzati al primo posto in gare di lunghezza i effettuate nello stile rappresentato da c. Se non ci sono stati nuotatori che si sono piazzati al primo posto nelle gare predette, ciò deve essere opportunamente segnalato.
3.
Scrivere una (o più) unità di programma Pascal che, dato il nome fisico del file che contiene i dati della società, costruisce una lista che contiene tutti e soli i nomi degli atleti che sono risultati primi in almeno due gare differenti. L'eventuale orientamento della lista è a scelta dello studente.


Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Nucleare, Ambiente e Territorio (v.p.)

Appello del 15 febbraio 2000 -- 2a prova scritta
tempo a disposizione: 1 ora

Problema 2 (4 punti) Illustrare le principali qualità del software.

Problema 3 (4 punti) Siano date le seguenti dichiarazioni in Pascal per la gestione di una pila di interi.

type
  TipoPila = (* NON INTERESSA *);

procedure InitPila (var p: TipoPila);
(* IL CODICE NON INTERESSA *)

function TestPilaVuota (p: TipoPila): boolean;
(* IL CODICE NON INTERESSA *)

procedure TopPila (p: TipoPila; var v: integer);
(* IL CODICE NON INTERESSA *)

procedure Push (var p: TipoPila; v: integer);
(* IL CODICE NON INTERESSA *)

procedure Pop (var p: TipoPila; var v: integer);
(* IL CODICE NON INTERESSA *)
Scrivere un'unità di programma Pascal che, data una pila di interi, restituisca il valore massimo contenuto in essa.

Problema 4 (4 punti) Scrivere un sottoprogramma Fortran che, ricevendo come parametro una matrice rettangolare di booleani di dimensione , calcoli e restituisca in modo opportuno al programma chiamante un vettore di n interi tale che nella sua componente generica di indice r riporti il valore i definito secondo le seguenti regole: