Università di Roma "La Sapienza"
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aeronautica, Materiali, Meccanica,
Chimica, Nucleare, Ambiente e Territorio (a.a. 96-97)
Appello del 15-1-1999
Esercizio 1 (18 punti)
In una centrale per rilevazioni meteorologiche sita in prossimità
del mare è installato un dispositivo che acquisisce tre volte al
giorno, ad orari prestabiliti, temperatura, umidità relativa e pressione
atmosferica. La centralina è collegata ad un personal computer che,
ricevendo in ingresso tali dati, li memorizza in un file di record. Ogni
record contiene informazioni:
-
numero rilevazione (un intero in {1,...,1098});
-
data rilevazione (8 caratteri numerici nel formato GGMMAAAA);
-
numero rilevazione giornaliera (un intero in {1,2,3});
-
temperatura rilevata (un razionale nell'intervallo [-10,+50));
-
umidità relativa rilevata (un razionale nell'intervallo [0,1]);
-
pressione atmosferica rilevata (un razionale nell'intervallo [800,1200]).
Le rilevazioni sono memorizzate nel file in ordine temporale crescente
(dalla più vecchia alla più recente).
-
Scrivere in Pascal le dichiarazioni dei tipi e delle eventuali variabili
globali da utilizzarsi per risolvere i due punti successivi (le dichiarazioni
locali potranno essere direttamente specificate nello svolgimento dei punti
successivi).
-
Scrivere una procedura Pascal che, ricevendo come parametro il nome di
un file contenente le rilevazioni effettuate durante il 1998, costruisca,
restituendola in uscita, una struttura di dati consistente in un vettore
di 60 elementi, in cui l'i-esimo (i=0,…,59) è un puntatore
a una lista i cui elementi sono tutte e sole le rilevazioni contenute nel
file di ingresso contraddistinte da una temperatura nell'intervallo [i-10,i-9)
(ogni elemento della lista contiene le seguenti informazioni: numero, data,
numero giornaliero, temperatura, umidità relativa e pressione atmosferica).
-
Scrivere una procedura Pascal che, ricevendo come parametri la struttura
di dati costruita al punto precedente, il nome di un file e un razionale
t, memorizzi nel file le date dei giorni in cui è stata rilevata
almeno una volta una temperatura pari o superiore a t.
Le figure seguenti illustrano un esempio.
...
|
571
|
10071998
|
1
|
22.2
|
0.89
|
1049.2
|
572
|
10071998
|
2
|
28.1
|
0.65
|
1049.1
|
573
|
10071998
|
3
|
26.5
|
0.78
|
1049.2
|
574
|
11071998
|
1
|
23.6
|
0.88
|
1049.0
|
575
|
11071998
|
2
|
31.1
|
0.88
|
1049.2
|
576
|
11071998
|
3
|
28.1
|
0.90
|
1050.0
|
577
|
12071998
|
1
|
24.7
|
0.86
|
1050.1
|
578
|
12071998
|
2
|
32.3
|
0.92
|
1050.6
|
579
|
12071998
|
3
|
30.8
|
0.93
|
1050.6
|
580
|
13071998
|
1
|
24.0
|
0.88
|
1031.2
|
581
|
13071998
|
2
|
27.1
|
0.76
|
1022.1
|
582
|
13071998
|
3
|
25.2
|
0.66
|
1020.9
|
583
|
14071998
|
1
|
20.0
|
0.60
|
1023.4
|
584
|
14071998
|
2
|
30.2
|
0.58
|
1024.1
|
585
|
14071998
|
3
|
26.2
|
0.60
|
1024.0
|
...
|
Fig. 1: frammento di file in
ingresso alla funzione del punto 1.1. |
...
|
12071998
|
14071998
|
11071998
|
12071998
|
...
|
|
Fig. 3: frammento di file costruito al
punto 1.3 a partire dalla struttura illustrata in Fig. 2, per t=30. |
|
 |
Università di Roma "La Sapienza"
Facoltà di Ingegneria
Corso di Fondamenti di Informatica
Corsi di Laurea: Aeronautica, Materiali, Meccanica,
Chimica, Nucleare, Ambiente e Territorio (a.a. 96-97)
Appello del 15-1-1999
Esercizio 2 (4 punti)
Si consideri il metodo di rappresentazione degli interi relativi "in
complemento a due".
-
Supponendo di lavorare con 8 bit, scrivere l’intervallo dei numeri rappresentabili
in complemento a due.
-
Sia G il giorno della data di nascita del candidato e si supponga
di lavorare con 10 bit. Scrivere le rappresentazioni in complemento a due
di G e di -G.
Esercizio 3 (4 punti)
Esaminare il seguente programma e descriverne il funzionamento.
Si vuole che vengano disegnati i record di attivazione allocati durante
l'esecuzione, completi di tutte le loro parti, e venga infine mostrato
l 'output prodotto dal programma.
program ric;
var V, Z: integer;
procedure P (a, b: integer; var c: integer);
var x: integer;
begin {inizio procedura P}
if b = 0
then
begin
a := a + 10;
c := 1;
end
else
begin
a := a + 2;
P(a, b - 1, x);
c := x + a * b;
end;
writeln('a = ', a);
end; {fine procedura P}
begin {main program}
writeln('inserire l''ultima cifra del proprio numero di matricola:');
readln(V);
writeln('---------------');
P(V, 2, Z);
writeln('---------------');
writeln('V = ', V);
writeln('Z = ', Z);
end.
Esercizio 4 (4 punti)
Scrivere un sottoprogramma FORTRAN che, ricevendo come
parametro di ingresso una matrice A (N´
N) di interi, verifichi se l’array A gode della seguente proprietà:
la somma degli elementi delle colonne è crescente. Cioè,
la somma degli elementi della prima colonna è minore della somma
degli elementi della seconda colonna, che a sua volta è minore di
quella della terza colonna, e così via.
Download testo in formato Word.