dannyboy
wzl-lid
Sinds 31/5/2005
T: 108
R: 883
|
24/5/2007 -
15:08u
| Quote
|
De vraag gaat niet echt over programeren, maar het heeft er mee te maken. Daarom zet ik em hier.
Ik maak een programma dat een ingegeven wiskundige functie (bv: f(x) = x^2/(3*x-5^(x/2)) controleert. Ik lees dus een string in via een textveld en controleer of het een correcte functie is. Ik doe dit in 4 controles: 1) Is er iets ingevuld?: deze controle is gewoon om te kijken of er iets in het textveld staat.
2) Zijn er alleen correcte characters gebruikt?: hier controleer ik elk character van de string of het 1 van de volgende characters is: 0 1 2 3 4 5 6 7 8 9 x ( ) * / + - ^
3) Zijn er evenveel geopende als gesloten haakjes en staan deze in de juiste volgorde?: Hier ga ik elk teken 1 voor 1 af en kijk of het een '(' is of een ')' is. Ik tel het aantal '(' in een variabele en het aantal ')' in een ander variabele. Telkens als ik een teken heb gehad kijk ik of het aantal ')' niet groter is als het aantal '('. Nadat ik alle tekens heb gehad kijk of het aantal '(' evenveel is als het aantal ')'.
4) Wordt elk character door een correct character gevolgd?: Ik ga elk character af en kijk of het character dat erna komt correct is: 0 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 1 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 2 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 3 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 4 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 5 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 6 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 7 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 8 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) 9 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ ) x kan gevolgd worden door: * / + - ^ ) ( kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 - x ) kan gevolgd worden door: * / + - ^ * kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x ( / kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x ( + kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x ( - kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x ( ^ kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 x (
het eerste character kan zijn: 0 1 2 3 4 5 6 7 8 9 x (
Mijn vraag is nu of jullie nog foute wiskundige functies kunnen bedenken die door deze controles komen.
Alvast bedankt
Ps: sorry voor de lange tekst
|
Einstein
[mod] Kayniaan
Sinds 24/6/2004
T:84 -
R:2433
|
24/5/2007 -
21:49u
| Quote
|
-5^(1/2) e.d. of mogen imaginaire getallen en /0
|
dannyboy
wzl-lid
Sinds 31/5/2005
T:108 -
R:883
|
24/5/2007 -
23:08u
| Quote
|
Einstein schreef: -5^(1/2) e.d. of mogen imaginaire getallen en /0 voor de /0 ben ik ook al een oplossing aannt zoeken. maar ik denk dat ik gewoon de exception ga opvangen als ik de functie met een test x-waarde ga uitvoeren. Ik denk dat ik de -5^(1/2) ook op die manieer kan opvangen.
Laatst aangepast door
dannyboy
op 24/05/2007 23:12:06u
(2x aangepast)
|
D3ton8oR
Stella-man
Sinds 15/10/2003
T:32 -
R:1581
|
25/5/2007 -
10:08u
| Quote
|
logaritmische functies? integralen?
|
dannyboy
wzl-lid
Sinds 31/5/2005
T:108 -
R:883
|
25/5/2007 -
12:06u
| Quote
|
D3ton8oR schreef: logaritmische functies? integralen? ik begin simpel, het programma dient om nulpunten te benaderen met numerieke methoden. Ik wil eerst beginnen dat em een simpele functie herkent, en dan eventueel verdergaan op log, sin, cos, tan, cotan, ln, e, pi,...
|
Zubzub
wzl-lid
Sinds 30/7/2005
T:2 -
R:176
|
26/5/2007 -
19:56u
| Quote
|
ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was...
|
Fry
wzl-lid
Sinds 1/2/2006
T:2 -
R:36
|
28/5/2007 -
21:48u
| Quote
|
Zubzub schreef: ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was... 
Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.
Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
|
GrimBlasPhemy
wzl-lid
Sinds 1/11/2004
T:0 -
R:29
|
29/5/2007 -
14:56u
| Quote
|
Fry schreef: Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
3 kan gevolgd worden door: 0 1 2 3 4 5 6 7 8 9 * / + - ^ )
Laatst aangepast door
GrimBlasPhemy
op 29/05/2007 14:57:21u
(1x aangepast)
|
0r10n
wzl-lid
Sinds 25/10/2004
T:3 -
R:6
|
30/5/2007 -
20:00u
| Quote
|
tip: zoekt ne keer op hoe da ge reguliere expressies moet opstellen. Ik denk (bijna zeker) dat java standaard een methode heeft om een string te testen voor een bepaalde reguliere expressie. Wordt standaard veel gebruikt bij validatie van invoervelden. Want als ge da ga programmeren gelijk of da ge t neergeschreven hebt, zal t nie echt gemakkelijk te lezen zijn.
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
4/6/2007 -
10:12u
| Quote
|
puntje 3 kan efficienter met maar 1 var.. bij ( -> aantal++ bij ) -> aantal-- verder mag aantal niet onder 0 gaan. hierdoor spaar je een int uit wat 32 bit of 4 byte is!
ok, ik geef toe, het is een minimale verbetering, maar uiteindelijk zal het wel iets uitmaken
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
4/6/2007 -
10:14u
| Quote
|
voor puntje 4 zou je bv http://www.singularsys.com/jep/ kunnen gebruiken
|
Keneo
wzl-lid
Sinds 19/10/2004
T:7 -
R:409
|
5/6/2007 -
12:13u
| Quote
|
haakjes kunnen redelijk eenvoudig (en makelijk uitbreidbaar naar andere soorten haakjes) gecontrolleerd worden met een stack
plaats bij open haakje het haakje op de stack, bij sluiten haakje haal je het erweer van (bij verschillende soorten haakjes ("()","[]" of "{}" controlleer je of het haakje op de stack overeenkomt. (zoniet, fout)
als bij het overloven van de functie een sluitend haakje gevonden wordt en de stak is leeg heb je een fout als na het overlopen van de functie de stack niet leeg is heb je een fout
opmerking -75x^3+2x komt niet door jouw test? (beginnend simboolis een min) mja, oplossing 0-xxx, maar toch niet zo maklijk 
1/(x-x) etc...
Laatst aangepast door
Keneo
op 5/06/2007 12:15:09u
(1x aangepast)
|
Goldie
wzl-lid
Sinds 7/4/2006
T:0 -
R:1
|
19/6/2007 -
13:06u
| Quote
|
0r10n schreef: tip: zoekt ne keer op hoe da ge reguliere expressies moet opstellen. Ik denk (bijna zeker) dat java standaard een methode heeft om een string te testen voor een bepaalde reguliere expressie. Wordt standaard veel gebruikt bij validatie van invoervelden. Want als ge da ga programmeren gelijk of da ge t neergeschreven hebt, zal t nie echt gemakkelijk te lezen zijn. ik zou ook regexen, en het is ni eens moeilijk, gewoon uwe input in ne string steken en dan
input.matches( "regexwaaraandenestmoetvoldoen" ) ;
natuurlijk, om wikundige uitdrukkinge te controlere gaat da wel ne redelijk ingewikkelde regex worde wss...
Laatst aangepast door
Goldie
op 19/06/2007 13:07:52u
(1x aangepast)
|
Zubzub
wzl-lid
Sinds 30/7/2005
T:2 -
R:176
|
23/6/2007 -
18:13u
| Quote
|
Fry schreef:
Zubzub schreef: ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was... 
Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.
Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!
Laatst aangepast door
Zubzub
op 23/06/2007 19:53:15u
(1x aangepast)
|
GrimBlasPhemy
wzl-lid
Sinds 1/11/2004
T:0 -
R:29
|
19/7/2007 -
19:43u
| Quote
|
Zubzub schreef:
Fry schreef:
Zubzub schreef: ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was... 
Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.
Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!
try catch is idd een goede gewoonte, maar niet op de manier zoals je het beschreef. Omdat je te lui bent om checks te bouwen error trapping gaan gebruiken?
try catch is om fouten op te vangen die programmatorisch niet kunnen vermeden worden filenotfoundexception bvb of wanneer de database er uit ligt... Dit zijn dingen die niet kunnen vermeden worden, dat gebeurt gewoon soms. DAAR gebruik je try catch voor, en dan heb je gelijk dat het een heel goede programmeer gewoonte is
|
Zubzub
wzl-lid
Sinds 30/7/2005
T:2 -
R:176
|
22/7/2007 -
22:16u
| Quote
|
GrimBlasPhemy schreef:
Zubzub schreef:
Fry schreef:
Zubzub schreef: ipv de input te controlleren kunde mss ook gewoon nen try catch bij de uitvoering van de formule zette. als de formule niet kan worde uitgevoerd een foutmelding aan de gebruiker voor correcte input te vragen. Op die manier hoef je geen 1001 input controles in te bouwen en maar 1 uitvoeringscontrole, en zit je veel flexibeler qua complexere formules. maar ik neem dat de vraag niet was... 
Dat is nogal een slechte programmeergewoonte. Achteraf is het dan heel moeilijk om je code zelf nog correct te lezen, het kan heel onverwachte resultaten geven en je kan geen deftige foutboodschap naar de gebruiker toe geven.
Ontopic: Hou je er rekening mee dat (123(123)) geen correcte invoer is?
try catch is juist een heel goede programmeer gewoonte! het maakt je programma juist robuster en makkelijker om te lezen en leidt tot perfect te verwachten resultaten + je kan er veel gedetailleerdere foutboodschappen naar de gebruiker toe geven!
try catch is idd een goede gewoonte, maar niet op de manier zoals je het beschreef. Omdat je te lui bent om checks te bouwen error trapping gaan gebruiken?
try catch is om fouten op te vangen die programmatorisch niet kunnen vermeden worden filenotfoundexception bvb of wanneer de database er uit ligt... Dit zijn dingen die niet kunnen vermeden worden, dat gebeurt gewoon soms. DAAR gebruik je try catch voor, en dan heb je gelijk dat het een heel goede programmeer gewoonte is
mja hier op hogent moesten we voor input van users te controllere (bvb geen cijfers en geen NULL) try catch gebruiken. Dermee da het mij handig leek om zelf een exception te schrijve die kan worden gecatch als de wiskunde user input niet kan worden herleid tot een logisch wiskundig resultaat ipv 1001 controles in te bouwen. voor de rest geef ik je natuurlijk helemaal gelijk
|