Problema 1 (18 punti)
Un grande aeroporto è suddiviso in diversi terminali, ognuno dei quali è identificato da una lettera dell'alfabeto progressiva, a partire dalla lettera 'A'. Per ogni terminale l'accesso ai voli in partenza avviene da diversi gate. Tutti i terminali dell'aeroporto hanno lo stesso numero di gate, ed ogni gate è identificato da un intero compreso tra 1 ed il numero di gate. Il numero di terminali ed il numero di gate per terminale sono costanti e fissati a priori.
Le informazioni relative al numero giornaliero di passeggeri in partenza dall'aeroporto sono memorizzate su un file (di testo o di record, a scelta del candidato). Più precisamente, per ogni coppia terminale-gate che compare nel file sono specificate:
Si richiede di risolvere i seguenti punti:
Esempio:
Per un aeroporto con tre terminali (identificati quindi da 'A', 'B' e 'C') e tre gate per ogni terminale, è mostrato il possibile contenuto di un file di testo con le informazioni relative al numero giornaliero di passeggeri in partenza. Se l'unità progettata al punto 3 prende in ingresso la struttura corrispondente a tale file di testo (come costruita al punto 2), ed il valore 100, viene restituita la lista mostrata in figura.
B 2 358 A 1 25 A 3 872 C 2 92 B 3 542 B 1 281 C 1 1132 C 3 88 |
Problema 2 (4 punti)
Descrivere l'architettura di Von Neumann di un calcolatore e, più in dettaglio, la struttura ed il funzionamento della CPU.
Problema 3 (4 punti)
Per il seguente frammento di programma Pascal, indicare quali attivazioni di procedura o funzione sono corrette e quali sono errate, motivando le risposte date.
program Main;
type TipoRec = record
c1 : char;
c2 : integer
end;
TipoVett = array [1..3] of integer;
var a : char;
i : integer;
r : TipoRec;
v : TipoVett;
procedure Proc1 (var p1: char; p2: integer);
begin ... end;
procedure Proc2 (p: TipoRec);
begin ... end;
procedure Proc3 (p1: integer; var p2, p3: integer);
begin ... end;
procedure Proc4 (p: TipoVett);
begin ... end;
function Fun1 (p1: char; p2: integer): integer;
begin ... end;
begin { Main }
...
{ 1 } Proc1('a', i);
{ 2 } Proc1(a, i);
{ 3 } Proc2(a, i);
{ 4 } Proc2(r.c1, r.c2);
{ 5 } Proc2(r.c2, r.c1);
{ 6 } Proc3(v[3], v[2], v[1]);
{ 7 } Proc3(v[1], i, i);
{ 8 } Proc4(v);
{ 9 } Proc4([i,v[2],i]);
{ 10 } i := Fun1(a, i);
{ 11 } Fun1(a, i);
{ 12 } i := Fun1('1', i);
...
end. { Main }
Problema 4 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo come parametro una matrice quadrata di dimensione n x n, verifichi se le somme degli elementi di tutte le righe sono uguali tra loro ed uguali alla somma degli elementi della diagonale principale.