Calcolatrice |
Una calcolatrice e un’euro convertitoreE’ vero che ogni sistema operativo ne ha una, ed è anche migliore di questa, tuttavia questa è speciale perché, avendo seguito l’articolo sulla notazione polacca postfissa, questo è il naturale epilogo: sfruttare la nuova capacità di calcolo che abbiamo “insegnato” al nostro computer mediante la programmazione della notazione polacca postfissa, facendogli calcolare tutte (o quasi ) le espressioni che più ci piace. Uso della calcolatriceAl momento le funzioni che la calcolatrice a gestire sono esattamente quelle della notazione polacca postfissa, dato che utilizza lo stesso sistema, ma è piuttosto semplice aggiungerne altre andando a modificare il programma (che come mia consuetudine è distribuito con il codice sorgente). L’utilizzo è semplicissimo, premendo col mouse i tasti, viene aggiornato il display (il quale è possibile anche editarlo manualmente, per altre funzionalità che poi vedremo). Una volta che l’espressione viene realizzata sul display, se premiamo col mouse sul tasto “ = “ allora otteniamo il risultato del calcolo oppure “ERR” se si è verificato un errore. Bug notiE’ possibile che la calcolatrice non capisca qualche passaggio e scriva uno zero (questo è un bug noto), ad esempio scrivendo 6d*3, la calcolatrice risponde 0 (zero) e assegna una variabile d al valore zero. Ricordandosi però di scrivere sempre gli operatori correttamente fra un numero dovrebbe andare tutto bene. Ho simulato con successo tantissime espressioni differenti ed i calcoli sono sempre stati corretti (a meno degli arrotondamenti dei numeri in virgola mobile dei computer, che qualche volta lasciano a desiderare, per questo potreste trovarvi 1/3*3 calcolato correttamente 1, ma se fate prima 1/3 = e poi * 3 potreste facilmente trovare 0.99999999999999 !). Altri bug: spesso il parser (il sistema di funzioni che a partire da un testo, esempio una espressione algebrica che per il computer è semplicemente un testo privo di significato, genera informazioni comprensibili dal programma, è quindi la parte che da la comprensione del testo/input fornito al computer al computer stesso) si bloccava quando non capiva esattamente il testo sul display (lo stesso bug è nella mia versione della polacca inversa, dato che è lo stesso parser numerico da me realizzato), ora dovrebbe al più resituire zero senza tuttavia bloccarsi, però non posso garantire che non esista più nessuna combinazione di tasti che non lo blocchi. Sarebbe possibile riscrivere il parser però onestamente non ho il tempo per farlo, è nato così (un po’ di fretta e me lo tengo), c’è comunque il codice sorgente e chiunque può migliorarlo. Altre caratteristicheInoltre questa calcolatrice rispetto alle altre, oltre ad avere un semplice euro convertitore ha un piccolo segreto, elabora anche delle variabili (che andranno inserite però da tastiera). E’ possibile, attraverso una voce del menu Command, assegnare un risultato ad una variabile ed utilizzarla in seguito. E’ altresì possibile assegnare esplicitamente ad una variabile una espressione (anche contenente altre variabili) come si vede nell’esempio: Dopo la pressione del taso = sul tastierino della calcolatrice (col mouse) l’espressione viene calcolata e poi, sarà possibile utilizzare il valore in altre espressioni. Ad esempio premiamo il tasto 2 con il mouse e poi andiamo sul menu Command e selezioniamo “Insert any var”, a questo punto si apre una finestrella che ci chiede quale variabile inserire, basta rispondere e continuare con l’espressione oppure chiedere il risultato premendo l’uguale con il mouse. Attenzione: nella dichiarazione esplicita di espressioni o nel normale editino di espressioni, qualora fossero presenti altre variabili, come ad esempio: se la variabile b non è ancora stata definita in alcun modo, viene comunque creata e assegnata al valore 0 (zero), questo programma non riesce ad eseguire calcolo letterale e si aspetta quindi che le variabili abbiano sempre un valore esplicito numerico e non simbolico. Nell’esempio, al momento del calcolo, essendo nota solo la variabile a, il valore calcolato di c è sempre 7 (o meglio, il valore di a, poiché b è considerata zero). E’ possibile ridefinire una variabile con l’assegnazione di un nuovo valore: se ad esempio scriviamo un valore sul display (o lo otteniamo da un calcolo) e impostiamo questo valore con il menu “Command” e “Save result to var” o lo impostiamo attraverso assegnazione esplicita, ad esempio b=7 (pressione del tasto = col mouse), ora la variabile b non è più zero e sarà possibile ricalcolare anche c, come a+b e verificare che il risultato è ancora corretto. Questo programma è molto semplice però potrebbe tornare abbastanza utile. Un’annotazione: purtroppo mi sono dimenticato di aggiungere il pulante con la funzione esponenziale “exp(“ ma il programma sa calcolare la funzione, è possibile editarla manualmente sul display, lo so è grave, però io faccio questo a tempo perso… giusto per passione non ho troppo tempo da dedicare a queste cose… per questo ed altri bug chiedo anticipatamente scusa, di proposito fornisco il codice sorgente così chi vuole può sistemarselo. Altre notizie sul programmaQuesto programma è scritto in C++ standard ANSI / ISO e utilizza il framework GUI (Graphic User Interface) wxWindows (http://www.wxwindows.org) alla versione 2.4.2, ma facilmente funzionerà anche con le versioni successive. Queste caratteristiche lo rendono portabile praticamente su qualsiasi calcolatore e qualsiasi S.O., per questi motivi ho abbandonato ogni altro framework e ho sposato in pieno wxWindows. wxWindows funziona sotto Windows (Win16, Win32, Win64), Linux x86, FreeBSD, NetBSD, OpenBSD, Solaris, AIX, HP-UX, IRIX, SCO UnixWare, DEC OSF/1, OS/2, OpenVMS, Linux S/390 e Mac OS. Questo programma non necessita di requisiti di sistema hardware particolari, un qualunque processore Pentium da 60Mhz in su, dotato di almeno 16/32 Mb di memoria RAM, dotato di sistema operativo tra quelli sopra elencati può far funzionare questo programma. Data la diffusione, creo sempre pacchetti pronti soltanto per Windows e Linux (che funzionano quasi sempre sotto gli altri Unix senza bisogno di far nient’altro), per gli altri S.O. le cose si complicano perché bisogna rieditare i Makefile (le istruzioni di compilazione). E’ possibile scaricare la versione per Windows e quella per Linux x86. La prima è stata compilata con il Dev-C++ 5 (che usa il compilatore Mingw32, porting da GNU C/C++ Compiler, disponibile gratuitamente al sito http://www.bloodshed.net). La seconda versione è esattamente lo stesso codice ma deve essere compilata sotto Linux (qualsiasi distribuzione recente con installato wxWindows e gli strumenti di sviluppo andrà bene). Per la versione Windows, scaricare il setup e lanciarlo. Per la versione Linux, scaricare il pacchetto sorgente , scompattarlo con $ tar xjvf calculator-0.1.tar.bz2 Entrare nella directory $ cd calculator-0.1 ed eseguire $ ./configure $ make $ make install Chi usa altri sistemi, può sempre dotarsi di wxWindows e compilare i sorgenti, seguendo anche le indicazioni presenti nel sito del framework. Scarica la versione per Windows Scarica la versione per Unix / Linux Potete scaricare questo software e farne ciò che vorrete, è distribuito sotto licenza GPL, allegata al pacchetto. Saluti, Paolo Ferraresi |