EvalTermIn2Variables: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Jack3: Die Funktion ''evalTermIn2Variables'' ist veraltet und wird in Jack3 nicht mehr unterstützt. Bitte nicht mehr verwenden!'''
Als Ersatz bietet sich an den Ausdruck über ''evaluateInSage'' zu evaluieren.
Bsp.:
evaluateInSage("var('x');var('y');x=[var=x];y=[var=y];eval([var=var7],{'x':x, 'y':y})")
Tipp zum Umschreiben:
Regex Befehl für Sublime:
(\(evalterm2\()(?<par1>.*?)(,)(?<par2>.*?)(,)(?<par3>.*?)(\))(?<eq>.*?)(\))
wird ersetzt durch
(evaluateInSage("var('x');var('y');x=$+{par2};y=$+{par3};eval($+{par1},{'x':x, 'y':y})")$+{eq})
wenn die Form wie
(evalterm2([input=field1], 1, 2)==5.5)
ist.
==Zugehörige Evaluatoren==
*'''MathEvaluator'''
===Beschreibung===
===Beschreibung===
Die Funktion ''evalterm2'' wertet einen Ausdruck in zwei Variablen an einer Stelle aus. Der auszuwertende Ausdruck muss von '''a,b''' oder '''x,y''' abhängen. Die Funktion erwartet drei Strings, den Ausdruck und die Werte der beiden Variablen. Sie gibt den Wert des Ausdrucks an der Stelle zurück.
Die Funktion ''evalterm2'' wertet einen Ausdruck in zwei Variablen an einer Stelle aus. Der auszuwertende Ausdruck muss von '''a,b''' oder '''x,y''' abhängen. Die Funktion erwartet drei Eingaben, den [[Ausdruck]] und die Werte der beiden Variablen als [[Gleitkommazahl]]. Sie gibt den Wert des Ausdrucks an der Stelle zurück.


===Syntax===
===Syntax===
  evalterm2(Expression term, float variable1, float variable2 )
  evalterm2([[Ausdruck]] term, [[Gleitkommazahl]] variable1, [[Gleitkommazahl]] variable2 )


===Parameter===
===Parameter===
* '''term''' - der Ausdruck mit zwei Variablen, der ausgewertet werden soll. Er sollte entweder von '''a,b''' oder von '''x,y''' abhängen.
* '''term''' - der [[Ausdruck]] mit zwei Variablen, der ausgewertet werden soll. Er sollte entweder von '''a,b''' oder von '''x,y''' abhängen.
* '''variable1''' - der Wert der ersten Variable ''a'' oder ''x''
* '''variable1''' - der Wert der ersten Variable ''a'' oder ''x''
* '''variable2''' - der Wert der zweiten Variable ''b'' oder ''y''
* '''variable2''' - der Wert der zweiten Variable ''b'' oder ''y''


===Return Value===
===Return Value===
* Gibt das Ergebnis als String zurück.
* Gibt das Ergebnis zurück.


===Beispiele===
===Beispiele===
  evalterm2('x+y','1','2')    --> returns '3'
  evalterm2('x+y',1,2)    --> returns '3'
 
  evalterm2('2a+6b-3','2','0')    --> returns '1'
  evalterm2('2*a+6*b-3',2,0)    --> returns '1'
 
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("1"));
  placeExerciseVariable("a", OMParser.parse("1"));
  placeExerciseVariable("b", OMParser.parse("5"));
}


@Test
public void testEvalTermIn2Variables() {
  assertTrue(3 == getEvaluator().getNumberResult("evalterm2('x+y','1','2')"));
  assertTrue(7 == getEvaluator().getNumberResult("evalterm2('3x+2y','1','2')"));
  assertFalse(7 == getEvaluator().getNumberResult("evalterm2('3x+2y','2','1')"));
  assertTrue(1 == getEvaluator().getNumberResult("evalterm2('2a+6b-3','2','0')"));
}
@Test
public void testEvalTermIn2VariablesWithInput() {
  assertTrue(30 == getEvaluator().getNumberResult("evalterm2('6x+27y+3','[pos=1]','[pos=2]')"));
  assertTrue(3 == getEvaluator().getNumberResult("evalterm2('2*a+6*b-3','[pos=1]','[pos=2]')"));
}
@Test
public void testEvalTermIn2VariablesWithVariables() {
  assertTrue(7 == getEvaluator().getNumberResult("evalterm2('[var=a]x+[var=b]y','2','1')"));
  assertTrue(5 == getEvaluator().getNumberResult("evalterm2('[var=a]x+[var=b]y','0','1')"));
}
@Test
public void testEvalTermIn2VariablesWithCharacterAsSecondAndThirdArgument() {
  assertTrue("'2*a'".equals(getEvaluator().getResultAsEvaluatorString("evalterm2('a+b','b', 'a')")));
}
@Test
public void testEvalTermIn2VariablesWithONECharacter() {
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("evalterm2(a, a, a)")));
}
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testEvalTermIn2VariablesWithEmptyStringArgument() {
  getEvaluator().getResultAsEvaluatorString(("evalterm2('', '', '')"));
}
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testEvalTermIn2VariablesWithEmptyArgument() {
  getEvaluator().getResultAsEvaluatorString(("evalterm2()"));
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testEvalTermIn2VariablesWithoutExerciseVariable() {
  getEvaluator().getResultAsEvaluatorString("evalterm2([var=j], '1', '2')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testEvalTermIn2VariablesWithoutInput() {
  getEvaluator().getResultAsEvaluatorString("evalterm2([pos=42], '1', '2')");
}
</syntaxhighlight>
===Hinweise===
===Hinweise===
* Die Funktion ''evalterm2'' gibt einen String zurück und keinen Integer oder Double.
* Die Funktion ''evalterm2'' gibt nicht nur eine [[Gleitkommazahl]] zurück sondern kann, falls der [[Ausdruck]] mehrere Variablen enthält ebenfalls einen Ausdruck zurück geben.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Ausdruckfunktionen]][[Kategorie:JACK2]]

Aktuelle Version vom 27. März 2024, 13:31 Uhr

Jack3: Die Funktion evalTermIn2Variables ist veraltet und wird in Jack3 nicht mehr unterstützt. Bitte nicht mehr verwenden!
Als Ersatz bietet sich an den Ausdruck über evaluateInSage zu evaluieren.

Bsp.:

evaluateInSage("var('x');var('y');x=[var=x];y=[var=y];eval([var=var7],{'x':x, 'y':y})")

Tipp zum Umschreiben: Regex Befehl für Sublime:

(\(evalterm2\()(?<par1>.*?)(,)(?<par2>.*?)(,)(?<par3>.*?)(\))(?<eq>.*?)(\))

wird ersetzt durch

(evaluateInSage("var('x');var('y');x=$+{par2};y=$+{par3};eval($+{par1},{'x':x, 'y':y})")$+{eq})

wenn die Form wie

(evalterm2([input=field1], 1, 2)==5.5)

ist.

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion evalterm2 wertet einen Ausdruck in zwei Variablen an einer Stelle aus. Der auszuwertende Ausdruck muss von a,b oder x,y abhängen. Die Funktion erwartet drei Eingaben, den Ausdruck und die Werte der beiden Variablen als Gleitkommazahl. Sie gibt den Wert des Ausdrucks an der Stelle zurück.

Syntax

evalterm2(Ausdruck term, Gleitkommazahl variable1, Gleitkommazahl variable2 )

Parameter

  • term - der Ausdruck mit zwei Variablen, der ausgewertet werden soll. Er sollte entweder von a,b oder von x,y abhängen.
  • variable1 - der Wert der ersten Variable a oder x
  • variable2 - der Wert der zweiten Variable b oder y

Return Value

  • Gibt das Ergebnis zurück.

Beispiele

evalterm2('x+y',1,2)    --> returns '3'

evalterm2('2*a+6*b-3',2,0)    --> returns '1'

Hinweise

  • Die Funktion evalterm2 gibt nicht nur eine Gleitkommazahl zurück sondern kann, falls der Ausdruck mehrere Variablen enthält ebenfalls einen Ausdruck zurück geben.