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:

Le rilevazioni sono memorizzate nel file in ordine temporale crescente (dalla più vecchia alla più recente).
  1. 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).
  2. 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).
  3. 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".

  1. Supponendo di lavorare con 8 bit, scrivere l’intervallo dei numeri rappresentabili in complemento a due.
  2. 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.