Programma di scrittura algebrica

di il
4 risposte

Programma di scrittura algebrica

Ciao a tutti, premetto che ho quindici anni e frequento la prima superiore ad un liceo scientifico sperimentale e mi "diletto" da un paio di mesi nella programmazione java (a dirla tutta mi sono occupato un mese e mezzo del linguaggio C e un altro mese e mezzo di java) e nell'ultimo periodo ho lavorato sull'assembly e sul PHP.
dopo essermi divertito con le interfacce grafiche in java (da semplici radio button a degli editor di testo di discreta complessità, anche se non vantano certo la complessità e la completezza di editor affermati quali word e open office) ho deciso di fare qualcosa di utile.
ora, essendo io disgrafico (un problema piuttosto raro da trovare in forma singola senza essere accompgnato da dislessia o da altri disturbi che in pratica rende lenta, illeggibile, faticosa e dolorosa la scrittura di un disgrafico) e questo mi crea enormi problemi nell'algebra, nella quale, pur eccellendo come capacità di comprensione dei meccanismi di questa materia faccio una serie infinita di errori banali (dimentico una x, la scambio per una y, scambio un numero per l'altro).
per ovviare a questo problema potrei scaricarmi un software già esistente e utilizzarlo, ma vorrei realizzarne uno tutto mio, nel quale io possa decidere le scorciatoie da tastiera e simili; dunque i miei due grossi problemi sono:
1. come faccio a realizzare graficamente una frazione (scrivere "x/y" non è molto chiaro e se si tratta di un' espressione-equazione molto lunga tanto varrebbe fare a mano)
2. come fare in modo che il programma sia sempre in ascolto di una combinazione di tasti (ad esempio quando io premo "Ctrl+Shift+f" voglio che il programma tiri una linea di frazione e passi a scrivere al denominatore, è necessario che questo sia fatto tramite scorciatoie da tastiera per velocizzare le cose perchè altrimenti usare il mouse richiederebbe troppo tempo)
Quindi vi chiedo: "sareste disposti ad aiutarmi?"
grazie in anticipo

4 Risposte

  • Re: Programma di scrittura algebrica

    Ti stai cacciando in un ginepraio: l'argomento e' molto complesso.

    La parte di lettua da tastiera e' banale: basta un banale ciclo che legge in continuazione, e quando legge il carattere di terminazione (che puo' essere, ad esempio, un <a capo> o un <punto e virgola>) inizia la valutazione dell'espressione.

    E qui' cominciano i casini: un'espressione non e' semplicemente una lista di simboli, ma devi prendere in considerazione la precedenza degli operatori e costruire l'albero dell'espressione

    As esempio: "1+2*3" NON E' "((1+2)*3)", MA ("1+(2*3))".
    E come valuteresti: 2x-3 == 1-x-4+3x ?

    E qui cade l'asino: gia' implementare una semplice applicazione che manipola polinomi di grado qualunque non e' proprio banale, peggio che peggio se deve supportare il quozione di due polinomi.

    Considera che non c'e' praticamente differenza, dal punto di vista dell'implementazione e degli algoritmi e delle strutture dati, se il polinomio e' di grado 0, 1 o 1.000.000.

    E siamo ad una variabile (solo x). Non ti dico i casini se a 2 o piu' variabili x E y): oltre a saper implementare le operazioni tra polinomi (somma, sottrazione, moltiplicazione, divisione, elevamento a potenza, fattorizzazione, semplificazione), hai anche la necessita' di utilizzare strutture dati abbastanza complesse.

    Ben al di la di quanto puoi sapere dopo qualche mese di utilizzo di un linguaggio di programmazione, e nessuna esperienza in termini di algoritmi ed implementazione di software complessi.

    E questa e' ancora la parte facile, perche' la parte difficile arriva adesso: visualizzare un formula in modo ragionevole implica ragionare in due dimensioni ed in modo ricorsivo:

    ogni numeri, variabile, operatore matematico deve essere pensato come un rettangolino.
    quindi devi comporre i singoli rettangolino per rappresentare un'espressione leggermente piu' complessa, ed il corrispondente rettangolo, e via via, ricorsivamente, fino a ricostruire, in due dimensioni, l'intera tua espressione.

    Considera che i concetti che ti servono per fare tutto cio' li riesci a comprendere dopo un bel po' di studio. Diciamo pure un annetto, lavorandoci 8 ore al giorno 7 giorni su sette.

    Io ci ho provato, non sono proprio di primo pelo, e di informatica ne mastico un bel po': e' un casino!

    Invece, se vuoi qualcosa di gia' pronto, a mio avviso il miglior software di calcolo simbolico attualmente esistente e' Wolfram Mathematica.



    Esiste la versione Personal, che costa 300 euro circa: una bazzeccola visto la complessita' del software e quello che puo' fare: se ci attacchi una caffettiera USB ti farebbe pure il caffe'!

    Una soluzione gratuita che fa piu' o meno quello che vuoi tu e' Maxima



    Decisamente meno elegante di Mathematica, ma puo' andare.


    Concludo: anche supponendo di non implementare un sistema di valutazione, ma solo un tool per la scrittura delle espressioni, rimane un compito abbastanza complesso anche per chi ha esperienza di programmazione!

    Ti conviene decisamente scegliere qualcosa di gia' pronto.
  • Re: Programma di scrittura algebrica

    Ti ringrazio per la pronta risposta; tuttavia a me non serve un calcolatore ma solo un editor che formatti il tutto in modo chiaro.
    in sostanza io ho intenzione di limitarmi a considerare un intero polinomio come un singolo quadratino e, in casi eccezionali, considerare come un quadratino un'intera frazione, senza in alcun modo calcolare niente
    una cosa del tipo:
    2x+2-3/x-5
    o anche semplicemente trasformare 2/3 in una frazione
  • Re: Programma di scrittura algebrica

    Se per caso non hai letto l'ultima parte del post, lo riscrivo: e' complicato anche per un programmatore con esperienza

    Ti conviene usare software gia' esistenti: ad esempio Word ha l'equation editor, stessa cosa per LibreOffice.

    Con un po' di pazienza trovi sicuramente altro su Internet
  • Re: Programma di scrittura algebrica

    OK, grazie mille, allora vuol dire che utilizzerò un programma già fatto e ccontinuerò a studiare java
    Grazie mille per la pazienza!
Devi accedere o registrarti per scrivere nel forum
4 risposte