Note di rilascio del simulatore Floating Point, versione 1.0 Architettura del software Il software ha due classi, nel diagramma uml (./UML.jpg) sono elencati attributi e metodi. Descrizione dell'algoritmo All'inizio del programma bisogna scegliere la lingua (inglese o italiano) Una volta scelta la lingua c'e' un altro menu dove e' possibile scegliere se utilizzare il convertitore Binario-Decimale da virgola mobile a virgola fissa o Decimale-Binario da virgola fissa a virgola mobile. Il convertitore Binario-Decimale riceve in input da tastiera un stringa di bit 0 e 1; il primo bit indicherà il segno (1 negativo - 0 positivo), dal secondo al nono bit sarà l'esponente; l'esponente indica quante volte viene spostata la virgola ed il verso dello spostamento. L'esponente è in eccesso 127 (es: esp=129--> mantissa 1,11011=> 111,011 oppure esp=125-->mantissa 1,11011=> 0,0111011). Il numero (1,mantissa)*2^(esp-127) è il numero binario in virgola mobile che va convertito in decimale in virgola fissa. Il convertitore Decimale-Binario riceve in input da tastiera un signed float (numero razionale), il numero viene diviso in parte intera e parte fratta; le due parti vengono convertite separatamente in binario rispettivamente con il metodo delle divisioni successive e con i prodotti. Otteniamo alla fine del processo una parte intera binaria, una parte fratta binaria e il segno del numero. Si passa alla conversione in virgola mobile: si controlla se l'esponente va in overflow e se dovesse verificarsi questo caso il programma termina. In caso contrario si aggiunge alla stringa finale il prefisso 1 o 0 in base al segno dell'input; successivamente si calcola l'esponente aggiungendo 127 al numero di spostamenti della virgola che si è fatto e si aggiunge alla stringa finale; infine si aggiunge la mantissa alla stringa finale, la mantissa corrisponde alla parte fratta dopo lo spostamento della virgola. Tecniche di programmazione Il programma è stato diviso in due classi. Nella classe Binario-Decimale: Il metodo "scomposizione" serve a dividere la stringa ricevuta in segno, esponente e mantissa utilizzando i metodi "set_segno", "set_esponente" e "set_mantissa". La funzione "trova_esponente" serve a trovare il valore decimale dell'esponente. La funzione "Sposta_virgola" serve a spostare la virgola di (esponente-127) passi. Il metodo "conversione" chiama il metodo "scomposizione" e la funzione "Sposta_virgola", calcola il valore decimale del numero ricevuto dalla tastiera qualora avesse un valore valido, in caso contrario stamperà a video un messaggio in cui darà informazioni sul valore inserito. Nella classe Decimale-Binario: La classe è composta dagli attributi e dai metodi privati necessari alla conversione del numero e dagli unici metodi pubblici convert() e setK(). Il costruttore inizializza la stringa rappresentante il numero a "" (null). Dopo viene invocata la funzione setK() che modifica la variabile k, che rappresenta il numero da convertire. Viene chiamata la funzione convert che restituisce un numero binario in virgola mobile se esso rispetta il range e il tipo di dato, un messaggio di errore altrimenti. Il numero binario è composto dalla concatenazione delle stringhe restituite dalle funzioni sign(), exponent() e mantix(). Collaudi Il file e' stato testato su due dei tre principali tipi di sistemi operativi: Unix/Linux, MS Windows e sono stati utilizzati rispettivamente il compilatore "g++" e l'applicazione dev c++ per compilare il programma. Idee per miglioramenti futuri 1. Allargare il range del convertitore Binario-Decimale. 2. Aggiungere altri sistemi numerici. 3. Aggiungere altre lingue. 4. Inserire un'interfaccia grafica.