Corso di Fondamenti di Informatica - A.A. 2000/2001
Corso di Laurea in Ingegneria Elettronica (V.O. e N.O.) e
Ingegneria delle Telecomunicazioni (V.O.)
Appello straordinario del 13 ottobre 2001 -
1a prova scritta
tempo a disposizione: 2 ore
Per il passaggio al nuovo ordinamento di un corso di laurea, il CCL ha
stabilito una corrispondenza tra le materie del vecchio ordinamento (VO) e
quelle del nuovo ordinamento (NO). Per ogni esame sostenuto da uno studente
per una materia del VO, viene convalidato un esame per la corrispondente
materia del NO, ed eventualmente possono essere assegnati dei crediti in
eccesso. La tabella di corrispondenza tra le materie del VO e quelle del NO
è memorizzata in un file di testo con il seguente formato, dove ogni materia
di esame (sia del VO che del NO) è identificata da un codice di al più 8
caratteri:
- la prima riga del file contiene il numero di materie del VO elencate
nelle righe successive del file;
(solo per la prova in Pascal: si supponga che tale numero sia al
massimo 100)
- ogni riga dalla seconda in poi contiene (separati da uno spazio): il
codice di una materia del VO, il codice della corrispondente materia del NO,
ed i crediti in eccesso (eventualmente 0).
Ad esempio, il contenuto del file con le corrispondenze potrebbe essere il
seguente:
4
FondInf1 ProgeSW1 0
FondInf2 ProgeSW2 5
BasiDati BasiDati 0
Fisica1 ElemFis1 5
Si chiede di risolvere i seguenti punti:
- Progettare le strutture dati C (risp. Pascal) da utilizzarsi per
risolvere i punti seguenti. L'uso di eventuali variabili globali va
opportunamente motivato.
- Progettare una funzione ausiliaria C (risp. procedura o funzione Pascal)
che, preso in ingresso il nome del file con le corrispondenze, restituisca un
vettore di strutture (risp. record) che memorizza le corrispondenze stesse.
- Progettare una funzione ausiliaria C (risp. procedura o funzione Pascal)
che, preso in ingresso un vettore di strutture (risp. record) come quello
construito al punto (2), ed il codice di una materia del VO, restituisca:
- il codice della corrispondente materia del NO, ed
- il numero di crediti in eccesso.
Si assuma che tutte le materie del VO presenti nella lista compaiano anche
nel vettore.
- Progettare una funzione C (risp. procedura o funzione Pascal) che, preso
in ingresso il nome del file con le corrispondenze ed una lista
(rappresentata attraverso strutture (risp. record) e puntatori) di codici di
materie del VO, restituisca:
- una nuova lista contenente le corrispondenti materie del NO, e
- il numero totale di crediti in eccesso.
La funzione (risp. procedura) deve utilizzare le funzioni (risp. procedure)
ausiliarie sviluppate ai punti (2) e (3). L'ordine degli elementi nella
lista costruita è irrilevante.
Ad esempio, se il file con le corrispondenze è quello di sopra e la lista in
ingresso contiene i codici (FondInf1, FondInf2,
Fisica1), allora la lista costruita deve contenere i codici
(ProgeSW1, ProgeSW2, ElemFis1), ed il numero totale
di crediti in eccesso deve essere 10.
Nota: Quando si parla di ``prendere in ingresso'' e di ``restituire''
si intende attraverso opportuni parametri o attraverso il valore di ritorno.
Corso di Fondamenti di Informatica - A.A. 2000/2001
Corso di Laurea in Ingegneria Elettronica (V.O. e N.O.) e
Ingegneria delle Telecomunicazioni (V.O.)
Appello straordinario del 13 ottobre 2001 -
2a prova scritta
tempo a disposizione: 1 ora
Descrivere utilizzando pseudocodice oppure codice C (risp. Pascal) l'algoritmo
di ricerca binaria in un vettore. Discuterne la complessità. Confrontare
tale algoritmo con l'algoritmo di ricerca sequenziale.
Descrivere la rappresentazione dei reali in forma normalizzata (tramite
mantissa ed esponente). Discuterne le caratteristiche. Qual'è l'intervallo
di rappresentazione e quali sono le sue proprietà?
Quali delle seguenti affermazioni sono corrette e quali no? Motivare le
risposte date.
- Un algoritmo può essere espresso in un linguaggio di programmazione
ad alto livello.
- La compilazione di un algoritmo produce del codice in linguaggio C
(risp. Pascal).
- Il codice macchina può essere mandato direttamente in esecuzione su
un opportuno processore.
- Un programma che compila senza errori è corretto.