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.