Università di Roma ``La Sapienza''
Facoltà di Ingegneria

Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Nucleare, Ambiente e Territorio (v.p.)

Appello del 26/1/2000 -- 1a prova scritta

tempo a disposizione: 2 ore

Problema 1 (18 punti)

Una piccola compagnia aerea ha memorizzato su un file (di testo o di record, a scelta del candidato) le informazioni sui voli settimanali offerti dalla compagnia. Per ogni volo sono memorizzati nel file:

Un dirigente della compagnia vuole avere una quadro sintetico dei voli offerti dalla compagnia, sotto forma di una tabella riassuntiva. La tabella deve essere costituita da una riga ed una colonna per ogni città, e nella posizione (i,j) deve essere stampato il numero di voli settimanali dalla città di codice i a quella di codice j (se non vi sono voli dalla città i alla città j deve essere stampato 0).

Si richiede di risolvere i seguenti punti:

  1. Scrivere le dichiarazioni dei tipi di dato Pascal da utilizzarsi per risolvere i due punti successivi.
  2. Scrivere una (o più) unità Pascal che, ricevendo in ingresso il nome di un file contenente le informazioni sui voli, stampi su schermo la tabella riassuntiva dei voli. La procedura deve inoltre restituire in una opportuna struttura dati la tabella stessa.
  3. Scrivere una (o più) unità Pascal che, ricevendo in ingresso la struttura dati costruita al punto (2), ed il codice identificativo di una città C (di partenza), costruisca e restituisca una lista con un elemento per ogni città collegata a C da un volo diretto. Ogni elemento della lista deve contenere il codice identificativo della città (di destinazione) ed il numero di voli settimanali da C verso tale città. La lista deve essere ordinata per codice identificativo della città di destinazione crescente.

Università di Roma ``La Sapienza''
Facoltà di Ingegneria

Corso di Fondamenti di Informatica
Corsi di Laurea: Aerospaziale, Chimica, Elettrica, Materiali, Nucleare, Ambiente e Territorio (v.p.)

Appello del 26/1/2000 -- 2a prova scritta

tempo a disposizione: 1 ora

Problema 2 (4 punti)

Dare le rappresentazioni binarie in complemento a 1 e complemento a 2 (con 5 bit complessivi) di 6, -6 e 14, illustrando il procedimento usato per ottenerle. Dire inoltre qual è l'intervallo di interi rappresentabili con 5 bit complessivi in complemento a 1 e in complemento a 2.

Problema 3 (4 punti)

Si consideri il seguente programma Pascal:

program Esame;

function Cosafa (x: integer): integer;
begin
  if x = 0 then
    Cosafa := 0
  else if (x mod 2) = 0 then
    Cosafa := x + Cosafa(x-2)
  else
    Cosafa := Cosafa(x-1)
end; { Cosafa }
         
begin { Esame }
  writeln(Cosafa(5))
end. { Esame }

Problema 4 (4 punti)

Scrivere un sottoprogramma Fortran che, ricevendo come parametro un vettore di dimensione N i cui elementi sono interi compresi tra 0 ed M, costruisca e restituisca una matrice di booleani di dimensione NxM con la seguente proprietà: se l'elemento i-esimo del vettore ha valore k, allora i primi k elementi della riga i-esima della matrice sono pari a .TRUE., e i rimanenti sono pari a .FALSE..