ESERCITAZIONE: REALI ENORMI

IL PROBLEMA

TESTO DELL'ESERCITAZIONE

LO SVILUPPO PASSO A PASSO

Determinazione della struttura modulare
Prima versione della struttura modulare
Sviluppo top-down del main
Seconda versione della struttura modulare
Sviluppo del main
Sviluppo del modulo REALI_ENORMI
Sviluppo di REALI_ENORMI
La struttura modulare non è state modificata, eccetto per l'aggiunta della funzione Print_Char nell'interfaccia di BASIC_IO.
Sviluppo del modulo IDENT
Sviluppo di IDENT
Terza versione della struttura modulare
Poichè l'interfaccia di IDENT è stata modificata, dobbiamo modificare anche il main.
Seconda versione del main
Sviluppo del modulo MEMORIA
Sviluppo di MEMORIA
Sviluppo del modulo AMBIENTE
Sviluppo di AMBIENTE
Sviluppo del modulo ESPRESSIONI
Sviluppo di ESPRESSIONI
Sviluppo del modulo BASIC_IO
Sviluppo di BASIC_IO
Messa a punto del programma
Dopo aver controllato la correttezza sintattica del programma, i vari moduli sono stati testati (cioè sottoposti a test per controllare che siano corretti) realizzando parecchi main particolari che chiamano le funzioni di ogni modulo in maniera sistematica.
Alcuni di questi main sono riportati di seguito; per effettuare alcuni test è stato neccessario sviluppare ulteriori funzioni ausiliarie, ad esempio una per stampare le espressioni.
TEST-REALENORME.c, TEST-perEnne.c, TEST-per10piu.c, TEST-per10meno.c, TEST-Leggi_Reale.c, TEST-AMBIENTE.c, TEST-MEMORIA.c, TEST-BASIC_IO.c,

ESERCIZI

  1. Si estenda il programma sviluppato sopra in modo che accetti anche input errati, ed in tali casi segnali gli errori rispettando le seguenti specifiche.
    ERRORI
  2. Dare una nuova implementazione del modulo MEMORIA utilizzando un array invece che i puntatori, l'interfaccia non deve cambiare.
  3. Dare una nuova implementazione del modulo AMBIENTE utilizzando un array invece che i puntatori, l'interfaccia non deve cambiare.
  4. Estendere il programma per trattare anche la divisione di numeri reali enormi (occorre anche estendere la sintassi del file di input).
  5. Estendere il programma per trattare anche funzioni ricorsive (occorre anche estendere la sintassi del file di input).
  6. Estendere il programma in modo che faccia anche l'eco dell'input prima di stampare i risultati (occorre anche estendere la sintassi del file di output).
  7. Dare la grammatica del file di input e di output utilizzando la BNF invece dei diagrammi sintattici.