Note di rilascio del simulatore VisualBooth, versione 1.0 -------- Questo simulatore e' basato sull'idea di un altro simulatore dal nome "Algoritmo di Booth" - https://www.dmi.unict.it/archelab/projects/algoritmodibooth/ - come quella di altri simulatori che hanno trattato l'argomento -"Booth Algorithm Performer" - https://www.dmi.unict.it/archelab/projects/boothalgorithmperformer/ - -"MultypdroidBooth" - https://www.dmi.unict.it/archelab/projects/multypdroidbooth/ - -"Moltiplicatore Sequenziale di Booth" - https://www.dmi.unict.it/archelab/projects/boothsms/ - Esso nasce dall'idea di implementare un'interfaccia grafica che interagisca con l'utente e di un sistema che permetta di seguire i passi dell'algoritmo, tuttavia trattasi di un progetto ex-novo, senza dunque attenersi al codice degli sviluppatori di un altro Software, per motivi di una maggiore compatibilità grafica ed in linea con le conoscenze degli sviluppatori. In particolare, a parte MultypdroidBooth che e' sviluppato per sistema Android, i due seguenti non hanno un'interfaccia grafica per sistemi operativi UNIX/LINUX e MS, o un sistema volto a visualizzare i passi dell'algoritmo. Inoltre, sebbene il "Moltiplicatore Sequenziale di Booth" permetta di seguire i passi dell'operazione sullo schema di un circuito che la realizza, esso e' mirato alla sua implementazione circuitale, diversamente dal seguente progetto che e' mirato a una simulazione dell'algoritmo. Inoltre abbiamo introdotto una modalita' quiz. Funzioni: -prodotto naturale tra numeri in rappresentazione binaria naturale a 8 bit; -prodotto tra numeri in rappresentazione in complemento a 2 con algoritmo di Booth a 8 bit; -prodotto tra numeri in rappresentazione in complemento a 2 con tecnica Bitpair a 8 bit. -modalita' quiz, in cui l'utente puo' verificare le proprie conoscenze. --------------------------------------------------------------------- ------Tecniche di programmazione:----- Programmazione in Java orientata agli oggetti (OOP) in ambiente Processing. Si consiglia l'utilizzo di quest'ultimo per la revisione del codice. --------------------------------------------------------------------- ---Architettura del software---- Seguono un sommario per la parte grafica ed uno per la parte logica, per la versione integrale si rimanda alla documentazione del codice. -Parte Grafica: Si e' scelto di sviluppare il software in una risoluzione nativa 800X600, per permetterne l'esecuzione a sistemi quanto piu' economici in commercio e non piu' in commercio. Per tale motivo molte delle funzioni grafiche sono calcolate su misura di questa risoluzione. I file di supporto alla grafica, contenuti nella cartella "Data", consistono in: un'immagine "bg" per il background; un'immagine "croce" per mostrare la somma; un'immagine "freccetta" per mostrare la codifica di booth/bitpair; un'immagine "frecciasomma" di supporto a "croce"; un'immagine "start" che simula un pulsante per far partire l'algoritmo; un file font "Consolas-Bold-32" che precarica un font che richiama lo stile di una console. Il menu' principale dell'applicativo e' gestito da una classe chiamata "MainMenu" all'interno del file "MainMenu.pde". La classe "binaryDigit" e' stata inserita per gestire le celle contenenti le cifre, essa si trova all'interno del file "binaryDigit.pde". Tale classe contiene attributi e metodi volti a mostrare con diverse combinazioni grafiche le cifre all'interno dell'applicazione, stabilendo dei "range" in cui i valori possono spaziare in base alle esigenze. La classe "QuizSquare" contiene all'interno dei semplici metodi volti a mostrare la scritta QUIZ alla destra, quando si e' in modalita' quiz. Tale dicitura ha funzione di far distinguere in che modalita' si sta operando all'utente. Essa si trova all'interno del file "QuizSquare.pde" Il file piu' articolato, nonche' il .pde principale, e' nominato "visualbooth". Esso contiene due metodi principali: -void setup() chiamato all'avvio del programma, serve ad impostare i valori iniziali di tutte le variabili globali. -void draw() chiamato 60 volte al secondo per default, serve a controllare ciclicamente l'interazione con il Mouse. Infine il file contiene un metodo progettato per la modalita' quiz: boolean esit(ArrayList al1, ArrayList al2). Tale metodo funge da trigger logico per diverse sezioni grafiche. --------------------------------------------------------------------- -Parte Logica: La parte logica del Software consiste in una classe nominata Product che prende in input i due array ad int e applichera' il calcolo in base ai metodi richiamati. Tale classe e' contenuta nel file file "Booth_algorythm.pde". I metodi principali sono "moltiplicazione()" e somma(int[],int[],int,int[][]). Essi sono metodi fondamentali per la riuscita di tutti e tre gli algoritmi, infatti vengono richiamati in ogni simulazione e/o partita al quiz. Altri metodi contenuti nello stesso file sono quelli relativi agli algoritmi di Booth e BitPair: Il metodo Booth()si occupa della conversione del secondo array di input, dopodiche' viene chiamata la funzione moltiplicazione() e quindi somma(...) stavolta stando attenti a eventuali conversioni nei prodotti. int[] conversione(int[]) e' infatti un metodo di supporto a tale elaborazione. Il metodo Bitpair() convertira' l'array prima convertito dal metodo Booth(), dopodiche' il problema sara' rimandato al metodo moltiplicazione, stavolta pero' stando attenti a eventuali shift(int[] leftShift(int[]). Sono state costruite tre sottoclassi ad hoc, derivate della classe "Product", per conservare i valori che dovranno poi essere presentati nella parte grafica dell'applicazione. La classe "ProdottoC",contenuta nel file "Prodotto_in_colonna.pde",permette di istanziare oggetti che, richiamando il metodo avvia(), risolvono la moltiplicazione e restituiscono il prodotto naturale, svolto in colonna, dei due numeri binari. La classe "Booth",contenuta nel file "Algoritmo_di_Booth.pde", permette di istanziare oggetti, i quali, con il metodo avvia() richiamano i metodi di "Product" relativi alla risoluzione dell'algoritmo di Booth, fornendo l'accesso al relativo array di supporto contenente il secondo fattore della moltiplicazione codificato con codifica di Booth. Il risultato e' fornito in codifica in complemento a due all'interno dell'array result. La classe "BitPair",contenuta nel file "BitPair.pde", risolve l'algoritmo bitpair. Essa contiene un metodo avvia(), che richiama i metodi utili alla risoluzione dell'algoritmo per risolvere la moltiplicazione con bitpair, fornendo il risultato in codifica in complemento a due. Si e' scelto questo modus operandi per semplificare al massimo i tre algoritmi, utilizzando una sola funzione per il prodotto. --------------------------------------------------------------------- ---Collaudi --- Entrambi i collaudi su SO Ubuntu 19.10 e su Windows con il SO Windows 10 hanno riscontrato esecuzione corretta in piena coerenza del Software, a prescindere dal sistema operativo. Eventuali migliorie apportabili: 1. Inserire la possibilita' di cambiare la risoluzione grafica del Software; 2. Utilizzo di una codifica non fissa (rimuovere dunque la codifica fissa a 8 bit); 3. Snellimento del codice;