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.)

1ª prova di esame del 18 giugno 1999 (II appello estivo)

tempo a disposizione: 120 minuti

 

Problema 1 (18 punti)

Un docente di Fondamenti di Informatica memorizza in un file di record, per fini statistici, l'esito di tutti gli esami svolti positivamente nell'ambito del suo corso. Per ogni studente esaminato sono incluse le seguenti informazioni:

 

  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 come parametro il nome di un file di record riepilogativo di tutti gli esami svolti, costruisca un nuovo file (il cui nome è anche passato come parametro) inserendovi tutti (e soli) i voti assegnati che risultano superiori alla media dei voti assegnati dal docente (media definita dai voti memorizzati nel file riepilogativo; i "30 e lode" contribuiscono come 30 sia alla media sia al file di output).
  3. Scrivere una (o più) unità Pascal che, ricevendo come parametro il nome del file costruito al punto precedente, costruisca, restituendola in uscita, una lista rappresentata tramite record e puntatori i cui elementi contengono i voti presenti nel file e, per ogni voto, il numero delle sue presenze nel file. Ogni voto deve essere presente una sola volta nella lista.

 

Esempio. Dato il file contenente le informazioni illustrate in Fig. 1.1 (media: 26.17), il punto 1.2 richiede la costruzione di un file contenente quanto mostrato in Fig. 1.2, mentre il punto 1.3 richiede la costruzione della lista illustrata in Fig. 1.3.

 

matricola

nome

cognome

corso di laurea

data esame

esito

lode

09000001

Pico

De Paperis

AT

10011998

30

n

09000021

Paolino

Paperino

CIV

15021998

19

n

09000101

Macchia

Nera

CH

15021998

23

n

09001211

Paperon

de' Paperoni

INF

23071997

27

n

09002110

Rocker

Duck

NUC

23071997

28

n

09000113

Archimede

Pitagorico

MEC

20021905

30

s

Fig. 1.1

 

esito

30

27

28

30

Fig. 1.2

 

Fig. 1.3

 

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

Corso di Fondamenti di Informatica

Corsi di Laurea: Aeronautica, Chimica, Elettrica, Materiali, Nucleare,

Ambiente e Territorio (v.p.)

2ª prova di esame del 18 giugno 1999 (II appello estivo)

tempo a disposizione: 60 minuti

 

Problema 2 (4 punti)

Illustrare e discutere le regole di visibilità delle variabili all'interno di un programma Pascal. Quando può essere consigliabile o conveniente l'uso di variabili globali?

 

Problema 3 (4 punti)

Dato il seguente frammento di codice Pascal:

type PuntE = ^E;
     E = record
          info: integer;
          next: puntE;
     end;

function Boh(p: PuntE): boolean;
var q: PuntE;
begin { Boh }
     if p = NIL
        then Boh:= TRUE
        else begin
                  q:= p^.next;
                  while ((q <> p) AND (q <> NIL)) do
                        q:= q^.next;
                  Boh:= q = NIL
             end
end; { Boh }

 

Problema 4 (4 punti)

Si scriva un sottoprogramma Fortran che, dato come parametro una matrice di n righe e 2 colonne, a valori interi, verifichi se esiste qualche minore di ordine 2 il cui determinante è uguale a zero. (Si ricorda che i minori di ordine k di una matrice M sono tutte le sottomatrici quadrate di ordine k presenti in M).