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:
- nome autore (15 caratteri, compresi spazi finali);
- titolo opera (10 caratteri, compresi spazi finali);
- tipo opera (un carattere: `Q' per quadro e `S' per scultura);
- prezzo in euro (reale positivo).
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 }
- Descrivere cosa fa (non come lo fa) la funzione Cosa.
- Che valore viene stampato dal programma quando vengono inserite da
tastiera le cifre del proprio numero di matricola? Mostrare l'evoluzione
della pila dei record di attivazione.
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:
- riceve come parametro una stringa che rappresenta il nome fisico
del file;
- restituisce la lettera maggiore, secondo l'ordinamento alfabetico, fra
quelle presenti nel file.
Scrivere inoltre un programma principale che:
- usi il sottoprogramma progettato con il file il cui nome fisico è
DATI.TXT;
- stampi la lettera restituita dal sottoprogramma.