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:
- nome squadra che gioca in casa (10 caratteri, compresi spazi finali);
- nome squadra che gioca in trasferta (10 caratteri, compresi spazi
finali);
- goal squadra che gioca in casa (intero non negativo);
- goal squadra che gioca in trasferta (intero non negativo).
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 }
- Descrivere cosa fa (non come lo fa) la funzione Boh.
- Che valore viene stampato dal programma? Mostrare l'evoluzione della
pila dei record di attivazione.
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)è:
- uguale alla riga 1 di M, se i è dispari,
- uguale alla riga 2 di M, se i è pari.
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.