Università di Roma "La Sapienza" — Facoltà di Ingegneria

Corso di Fondamenti di Informatica (Ambiente e Territorio)

12 gennaio 2000 (1ª prova)

tempo a disposizione: 120 minuti

 

Esercizio 1 (18 punti)

Un cliente di una banca decide di memorizzare su di un file (denominato PORTFOL.DAT) il suo portafoglio titoli. Nel file sono riportate le seguenti informazioni:

Ogni settimana la banca invia a tutti i clienti possessori di titoli un file (denominato VALORI.DAT) in cui sono memorizzate le seguenti informazioni:

 

Si richiede di risolvere i seguenti punti:

  1. Scrivere le dichiarazioni dei tipi di dato C da utilizzarsi per risolvere i due punti successivi.
  2. Scrivere una funzione C (o più) che, dati i due file PORTFOL.DAT (che illustra la situazione al 2/1/00) e VALORI.DAT (relativo alla settimana conclusasi il 9/1/00) di cui sopra, memorizzi in un nuovo file, il cui nome fisico è un parametro della funzione, le informazioni (nello stesso formato del file PORTFOL.DAT) relative a tutti e soli i titoli che nella settimana dal 3 al 9/1/00 hanno ottenuto un guadagno.
  3. Scrivere una funzione C (o più) che, ricevendo come parametri di ingresso il nome fisico del file costruito al punto 2. ed un positivo Q, costruisca e restituisca una lista, rappresentata mediante strutture e puntatori, in cui sono memorizzati i codici dei titoli posseduti il cui valore complessivo è superiore a Q Euro.

 

N.B. Nel risolvere i punti di cui sopra, assumere che:

  1. Ogni titolo presente in PORTFOL.DAT vi compare una sola volta.
  2. Ogni titolo presente in VALORI.DAT vi compare una sola volta.
  3. Ogni titolo presente in PORTFOL.DAT è presente anche in VALORI.DAT.
  4. I titoli sono elencati nei file secondo ordinamenti assolutamente casuali e fra loro indipendenti.


Università di Roma "La Sapienza" — Facoltà di Ingegneria

Corso di Fondamenti di Informatica (Ambiente e Territorio)

12 gennaio 2000 (2ª prova)

tempo a disposizione: 60 minuti

 

 

Esercizio 2 (4 punti)

Con riferimento al linguaggio C, si descriva il tipo di dato FILE, evidenziandone le caratteristiche ed indicando in quali situazioni appare indicato il suo uso, mostrando almeno un esempio.

 

Esercizio 3 (4 punti)

Per il seguente frammento di programma C, assumendo validi i prototipi mostrati, indicare quali chiamate di funzione sono corrette e quali sono errate, motivando le risposte date.

struct struttura {

float z;

char bi[2];

};

/* prototipi */

void Proc1 (float *, int);

void Proc2 (struct struttura);

void Proc3 (float, char, char);

void Proc4 (char *);

char Fun1 (char, int);

/* ... */

main() {

char a, v[2];

float u;

int n;

struct struttura S;

/* ... */

Proc1(&u, S.z); /* 1 */

Proc1(&u, n); /* 2 */

Proc2(S); /* 3 */

Proc2(S.z, S.bi); /* 4 */

Proc2(S.z, S.bi[0], S.bi[1]); /* 5 */

Proc3(S); /* 6 */

Proc3(S.z, S.bi[0], S.bi[1]); /* 7 */

Proc4(S.bi[2]); /* 8 */

Proc4(S.bi); /* 9 */

v[0] = Fun1(a, n); /* 10 */

Fun1(S.bi[1], 5); /* 11 */

a = Fun1(v, n); /* 12 */

/* ... */

}

 

 

Esercizio 4 (4 punti)

Con riferimento all’algebra relazionale, descrivere l’operazione di join e mostrare almeno un esempio in cui il join è indispensabile per estrarre informazioni da una o più relazioni.