Esercizio 1 (18 punti)
Le varie attivita' di un progetto corrispondono ai nodi di un grafo, i cui archi, etichettati con valori reali, esprimono il costo necessario per passare da una attivita' all'altra. Il grafo e' rappresentato tramite matrice di adiacenza A(n x n), in cui A(i,j) = 0 denota l'assenza di arco tra i nodi i e j, mentre A(i,j)<>0 indica la presenza di un arco tra i e j di costo A(i,j).
Esercizio 2 (4 punti)
Illustrare e comparare i metodi di "segmentazione" e "paginazione" della memoria di un calcolatore.
Esercizio 3 (4 punti)
Scrivere un sottoprogramma Fortran che ricevendo in ingresso due vettori A(n) e B(n) ad elementi interi, verifichi se contengono gli stessi valori in ordine inverso (per esempio, se A[1] = B[n], e così via).
Esercizio 4 (4 punti)
Dato il seguente programma Pascal, dire cosa stampa motivando la risposta.
program Prova;
type
punt = ^rec;
rec = record
info: integer;
next: punt
end;
var
p, app: punt; i: integer;
procedure Costruisci (var q: punt; k: integer);
begin
if k <> 0 then
begin
new(q);
q^.info := k; q^.next := nil; Costruisci(q^.next, k - 1)
end
end;
procedure Pippo (l: punt);
var
q: punt;
begin
q := l;
while q <> nil do
begin
q^.info := q^.info - i; i := i + 1; q := q^.next
end;
l^.next^.next := q; l := nil
end;
begin
Costruisci(p, 10);
i := 2;
Pippo(p);
app := p;
while app <> nil do
begin
write(app^.info); app := app^.next
end;
end.