Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-03-2009, 12:30   #1
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
[Java]Da Stringa a Float.

Ciao a tutti
Ho un problema che non riesco a risolvere:

All'interno della mia classe ho una variabile di tipo
Codice:
String funzione = "x*x"
Ho anche un metodo
Codice:
       public float f(float x) {
       return ????
Come posso fare a far sì che la stringa funzione venga vista come operazione a tutti gli effetti da eseguire?
In teoria il return deve essere la funzione scritta dall'utente in un Textfield.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 12:39   #2
supertonno
Senior Member
 
L'Avatar di supertonno
 
Iscritto dal: Aug 2003
Città: Rimini
Messaggi: 422
L'unico modo che conosco e utilizzare un math espression parser. Le librerie standard non lo fanno, quindi le cose sono 2:
-se le espressioni da decifrare sono semplici scrivi un piccolo parser, con l'utilizzo delle espressioni regolari.
-se le espressioni che devi calcolare possono essere complesse, cerca online un math espression parser gia fatto e usi quello.
supertonno è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 12:41   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Potresti per esempio implementarti un'automa a stati finiti che analizzi l'espressione aritmetica e con un algoritmo ne calcoli il risultato.

Se ti servono degli esempi in merito ne trovi due molto chiari e semplici, anche se sono in linguaggio C:
- Analizzatore lessicale per espressioni aritmetiche
- Operator Precedence Parsing: calcolare il valore di un'espressione aritmetica
(sono articoli scritti da un utente di questo Forum)
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 15:22   #4
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
se usi java 6 puoi semplicemente usare Rhino così:
Codice:
  ScriptEngineManager mgr = new ScriptEngineManager();
  ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
  String expression = "3 * 5 + 2";
  jsEngine.put("expression", expression);
  try {
    double result = (double)jsEngine.eval("eval(expression)");
  } catch (ScriptException ex) {
      ex.printStackTrace();
  }
sempre se la tua espressione contiene una sequenza di numeri, di operazioni matematiche e di parentesi valida.
__________________

Ultima modifica di ^TiGeRShArK^ : 25-03-2009 alle 18:25.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 16:42   #5
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Ciao,

si, come dice Supertonno, potresti scaricare un parser bell'e pronto dalla rete. Ma, a parer mio, è più istruttivo(e, sempre IMHO, anche più divertente), costruirsi un parser per conto proprio.

Un altro metodo per effettuare il parsing, oltre a quelli indicati da Banryu(che ringrazio per il parere positivo sui miei articoli; sono l'utente di cui parla ) è il cosiddetto parsing a discesa ricorsiva che ha il pregio di essere facilmente implementabile a mano.
Qui ne trovi un esempio:

http://www.hwupgrade.it/forum/showthread.php?t=1929862

x TigerShark: credo che Blizzard abbia bisogno di gestire anche le variabili oltre alle costanti numeriche. Per fare questo è necessario implementare una tabella dei simboli. I link seguenti contengono un paio di esempi:

http://www.ibm.com/developerworks/li...flexbison.html

http://epaperpress.com/lexandyacc/index.html

Si tratta di parser di tipo LALR(1) che utilzzano i tools Flex/Bison. Per Java è possibile utilizzare gli strumenti equivalenti:

http://www.cs.princeton.edu/~appel/modern/java/JLex/

http://www.cs.princeton.edu/~appel/modern/java/CUP/
http://www2.cs.tum.edu/projects/cup/

Se si preferisce, invece, la tecnica top-down, è disponibile, tra i tanti, ANTLR:

http://www.antlr.org/



P.S. sto preparando una mini guida su compilatori, interpreti e tecniche di parsing; seguirà un contest sull'argomento.

Ultima modifica di Vincenzo1968 : 25-03-2009 alle 16:46.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 17:24   #6
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Ciao,

si, come dice Supertonno, potresti scaricare un parser bell'e pronto dalla rete. Ma, a parer mio, è più istruttivo(e, sempre IMHO, anche più divertente), costruirsi un parser per conto proprio.

Un altro metodo per effettuare il parsing, oltre a quelli indicati da Banryu(che ringrazio per il parere positivo sui miei articoli; sono l'utente di cui parla ) è il cosiddetto parsing a discesa ricorsiva che ha il pregio di essere facilmente implementabile a mano.
Qui ne trovi un esempio:

http://www.hwupgrade.it/forum/showthread.php?t=1929862

x TigerShark: credo che Blizzard abbia bisogno di gestire anche le variabili oltre alle costanti numeriche. Per fare questo è necessario implementare una tabella dei simboli. I link seguenti contengono un paio di esempi:

http://www.ibm.com/developerworks/li...flexbison.html

http://epaperpress.com/lexandyacc/index.html

Si tratta di parser di tipo LALR(1) che utilzzano i tools Flex/Bison. Per Java è possibile utilizzare gli strumenti equivalenti:

http://www.cs.princeton.edu/~appel/modern/java/JLex/

http://www.cs.princeton.edu/~appel/modern/java/CUP/
http://www2.cs.tum.edu/projects/cup/

Se si preferisce, invece, la tecnica top-down, è disponibile, tra i tanti, ANTLR:

http://www.antlr.org/



P.S. sto preparando una mini guida su compilatori, interpreti e tecniche di parsing; seguirà un contest sull'argomento.
se deve gestire anche le variabili allora il semplice eval di javascript è insufficiente.
Comunque con Java 6 non deve scaricare assolutamente nulla dalla rete dato che Rhino è integrato nella VM.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 17:59   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
se deve gestire anche le variabili allora il semplice eval di javascript è insufficiente.
Comunque con Java 6 non deve scaricare assolutamente nulla dalla rete dato che Rhino è integrato nella VM.
Ciao Tiger, qual'è il package di riferimento?
Cioè, per esempio, dove si trova la classe ScriptEngineManager? Sarò ubriaco ma non riesco a trovarlo
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 18:09   #8
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
se deve gestire anche le variabili allora il semplice eval di javascript è insufficiente.
Comunque con Java 6 non deve scaricare assolutamente nulla dalla rete dato che Rhino è integrato nella VM.
Dall'esempio che ha postato si direbbe che abbia bisogno di gestire le variabili:

Codice:
String funzione = "x*x"
Ha incurosito anche me codesto Rhino. Mi unisco alla richiesta di Banryu.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2009, 18:21   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ciao Tiger, qual'è il package di riferimento?
Cioè, per esempio, dove si trova la classe ScriptEngineManager? Sarò ubriaco ma non riesco a trovarlo
javax.script.ScriptEngineManager
occhio che esiste solo da java 6 in poi
ah, occhio che mi sono dimenticato un cast da Object a double, poichè tutti gli oggetti che rhino ritorna sono appunto Object
edit: ora l'ho aggiunto...
__________________

Ultima modifica di ^TiGeRShArK^ : 25-03-2009 alle 18:25.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 09:54   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
javax.script.ScriptEngineManager
occhio che esiste solo da java 6 in poi
ah, occhio che mi sono dimenticato un cast da Object a double, poichè tutti gli oggetti che rhino ritorna sono appunto Object
edit: ora l'ho aggiunto...
Thanks a lot (ieri sera ero proprio acciecato )

Per Vincenzo: ho trovato questa pagina che spiega la tecnologia condensata nel package javax.script.

Ciao
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 10:24   #11
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Cavoli ragazzi, vi ringrazio molto. Adesso mi leggo tutte le guide che mi avete consigliato, considerando che vorrei provare a implementarlo da solo il parser.

Brevemente vi riassumo il programmino che ho fatto:

l'applicazione è di tipo client/server, comunicazione via soap. Lato server grosso modo funziona quasi tutto come dovrebbe, ovvero cambiando il return del metodo

Codice:
public float f(float x)
    return *****
e inserendo una qualsiasi funzione polinomiale, questa viene disegnata correttamente su un JPanel.

Adesso però devo riuscire a far sì che sia il client a scegliere quale funzione calcolare tramite un Textfield.

Vi ringrazio ancora per i suggerimenti, cercherò di tenervi aggiornati.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 12:37   #12
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Scusate se riporto up il topic, ma sto studiacchiando il package javax.script. seguendo il tutorial alla pagina che ho linkato sopra, e stavo cercando delle implementazioni jsr-223 compatibili di terze parti di altri motori di scripting (nel JDk ver 1.6 viene fornita solo l'implementazione di Rhino).

Sono andato quindi a visitare la pagina pertinente di dev.java.net e ho trovato un elenco di motori di scripting, solo che non ho capito se sono riferimenti esterni a motori si scripting che si vuole supportare nel tempo o se sono già state create le relative implementazioni jsr-223 (l'elenco è presente sotto il titolo "Script Engines in this project (so far!)").

Mi interessa sapere in particolare se esiste l'implementazione per JEP (tra l'altro pertinente al problema dell'utente del thread).

Qualcuno è in grado di darmi qualche delucidazione?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 27-03-2009 alle 12:39.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 13:15   #13
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
da quello che ho capito dovresti scaricarti i binari e poi fare qualcosa del genere:
Codice:
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine jepEngine = m.getEngineByName("JEP");
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 14:19   #14
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
da quello che ho capito dovresti scaricarti i binari e poi fare qualcosa del genere:
Codice:
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine jepEngine = m.getEngineByName("JEP");
Grazie,
sì confermo che bisogna scaricare i binari ma questi forniscono "solo" l'implementazione JSR-223; a parte poi bisogna scaricare l'implementazione del linguaggio del parser in questione (i binari scaricati sono organizzati in sottocartelle, una per ogni script engine JSR-223 implementation, e in ognuna è presente un file readme con i link appropriati e le istruzioni del caso).

JEP non è freeware ma a pagamento, compilando un form si può ricevere il link per scaricare una versione trial.

Grazie e ciao
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2009, 18:37   #15
stetti8five
Member
 
Iscritto dal: May 2006
Messaggi: 273
Quote:
Originariamente inviato da :.Blizzard.: Guarda i messaggi
Ciao a tutti
Ho un problema che non riesco a risolvere:

All'interno della mia classe ho una variabile di tipo
Codice:
String funzione = "x*x"
Ho anche un metodo
Codice:
       public float f(float x) {
       return ????
Come posso fare a far sì che la stringa funzione venga vista come operazione a tutti gli effetti da eseguire?
In teoria il return deve essere la funzione scritta dall'utente in un Textfield.
Ciao, non so quali vincoli hai per la realizzazione di questo software ma hai pensato/conosci/potresti_utilizzare java RMI?
stetti8five è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2009, 13:21   #16
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da stetti8five Guarda i messaggi
Ciao, non so quali vincoli hai per la realizzazione di questo software ma hai pensato/conosci/potresti_utilizzare java RMI?
Scusami, ma non riesco proprio a capire quale sarebbe il beneficio che potrebbe ricavare dall'utilizzare RMI in questo caso... sempre che stiamo parlando entrambi di Remote Method Invocation e non di altro.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2009, 17:59   #17
stetti8five
Member
 
Iscritto dal: May 2006
Messaggi: 273
Quote:
Originariamente inviato da :.Blizzard.: Guarda i messaggi
Cavoli ragazzi, vi ringrazio molto. Adesso mi leggo tutte le guide che mi avete consigliato, considerando che vorrei provare a implementarlo da solo il parser.

Brevemente vi riassumo il programmino che ho fatto:

l'applicazione è di tipo client/server, comunicazione via soap. Lato server grosso modo funziona quasi tutto come dovrebbe, ovvero cambiando il return del metodo

Codice:
public float f(float x)
    return *****
e inserendo una qualsiasi funzione polinomiale, questa viene disegnata correttamente su un JPanel.

Adesso però devo riuscire a far sì che sia il client a scegliere quale funzione calcolare tramite un Textfield.

Vi ringrazio ancora per i suggerimenti, cercherò di tenervi aggiornati.
mi riferivo in particolar modo a quello scritto in rosso. Farsi un parser ad-hoc mi sembra un pò esagerato
stetti8five è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
ThunderX3 XTC, la sedia da ufficio che s...
Mercy, Mission Impossible, Aronofsky: il...
Project Windless: il nuovo action in esc...
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v