Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica
Nucleare, Ambiente e Territorio (v.p.)
Appello del 14/4/2000 -- 1a prova scritta
tempo a disposizione: 2 ore
Problema 1 (18 punti)
Un appassionato di calcio gestisce le informazioni relative ad un
campionato di calcio (18 squadre) in un file di record, in cui ciascun elemento
è associato ad una squadra e contiene le seguenti informazioni:
- nome della squadra (max 20 caratteri);
- numero di incontri vinti;
- numero di incontri pareggiati;
- numero di incontri persi;
- numero di reti segnate;
- numero di reti subite.
Denominiamo, per comodità un file di tale tipologia file di
squadre.
Come è noto, in base ai regolamenti attuali, vengono attributi alle
squadre, ai fini della classifica, 3 punti per la vittoria, 1 punto per il
pareggio e 0 punti per la sconfitta.
Con riferimento al linguaggio Pascal, si richiede di risolvere i seguenti
punti:
- Definire i tipi di dato e dichirare le eventuali variabili globali
necessarie per risolvere i successivi punti 2 e 3. Qualora
vengano usate variabili globali è necessario motivare adeguatamente
la scelta.
- Scrivere una o più unità di programma che, ricevendo come
parametro il nome con cui è stato memorizzato un file di squadre,
calcoli e restituisca il nome della squadra che guida la classifica
corrente. A parità di punteggio, si scelga la squadra con migliore
differenza reti. A parità di punteggio e differenza reti, si scelga
arbitrariamente una delle squadre.
- Scrivere una o più unità di programma che, ricevendo come
parametro il nome con cui è stato memorizzato un file di squadre,
costruisca, restituendola, una lista collegata (rappresentata tramite
record e puntatori) in cui ciascun elemento, costituito da tre campi,
è associato ad una squadra avente differenza reti (reti segnate meno
reti subite) migliore o pari a quella della squadra che guida attualmente
la classifica. I campi sono utilizzati per memorizzare il nome della
squadra, la sua differenza reti ed il puntatore all'elemento successivo
nella lista.
N.B. Nel risolvere i punti di cui sopra tenere presente che:
- i 18 record che costituiscono il file di squadre non hanno uno
specifico ordinamento;
- l'unità di programma richiesta al punto 2 può essere
progettata in maniera più generale, allo scopo di semplificare e
rendere più efficiente l'unità richiesta al punto 3 (a tal
scopo è opportuno costruire l'unità del punto 2 tenendo
anche conto di quanto richiesto al punto 3);
- la lista di cui al punto 3 può essere costruita inserendo i
relativi elementi in un ordine qualunque.
Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Meccanica,
Nucleare, Ambiente e Territorio (v.p.)
Appello del 14/4/2000 -- 2a prova scritta
tempo a disposizione: 1 ora
Problema 2 (4 punti)
Discutere la differenza fra tipo di dato semplice e tipo di dato strutturato.
Con riferimento al linguaggio Pascal, discutere sinteticamente le operazioni
generalmente disponibili nell'ambito delle due categorie di tipi.
Problema 3 (4 punti)
Con riferimento al seguente programma Pascal, descrivere con precisione quali
caratteri vengono stampati sullo schermo quando il programma riceve in input il
tuo nome di battesimo, terminato dal carattere `.'. Mostrare inoltre
l'evoluzione della pila dei record di attivazione.
program Esame;
const
MaxLung = 40;
type
TipoNome = array [1..MaxLung] of char;
var
nome : TipoNome;
ch : char;
i : integer;
procedure Mistero (s: TipoNome; n: integer);
begin
write(s[n]);
if n > 1 then
Mistero(s, n-1)
end; { Mistero }
begin { Esame }
i := 0;
readln;
repeat
i := i+1;
read(nome[i])
until nome[i] = '.';
Mistero(nome, i-1)
end. { Esame }
Problema 4 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo come parametro una matrice di
interi di dimensione NxN, verifichi se la somma degli elementi della
diagonale principale è uguale alla somma degli elementi della diagonale
secondaria, e restituisca in modo opportuno il risultato di tale verifica al
programma chiamante.