Evaluator-Änderungen von JACK2 nach JACK3: Unterschied zwischen den Versionen
Spobel (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
PRanz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 62: | Zeile 62: | ||
* <code>varA=[3+x+x] varB=[[var=varA]+3]</code> -> LaTeX: <code>$3+x+x+3$</code>. Hier ist <code>[3+x+x]</code> zwar auch Teil einer Summe, da diese aber auch mit <code>[</code> und <code>]</code> umschlossen ist, wird der Ausdruck nicht ausgerechnet. | * <code>varA=[3+x+x] varB=[[var=varA]+3]</code> -> LaTeX: <code>$3+x+x+3$</code>. Hier ist <code>[3+x+x]</code> zwar auch Teil einer Summe, da diese aber auch mit <code>[</code> und <code>]</code> umschlossen ist, wird der Ausdruck nicht ausgerechnet. | ||
* <code>getFromList([1+1], list(1,2,3))</code> -> LaTeX: <code>3</code>. Hier ist <code>[1+1]</code> Teil einer Funktion, die den genauen Wert benötigt. Daher wird <code>[1+1]</code> berechnet. | * <code>getFromList([1+1], list(1,2,3))</code> -> LaTeX: <code>3</code>. Hier ist <code>[1+1]</code> Teil einer Funktion, die den genauen Wert benötigt. Daher wird <code>[1+1]</code> berechnet. | ||
==Nicht mehr unterstützte Funktionen== | |||
* <code>getFromSet</code> | |||
* <code>getFromOrderedSet</code> | |||
* <code>equalsSemiSem</code> | |||
* <code>eval</code> | |||
* <code>evalCplx</code> | |||
* <code>evalEq</code> | |||
* <code>evalPolynomial</code> | |||
* <code>evalPolynomialCplx</code> | |||
* <code>evalTermIn2Variables</code> | |||
* <code>evaluateInSymja</code> | |||
* <code>expand</code> | |||
* <code>getFromOrderedList</code> wird durch <code>sortXList</code>, wobei <code>X</code> der Typ der Listenelemente ist (s. Neue Funktionen), und <code>getFromList</code> ersetzt. Mit <code>sortXList</code> wird die Liste sortiert und mit <code>getFromList</code> kann ein Element aus dieser Liste ausgewählt werden. |
Version vom 28. Mai 2020, 08:21 Uhr
Diese Seite ist beinhaltet alle Unterschiede zum alten Evaluator im JACK3 System. JACK3 ist derzeit noch in Entwicklung und noch nicht für die Benutzung freigegeben. |
Allgemein
In JACK3 wird nun eine neue Evaluatorversion genutzt. Im folgenden werden die Änderungen/Unterschiede zur alten Version aufgezählt.
Zeichenketten/Strings
Zeichenketten/Strings können in der Syntax mit einfachen oder doppelten Anführungszeichen verwendet werden.
Eine Benutzung der jeweils anderen ist dann ohne Escaping \" \'
möglich.
Achtung! Das Escaping wird nicht vom Evaluator aufgelöst!
Bsp.:
"Dies ist ein 'Beispiel'."
'Dies ist ein anderes "Beispiel".'
"Dies ist ein drittes \"Beispiel\"."
'Dies ist ein letztes \'Beispiel\'.'
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert.
Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.
Bsp.: In "Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen."
wird [var=text1]
nicht ersetzt.
Mit der Funktion concat()
können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:
Bsp.: In concat("Die Ersetzung von Variablen ", [var=text1], " kann so vorgenommen werden.")
wird [var=text1]
durch ihren Wert ersetzt.
Nutzt man in equalsExpr()
Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.
Bsp:
equalsExpr('x^2+3', [input=gleichung])
->x^2+3
wird als Text, nicht als mathematischer Ausdruck erkannt.equalsExpr(x^2+3, [input=gleichung])
->x^2+3
wird als mathematischer Ausdruck erkannt.
Neue Funktionalität
Es gibt nun eine Möglichkeit Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen.
Ein Beispiel hierfür ist die Definition von Variablen für den Aufgabentext.
Hat man bisher x+2*x
als Variable angelegt, wurde der Ausdruck zu 3*x
zusammengefasst.
Fügt man nun [
und ]
ein, wird der Ausdruck nicht mehr ausgerechnet.
Bsp.:
x+3*x
-> LaTeX:$4 \cdot x$
. Hier wird der Ausdruck ausgerechnet.[x+3*x]
-> LaTeX:$x+3 \cdot x$
. Hier wird der Ausdruck nicht ausgerechnet.getFromList(0,list(x+3*x,[2*x+3*x]))
-> LaTeX:$4 \cdot x$
. Hier wird der Ausdruck ausgerechnet.getFromList(1,list(x+3*x,[2*x+3*x]))
-> LaTeX:$2 \cdot x + 3 \cdot x$
. Hier wird der Ausdruck nicht ausgerechnet.
Die Variablen können allerdings trotzdem zur Bewertung der Aufgabe verwendet werden.
Sobald ein "gestoppter"-Ausdruck (von [
und ]
umschlossen) in einer Funktion verwendet wird, wird diese ausgerechnet.
D.h. viel mehr, dass ein "gestoppter"-Ausdruck nur solange "gestoppt" ist, wie keine Funktion den Wert dieses "gestoppten"-Ausdrucks verwendet.
Bsp.:
3+[x+x]
-> LaTeX:$2 \cdot x + 3$
. Da[x+x]
Teil der Summe ist, wird er ausgerechnet.[3+x+x]
-> LaTeX:$3+x+x$
. Hier ist der Ausdruck selbst eine Summe. Da er hier aber kein Parameter einer weiteren Funktion ist, wird er nicht ausgerechnet.varA=[3+x+x] varB=[var=varA]+3
-> LaTeX:$2 \cdot x + 6$
. Hier ist[3+x+x]
wieder Teil einer Summe und wird daher ausgerechnet.varA=[3+x+x] varB=[[var=varA]+3]
-> LaTeX:$3+x+x+3$
. Hier ist[3+x+x]
zwar auch Teil einer Summe, da diese aber auch mit[
und]
umschlossen ist, wird der Ausdruck nicht ausgerechnet.getFromList([1+1], list(1,2,3))
-> LaTeX:3
. Hier ist[1+1]
Teil einer Funktion, die den genauen Wert benötigt. Daher wird[1+1]
berechnet.
Nicht mehr unterstützte Funktionen
getFromSet
getFromOrderedSet
equalsSemiSem
eval
evalCplx
evalEq
evalPolynomial
evalPolynomialCplx
evalTermIn2Variables
evaluateInSymja
expand
getFromOrderedList
wird durchsortXList
, wobeiX
der Typ der Listenelemente ist (s. Neue Funktionen), undgetFromList
ersetzt. MitsortXList
wird die Liste sortiert und mitgetFromList
kann ein Element aus dieser Liste ausgewählt werden.