Note di rilascio della versione 1.0

Premessa

Nell' applicazione proposta MBC/O la conversione e l'operazione sono possibili per numeri di qualsiasi lunghezza.

Installazione dell' ambiente di sviluppo

Se nel vostro computer non e' stato ancora installato Unity, seguire questa procedura:
Scaricare l'installer da questo sito la versione 5.5.2, disponibile sia per Windows, che per Mac e procedere con l'installazione.
Dopo l'installazione, estrarre l'archvio, aprire Unity e cliccare su "Apri progetto" e selezionare il percorso della cartella estratta (src/MBCO).

Requisiti di sistema

Il progetto puo' essere visionato o modificato preferibilmente nella versione 5.5.2 di Unity (Questo per evitare possibili malfunzionamenti del programma).
OS: Windows 7 SP1+, 8, 10; Mac OS X 10.8+.
GPU: Graphics card with DX9 (shader model 3.0) or DX11 with feature level 9.3 capabilities.

Compilazione

Compilazione per Android scaricare e installare: Android SDK e Java Development Kit (JDK).

Architettura del software

Il programma e' strutturato in:
Tre scene: Menu, Converter, Operations;
Cinque classi: Cambia_Scena, Canvas_Manager, Char_Converter, Converter, Operation, tutte e cinque sono Singleton;

La classe Cambia_Scena consente il passaggio da una scena all'altra.

La classe Canvas_Manager consente l'apparizione delle diverse tastiere dedicate ad ogni base numerica.

La classe Char_Converter converte un singolo carattere nel numero corrispondente e viceversa (es. 'F' corrisponde a 15 e viceversa).

La classe Converter effettua tutte le conversioni di base.

La classe Operations effettua le operazioni somma, sottrazione, prodotto, divisione, potenza e modulo tra due numeri.

Tecniche di programmazione

Al fine di consentire l'utilizzo di numeri illimitatamente grandi, si è deciso di trattare i numeri sotto forma di stringhe, quindi quando si parla di numeri, in realtà ci riferiamo a stringhe rappresentanti numeri. Le funzioni spiegate più avanti possono essere consultate nel dettaglio nei commenti del codice(src/MBCO/Assets/Scripts).

-Conversione

Per la conversione quando viene scritto un numero su una qualsiasi textBox, appena si preme il pulsante "Convert", la conversione viene effettuata convertendo innanzitutto in base dieci: si fa una somma di ogni cifra convertita da carattere all' intero corrispondente e applicando la formula della somma di ogni numero moltiplicato per la base elevata alla posizione nell'array di caratteri. La posizione nell'array viene stabilita partendo da destra da zero aumentando verso sinistra. Successivamente il numero in base decimale viene convertito nelle altre basi numeriche: il numero decimale viene diviso di volta in volta per la base, fino ad arrivare ad un numero minore di uno. Il totale è formato dai rispettivi resti di ogni divisione disposti dall'ultimo fino al primo.

-Operazioni

Per le operazioni vengono effettuati algoritmi di addizione, sottrazione, moltiplicazione, divisione, potenza e modulo, in tutti i casi le due stringhe vengono equalizzate inserendo a sinistra della stringa gli zeri mancanti.

-Addizione

Per l'addizione, partendo da destra, si sommano i due caratteri convertiti ad intero più l'eventuale riporto, il tutto si divide per la base, la parte intera della divisione restituisce il riporto da aggiungere alla cifra a sinistra, mentre il resto restituisce il risultato della somma che viene concatenata alla stringa del totale.

-Sottrazione

Per la sottrazione si istanzia un array di interi grande come le due stringhe che tiene conto dei prestiti. Si parte dai caratteri a destra, se il carattere della stringa in alto è più piccolo dell'altro, si cerca verso sinistra il primo numero diverso da zero per prendere in prestito una decina. Questo viene annotato nell'array dei prestiti. Se non si trova nessun numero diverso da zero la sottrazione risulta impossibile. Nel caso contrario si effettua la sottrazione tra le due cifre più la decina in prestito.

-Moltiplicazione

Algoritmo della moltiplicazione in colonna, si prendono i due numeri e partendo dalla prima cifra a destra del moltiplicatore, si moltiplica quest'ultima con le cifre del moltiplicando, partendo da destra.
Si instanzia un array di stringhe grande quanto la lunghezza del moltiplicatore. Ogni elemento dell'array contiene la somma dei risultati dei prodotti tra la cifra del moltiplicatore e quelle del moltiplicando. A questa somma viene applicato lo scorrimento a sinistra corrispondente alla posizione della cifra del moltiplicando usata per produrla.
Il prodotto totale sarà dato dalla somma dei valori dell'array.

-Divisione

Algoritmo della divisione in colonna, si prende la prima cifra a sinistra del dividendo, si inserisce in una variabile "tmp" e si controlla se è maggiore o uguale al divisore. Se è vero, si aggiunge una cifra a destra nel quoziente che è il risultato della divisione intera tra "tmp" e il quoziente. Al posto di "tmp" si metterà il resto dell'operazione. Se è falso, invece, si aggiunge a "tmp" un' ulteriore cifra del dividendo e si aggiunge uno zero al quoziente.

-Potenza

Funzione per il calcolo della potenza. Se il numero da calcolare è in base 2, il risultato può avere un massimo di 64 cifre, per le altre basi può avere un massimo di 20 cifre.

-Modulo

Restituisce il resto della divisione tra due numeri.

Metodi contenuti in:

Cambia_Scena
- Canvas_Manager
- Char_Converter
- Converter
- Operation

Idee per ulteriori sviluppi

Diminuzione della grandezza dell'eseguibile e inserimento di altre operazioni.

Torna Indietro