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.