Progetto

Laboratorio di Programmazione

Canale P-Z

Anno Accademico 2002-2003

Prof. Stefano Guerrini
Dott. Ivano Salvo


Sono disponibili le
specifiche di tutti i moduli

e le versioni definitive dei file
pinodefs.h e pinodefs.c.

Sono anche disponibli alcuni
esempi di programmi pino
ed un esempio di
sessione usando l'interprete senza garbage collector.

Notare le date di consegna.


Il progetto consiste nello sviluppo di un interprete per un semplice linguaggio funzionale - una versione molto semplificata del linguaggio LISP.
Il progetto è suddiviso in moduli che, se sviluppati nell'ordine proposto, porteranno gradualmente all'implementazione dell'intero interprete.

Le specifiche del progetto sono disponibili in formato pdf (un programma per la lettura di pdf è Acrobat Reader).
NB: I file sono aggiornati con le correzioni degli errori individuati al 20/06/03.

Chiunque dovesse trovare errori nei testi è pregato di segnalarlo al docente.
I file con i testi potranno essere aggiornati con le correzioni. Le modifiche di rilievo - ovvero, le modifiche/correzioni che hanno impatto sulla implementazione dei moduli - saranno opportunamene evidenziate anche sul sito.

I file con le definizioni principali ed i main per la verifica dei moduli:

I file pinodefs saranno aggiornati man mano che vengono fornite le specifiche dei moduli.
I file per la verifica saranno aggiornati in modo che possano accettare i dati di input sia dallo standard input che da file.

Chiunque dovesse trovare errori nei testi è pregato di segnalarlo al docente.
I file con i sorgenti potranno essere aggiornati. Le modifiche di rilievo - ovvero, le modifiche/correzioni che hanno impatto sulla implementazione dei moduli - saranno opportunamene evidenziate anche sul sito.

Modalità di consegna dei moduli

Le modalità di consegna saranno comuunicate sul sito ai primi di maggio.

Date di consegna dei moduli

Le scadenze (inderogabili) per la consegna dei moduli sono:

modulo entro il
I (TS): Le tavole dei simboli 23/05/03
II (AL): L'analizzatore lessicale 23/05/03
III (AS): L'analizzatore sintattico 27/07/03
IV (PR): Le funzioni di stampa 27/07/03
V (ST): Lo stack 21/09/03
VI (ST): La valutazione delle espressioni 21/09/03
VII (GC): Il garbage collector 21/09/03

Valutazione

Come riportato in dettagio nella descrizione del progetto, tutti i moduli saranno valutati indipendentemente. (Per la verifica di alcuni moduli serviranno anche i moduli precedentemente sviluppati. Se tali moduli non sono stati consegnati o non sono funzionanti, verranno usati usati dei moduli sviluppati dal docente.)

I moduli non sono tutti della stessa difficoltà. Per questo motivo il punteggio che si può ottenere dall'implementazione corretta di un modulo dipende dal modulo.

modulo voto
I (TS): Le tavole dei simboli 3
II (AL): L'analizzatore lessicale 5
III (AS): L'analizzatore sintattico 8
IV (PR): Le funzioni di stampa 3
V (ST): Lo stack 5
VI (EV): La valutazione delle espressioni 8
VII (GC): Il garbage collector 4
Totale 36

Come si può notare, il punteggio totale ottenibile implementando correttamente tutti i moduli è di 36 punti.

Un voto complessivo tra 30 e 32 equivale comunque a 30/30esimi. Per ottenere la lode occorre arrivare almeno a 33. Se il totale supera 33, i voti in più (rispetto a 33) potranno essere utilizzati per ottenere la lode a Programmazione II.

Si osservi che per raggiungere la sufficienza (18/30esimi) occorre sviluppare almeno uno dei modui più difficili - III(AS) o VI(EV) - o sviluppare tutti gli altri 5 moduli.

Requisito minimo per poter valutare un programma è che sia compilabile insieme con il programma di verifica fornito e che esegua correttamente alcuni dei test proposti.

Altri fattori che influiranno sulla valutazione sono la documentazione del codice (il codice deve essere oppla documentazione del codice (i moduli devono essere esaurientemente commentati) e lo stile di scrittura (il codice deve essere opportunamente indentato).

Si ricorda che il progetto di laboratorio è un lavoro individuale. Per verificare la similitudine dei moduli inviati si userà un apposito tool automatico: moduli chiaramente copiati saranno annullati.