DIPARTIMENTO DI
INFORMATICA Università di Torino | |
Laboratorio di Informatica: programmazione - Corso di Diploma in Informatica - a.a. 00/01Esame a.a. 2000/2001 - Parte SecondaIl progetto dovra' essere svolto in gruppi di 1 o 2 componenti. ATTENZIONE: i gruppi di 2 componenti dovranno provvvedere a comunicare la loro formazione, presentandosi ai docenti (preferibilmente durante le lezioni in laboratorio o in aula) ENTRO IL 30 Marzo 2001. Richieste di formazione di gruppo presentate successivamente a tale data non saranno, di norma, prese in considerazione.Il progetto e' costituito da QUATTRO fasi distinte. Tutto il codice prodotto dovra' essere memorizzato in una directory PROGETTO, contenente quattro sottodirectory FASE1, FASE2, FASE3, e FASE4, come illustrato dal seguente "disegno": PROGETTO | | ____________________________________________________ | | | | | | | | FASE1 FASE2 FASE3 FASE4 Descrizione del progettoFASE 1Si implementi il tipo di dato astratto "elemento".Si devono realizzare ALMENO DUE implementazioni, utilizzando rappresentazioni sostanzialmente differenti: CONTATTARE I DOCENTI per l'ammissibilita' delle rappresentazioni scelte. Tutte le implementazioni realizzate devono essere ottenute completando il seguente "schema di unit" ADTelem:
unit ADTelem interface type elem = ... procedure set_elem (var e1:elem; e2:elem); {AI: e2 e' inizializzato, contiene il valore E} {AF: e1 contiene il valore E} procedure read_elem (var e:elem); {AI: } {AF: e contiene un valore E letto da INPUT} procedure write_elem (e:elem); {AI: e e' inizializzato, contiene il valore E} {AF: il valore E e' stato scritto su OUTPUT} function eq_elem (e1, e2:elem): boolean; {AI: e1, e2 sono inizializzati} {AF: restituisce TRUE se e1, e2 sono "uguali", FALSE altrimenti} function le_elem (e1, e2:elem): boolean; {AI: e1, e2 sono inizializzati} {AF: restituisce TRUE se e1 e' "minore o uguale" di e2, FALSE altrimenti} implementation ... end. Ciascuna unit (UNA PER OGNI RAPPRESENTAZIONE CONSIDERATA) dovra' avere nome ADTelem, pertanto le unit dovranno essere memorizzate in sottodirectory distinte di FASE1 (scegliere un nome opportuno per tali directory). Realizzare (nella sottodirectory TEST di FASE1) un programma che permetta di testare interattivamente le operazioni del tipo di dato astratto ADTelem. Si consiglia di usare un'interfaccia a menu'. Il programma di test deve essere INDIPENDENTE DALLA RAPPRESENTAZIONE USATA per il tipo di dato astratto ADTelem, quindi ci deve essere UNA SOLA versione del programma di test che funziona per TUTTE le implementazioni di ADTelem. FASE 2Si implementi il tipo di dato astratto "insieme di ADTelem" (dove ADTelem e' il tipo di dato astratto definito, e implementato in almeno due modi, nella FASE1).Si devono realizzare ALMENO DUE implementazioni, utilizzando rappresentazioni sostanzialmente differenti: anche in questo caso CONTATTARE I DOCENTI per l'ammissibilita' delle rappresentazioni scelte. Ciascuna implementazione deve essere INDIPENDENTE DALLA RAPPRESENTAZIONE USATA per il tipo di dato astratto ADTelem. Tutte le implementazioni realizzate devono essere ottenute completando il seguente "schema di unit" ADTset.
unit ADTset uses ADTelem ... interface ... implementation ... end. Ciascuna unit (UNA PER OGNI RAPPRESENTAZIONE CONSIDERATA per il tipo di dato astratto insieme) dovra' avere nome ADTset, pertanto le unit dovranno essere memorizzate in sottodirectory distinte di FASE2 (scegliere un nome opportuno per tali directory). Realizzare (nella sottodirectory TEST di FASE2) un programma che permetta di testare interattivamente le operazioni del tipo di dato astratto ADTset. Si consiglia di usare un'interfaccia a menu'. Il programma di test deve essere:
Le operazioni definite sul tipo di dato astratto ADTset sono le seguenti (si noti che la specifica e' VOLUTAMENTE informale e lacunosa: parte integrante dell'esercizio consiste proprio nel formalizzare e completare tale specifica):
FASE 3Usando il tipo di dato astratto ADTset definito nella FASE 2 realizzare una unit "operazioni complesse" contenente le seguenti operazioni (si noti che tale unit NON realizza un tipo di dato astratto):
La unit "operazioni complesse" dovra' essere realizzata completando il seguente "schema di unit":
unit OperComp uses ADTset, ADTelem ... interface ... implementation ... end. La unit OperCom deve essere:
Realizzare (nella sottodirectory TEST di FASE3) un programma che permetta di testare interattivamente le operazioni del tipo di dato astratto ADTset e le operazioni della unit OperComp. Si consiglia di usare un'interfaccia a menu'. Anche il programma di test deve essere
FASE 4Estendere la definizione di ADTset aggiungendo l'operazione
ATTENZIONE: non modificate direttamente il codice delle implementazioni del tipo di dato astratto memorizzate nelle sottodirectory di FASE2 e il programma di test memorizzato nella directory TEST di FASE2, ma fatene una copia di tali directory nella directory FASE4 e lavorate su queste copie!!! Estendete anche il programma di test memorizzato nella directory TEST di FASE3, in modo da testare anche l'opezione SORT. Anche in questo caso copiate il codice da modificare nella directory FASE4, e lavorate sulla copia. NOTA: non si deve modificare la unit OperComp, basta copiarla. Risultati del progetto e modalita' di esameRicapitolando: il codice prodotto dovra' essere organizzato in sottodirectory, come illustrato dal seguente "disegno":PROGETTO | | ______________________________________________________________ | | | | | | | | | | FASE1 FASE2 FASE3 FASE4 PROVE | | | | | | | | _________ _________ _________ _________________ | | | | | | | | | | | | | | | | | | | | | | | | ADTelem1 | | ADTset2 | | OperComp TEST ADTsetEst1 | | | | | | | | | | | | | | | | | ADTelem2 | ADTset2 | ADTsetEst2 | | | | | | | | | | TEST TEST TEST2 | | | TEST3 Copiando i file opportuni nella directory PROVE dovra' essere possibile compilare ed eseguire diverse combinazioni delle differenti realizzazioni dei tipo di dati astratti ADTelem, ADTset, ADTsetEst, con i programmi di test memorizzati in FASE1/TEST/, FASE2/TEST/, FASE3/TEST/, FASE4/TEST2/, e FASE4/TEST3/. Ogni gruppo dovra' consegnare ALMENO 8 GIORNI prima della discussione
La correttezza del codice realizzato e' condizione necessaria, ma NON sufficiente per superare l'esame. A tal fine si richiede infatti che il codice:
|
Last update: Mar 13, 2001 | |