Progetto individuale. Consiste nella realizzazione di un programma o di una libreria ANSI C
seguendo la metodologia di sviluppo software "in the small" presentata durante il corso.
Il progetto deve essere sviluppato individualmente. I progetti che esibiscano praticamente il medesimo
software verranno tutti annullati e i relativi sviluppatori non verranno ammessi alla prova scritta.
Il progetto deve essere consegnato al
docente come allegato .tar.gz oppure .zip
ad una lettera di posta elettronica (avente come oggetto "consegna progetto Programmazione degli
Elaboratori" e contenente nome e cognome dello studente e data della prova scritta) almeno 10 giorni prima
della prova scritta. La valutazione del progetto viene comunicata dal docente per posta elettronica almeno 2
giorni prima della prova scritta.
L'allegato deve comprendere:
- Una relazione in formato PDF.
- I sorgenti ANSI C (tutti i file .c e .h che sono stati sviluppati).
- Il makefile.
Qui è disponibile l'elenco dei progetti assegnati nelle varie
sessioni d'esame.
La relazione deve essere scritta in corretta lingua italiana o inglese, deve iniziare con una pagina di
copertina riportante almeno il nominativo dello studente e deve contenere le seguenti cinque sezioni
(ciascuna con inizio su una nuova pagina):
- Specifica del problema. Riportare fedelmente l'enunciato del problema assegnato.
- Analisi del problema. Descrivere in modo schematico gli input e gli output del problema e le
principali relazioni intercorrenti tra di essi, da sfruttare ai fini della soluzione del problema.
- Progettazione dell'algoritmo. Inquadrare lo sviluppo dell'algoritmo nel contesto del problema
assegnato e della sua analisi, indicare le principali scelte di progetto che sono state compiute con le
relative motivazioni (p.e., la scelta di determinate strutture dati oppure la scelta di uno schema di
soluzione ricorsivo) e descrivere in modo schematico i passi principali -- con eventuali raffinamenti --
dell'algoritmo ideato per risolvere il problema astraendo dallo specifico linguaggio di programmazione
impiegato nell'implementazione (i passi dell'algoritmo non debbono assolutamente essere scritti in
linguaggio ANSI C).
- Implementazione dell'algoritmo. Completare e tradurre l'algoritmo nel linguaggio ANSI C,
includendo nella relazione tutti i file .c e .h sviluppati come pure il makefile.
- Testing del programma. Effettuare almeno 10 test significativi dell'esecuzione del programma per
ciascuna classe di input del problema, riportando fedelmente per ciascun test sia i dati di input introdotti
da tastiera/file che i risultati prodotti su video/file (nel caso di una libreria, è necessario
sviluppare un programma di test che include la libreria ed usa le sue funzioni).
Il software sviluppato (quarta sezione della relazione) deve essere come segue:
- Leggibile:
- Privo di scelte di progetto non descritte o non ben motivate nella terza sezione della relazione.
- Privo di identificatori non evocativi di ciò che rappresentano o di forma disomogenea.
- Privo di variabili globali.
- Ben indentato (evitare anche linee troppo lunghe che vanno a capo nella relazione).
- Dotato di appropriate spaziature per funzioni e operatori.
- Dotato di opportuni commenti che richiamano la progettazione dell'algoritmo.
- Articolato in funzioni.
- Coerente coi principii della programmazione strutturata:
- Privo di istruzioni goto.
- Privo di istruzioni exit.
- Privo di istruzioni continue.
- Privo di istruzioni break che non si trovano alla fine di un case di uno switch.
- Privo di istruzioni return che non si trovano alla fine del corpo di una funzione.
- Compilabile tramite gcc con opzioni -Wall (rilevazione di tutti i warning) e -ansi (conformità
allo standard ANSI) senza che vengano segnalati errori o warning.
- Funzionante correttamente rispetto al problema assegnato senza alcuna limitazione e comprensivo della
validazione degli input.
Ogni inosservanza di quanto stabilito sopra a proposito della consegna del progetto, della preparazione
della relazione e dello sviluppo del software determina una riduzione del voto del progetto. Ogni giorno di
ritardo nella consegna del progetto comporta una penale di 3/30.