<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.uni-due.de/jack/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spobel</id>
	<title>JACK Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.uni-due.de/jack/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spobel"/>
	<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Spezial:Beitr%C3%A4ge/Spobel"/>
	<updated>2026-05-21T02:19:51Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsRealNumber&amp;diff=7361</id>
		<title>IsRealNumber</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsRealNumber&amp;diff=7361"/>
		<updated>2022-01-31T15:07:34Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Die Funktion &#039;&#039;isRealNumber&#039;&#039; prüft, ob es sich bei einem gegebenen [[Objekt]] um eine reelle Zahl handelt. Die Funktion gibt einen Boolean zurück. Alias: &amp;quot;isNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 isRealNumber(Objekt objekt)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; - das zu überprüfende Objekt&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt einen [[Boolean]] zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 isRealNumber(15.3)   --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 isRealNumber(&#039;zahl&#039;)   --&amp;gt; returns false&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
 isRealNumber([pos=1])&lt;br /&gt;
 &lt;br /&gt;
 isRealNumber([var=a])&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
Die Überprüfung mit Textfeldern funktioniert nur, wenn man den [[:Formeleditor]] verwendet. &lt;br /&gt;
&lt;br /&gt;
Gibt man keinen Editor an, wird für ein Textfeld (&amp;lt;code&amp;gt;[pos=1] usw.&amp;lt;/code&amp;gt;) ein OpenMath String zurückgegeben. Dadurch gibt &amp;lt;code&amp;gt;isRealNumber([pos=1])&amp;lt;/code&amp;gt; sowie &amp;lt;code&amp;gt; isRealNumber(&#039;[pos=1]&#039;)&amp;lt;/code&amp;gt; immer false zurück.&lt;br /&gt;
Um ein richtiges Ergebnis zu erlangen, muss [[Matches#Benutzung von Textfeldern|Matches]] genutzt werden.&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsNumber&amp;diff=7360</id>
		<title>IsNumber</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsNumber&amp;diff=7360"/>
		<updated>2022-01-31T15:06:56Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Weiterleitung nach IsRealNumber erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IsRealNumber]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7359</id>
		<title>GetParameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7359"/>
		<updated>2022-01-31T14:36:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Standardfälle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;getParameter&#039;&#039; arbeitet auf komplexen Objekten wie bspw. Summen oder Produktzeichen. &lt;br /&gt;
Die Rückgabe ist das Objekt an der jeweiligen Stelle im umgebenden komplexen Objekt.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
getParameter([[Ganzzahl]] position, [[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;position&#039;&#039;&#039; die Stelle des inneren Objekts&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; das komplexe Objekt aus dem ein Parameter gezogen werden soll&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine Objekt zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 getParameter(0, 1+2)   --&amp;gt; returns 1&lt;br /&gt;
&lt;br /&gt;
 getParameter(0, (1-2)+(3-4))    --&amp;gt; returns &#039;1-2&#039;&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, (1-2)+(3-4))    --&amp;gt; returns &#039;3-4&#039;&lt;br /&gt;
&lt;br /&gt;
 getParameter(0, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
 [input=field1] := sum(integerInterval(1, 100), lambda(n+1, n))&lt;br /&gt;
&lt;br /&gt;
 [var=intervalIndex] := 0&lt;br /&gt;
&lt;br /&gt;
 [var=functionIndex] := 1&lt;br /&gt;
&lt;br /&gt;
 getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
 getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7358</id>
		<title>GetParameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7358"/>
		<updated>2022-01-31T14:36:27Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Benutzung von Variablen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;getParameter&#039;&#039; arbeitet auf komplexen Objekten wie bspw. Summen oder Produktzeichen. &lt;br /&gt;
Die Rückgabe ist das Objekt an der jeweiligen Stelle im umgebenden komplexen Objekt.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
getParameter([[Ganzzahl]] position, [[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;position&#039;&#039;&#039; die Stelle des inneren Objekts&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; das komplexe Objekt aus dem ein Parameter gezogen werden soll&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine Objekt zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 getParameter(0, 1+2)   --&amp;gt; returns 1&lt;br /&gt;
 &lt;br /&gt;
 getParameter(0, (1-2)+(3-4))    --&amp;gt; returns &#039;1-2&#039;&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, (1-2)+(3-4))    --&amp;gt; returns &#039;3-4&#039;&lt;br /&gt;
 &lt;br /&gt;
 getParameter(0, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
 [input=field1] := sum(integerInterval(1, 100), lambda(n+1, n))&lt;br /&gt;
&lt;br /&gt;
 [var=intervalIndex] := 0&lt;br /&gt;
&lt;br /&gt;
 [var=functionIndex] := 1&lt;br /&gt;
&lt;br /&gt;
 getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
 getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7357</id>
		<title>GetParameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7357"/>
		<updated>2022-01-31T14:36:14Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Standardfälle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;getParameter&#039;&#039; arbeitet auf komplexen Objekten wie bspw. Summen oder Produktzeichen. &lt;br /&gt;
Die Rückgabe ist das Objekt an der jeweiligen Stelle im umgebenden komplexen Objekt.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
getParameter([[Ganzzahl]] position, [[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;position&#039;&#039;&#039; die Stelle des inneren Objekts&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; das komplexe Objekt aus dem ein Parameter gezogen werden soll&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine Objekt zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 getParameter(0, 1+2)   --&amp;gt; returns 1&lt;br /&gt;
 &lt;br /&gt;
 getParameter(0, (1-2)+(3-4))    --&amp;gt; returns &#039;1-2&#039;&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, (1-2)+(3-4))    --&amp;gt; returns &#039;3-4&#039;&lt;br /&gt;
 &lt;br /&gt;
 getParameter(0, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
[input=field1] := sum(integerInterval(1, 100), lambda(n+1, n))&lt;br /&gt;
&lt;br /&gt;
[var=intervalIndex] := 0&lt;br /&gt;
&lt;br /&gt;
[var=functionIndex] := 1&lt;br /&gt;
&lt;br /&gt;
getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Product&amp;diff=7356</id>
		<title>Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Product&amp;diff=7356"/>
		<updated>2022-01-31T14:27:33Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;product&#039;&#039; erzeugt das math. Produktzeichen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 product([[IntegerInterval]] interval, [[LambdaFunktion]] lambda)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039; - das [[IntegerInterval]], welches die Laufvariable der Summe bestimmt&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - eine Lambda Funktion, welche die Luafvariable als Bindungsvariable und den Ausdruck enthält&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt das Produktzeichen zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 product(integerInterval(0,10), lambda(x+1, x)) --&amp;gt; returns &amp;lt;math&amp;gt;\prod_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 product(integerInterval(-10,0), lambda(n+1+a, n)) --&amp;gt; returns &amp;lt;math&amp;gt;\prod_{n=-10}^{0} {n+1+a}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Vollständiges Testen einer Produkt-Eingabe===&lt;br /&gt;
&lt;br /&gt;
 [input=produkt] := &amp;lt;math&amp;gt;\prod_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 getParameter(0, [input=produkt]) --&amp;gt; integerInterval(0, 10)&lt;br /&gt;
 isIntegerInterval( getParameter(0, [input=produkt]) ) --&amp;gt; TRUE&lt;br /&gt;
 getParameter(0,  getParameter(0, [input=produkt])) --&amp;gt; 0 //startIndex&lt;br /&gt;
 getParameter(1,  getParameter(0, [input=produkt])) --&amp;gt; 10  //endIndex&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, [input=produkt]) --&amp;gt; lambda(x+1, x)&lt;br /&gt;
 isLambdaFunction(getParameter(1, [input=produkt])) --&amp;gt; TRUE&lt;br /&gt;
 lambdaHasBindingVars(getParameter(1, [input=produkt]), x) --&amp;gt; TRUE&lt;br /&gt;
 lambdaExprEqualsExpr(getParameter(1, [input=produkt]), x+1) --&amp;gt; TRUE&lt;br /&gt;
&lt;br /&gt;
 approx([input=produkt]) --&amp;gt; 39916800&lt;br /&gt;
 [input=produkt]==39916800 --&amp;gt; TRUE&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsProduct&amp;diff=7355</id>
		<title>IsProduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsProduct&amp;diff=7355"/>
		<updated>2022-01-31T14:24:30Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;isProduct&#039;&#039; gibt nur dann wahr(true) zurück, wenn der angegebene Parameter eine [[Product|Produkt]] ist.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isProduct([[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; - das [[Objekt]], welches auf [[Product]] überprüft werden soll&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 isProduct(product(integerInterval(0,10), lambda(x+1,x))) --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 isProduct(list(2,3))   --&amp;gt; returns false&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Sum&amp;diff=7354</id>
		<title>Sum</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Sum&amp;diff=7354"/>
		<updated>2022-01-28T10:51:47Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;sum&#039;&#039; erzeugt das math. Summenzeichen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 sum([[IntegerInterval]] interval, [[LambdaFunktion]] lambda)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039; - das [[IntegerInterval]], welches die Laufvariable der Summe bestimmt&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - eine Lambda Funktion, welche die Luafvariable als Bindungsvariable und den Ausdruck enthält&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt das Summenzeichen zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 sum(integerInterval(0,10), lambda(x+1, x)) --&amp;gt; returns &amp;lt;math&amp;gt;\sum_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 sum(integerInterval(-10,0), lambda(n+1+a, n)) --&amp;gt; returns &amp;lt;math&amp;gt;\sum_{n=-10}^{0} {n+1+a}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Vollständiges Testen einer Summen-Eingabe===&lt;br /&gt;
&lt;br /&gt;
 [input=summe] := &amp;lt;math&amp;gt;\sum_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 getParameter(0, [input=summe]) --&amp;gt; integerInterval(0, 10)&lt;br /&gt;
 isIntegerInterval( getParameter(0, [input=summe]) ) --&amp;gt; TRUE&lt;br /&gt;
 getParameter(0,  getParameter(0, [input=summe])) --&amp;gt; 0 //startIndex&lt;br /&gt;
 getParameter(1,  getParameter(0, [input=summe])) --&amp;gt; 10  //endIndex&lt;br /&gt;
&lt;br /&gt;
 getParameter(1, [input=summe]) --&amp;gt; lambda(x+1, x)&lt;br /&gt;
 isLambdaFunction(getParameter(1, [input=summe])) --&amp;gt; TRUE&lt;br /&gt;
 lambdaHasBindingVars(getParameter(1, [input=summe]), x) --&amp;gt; TRUE&lt;br /&gt;
 lambdaExprEqualsExpr(getParameter(1, [input=summe]), x+1) --&amp;gt; TRUE&lt;br /&gt;
&lt;br /&gt;
 approx([input=summe]) --&amp;gt; 66&lt;br /&gt;
 [input=summe]==66 --&amp;gt; TRUE&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=LambdaHasBindingVariables&amp;diff=7353</id>
		<title>LambdaHasBindingVariables</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=LambdaHasBindingVariables&amp;diff=7353"/>
		<updated>2022-01-28T10:42:17Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;lambdaHasBindingVariables&#039;&#039; oder auch &#039;&#039;lambdaHasBindingVars&#039;&#039; prüft eine [[LambdaFunktion]] auf enthaltene Bindungs-Variablen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 lambdaHasBindingVariables([[LambdaFunktion]] lambda, [[Zeichen]] variablen...)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - die LambdaFunktion, welche die variablen enthalten soll.&lt;br /&gt;
* &#039;&#039;&#039;variablen&#039;&#039;&#039; - menge von Variablen die in lambda enthalten sein sollen.&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1, n), n)   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1, n), list(n))   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1+a, n, a), n, a)   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1+a, n, a), list(n, a))   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1, n, a), n, a)   --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=LambdaHasBindingVariables&amp;diff=7352</id>
		<title>LambdaHasBindingVariables</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=LambdaHasBindingVariables&amp;diff=7352"/>
		<updated>2022-01-28T10:40:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;lambdaHasBindingVariables&#039;&#039; oder auch &#039;&#039;lambdaHasBindingVars&#039;&#039; prüft eine [[LambdaFunktion]] auf enthaltene Bindungs-Variablen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 lambdaHasBindingVariables([[LambdaFunktion]] lambda, [[Zeichen]] variablen...)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - die LambdaFunktion, welche die variablen enthalten soll.&lt;br /&gt;
* &#039;&#039;&#039;variablen&#039;&#039;&#039; - menge von Variablen die in lambda enthalten sein sollen.&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1, n), n)   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1+a, n, a), n, a)   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaHasBindingVars(lambda(n+1, n, a), n, a)   --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=LambdaExpressionEqualsExpression&amp;diff=7351</id>
		<title>LambdaExpressionEqualsExpression</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=LambdaExpressionEqualsExpression&amp;diff=7351"/>
		<updated>2022-01-28T10:22:54Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039; ===Beschreibung=== Die Funktion &amp;#039;&amp;#039;lambdaExpressionEqualsExpression&amp;#039;&amp;#039; oder auch &amp;#039;&amp;#039;lambdaExprEqualsExpr&amp;#039;&amp;#039; vergle…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;lambdaExpressionEqualsExpression&#039;&#039; oder auch &#039;&#039;lambdaExprEqualsExpr&#039;&#039; vergleicht das Argument einer [[LambdaFunktion] mit einem mathematischen Ausdruck.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 lambdaExprEqualsExpr([[LambdaFunktion]] lambda, [[Ausdruck]] term)&lt;br /&gt;
 lambdaExpressionEqualsExpression([[LambdaFunktion]] lambda, [[Ausdruck]] term)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - die LambdaFunktion, die das zu vergleichende Argument enthält &lt;br /&gt;
* &#039;&#039;&#039;term&#039;&#039;&#039; - der Ausdruck, der mit dem Argument der LambdaFunktion verglichen werden soll&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt einen Boolean zurück, &#039;&#039;true&#039;&#039; falls die beiden Ausdrücke übereinstimmen und &#039;&#039;false&#039;&#039; falls sie nicht übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
&lt;br /&gt;
Die Funktion arbeitet ähnlich zur Funktion [[EqualsExpr]].&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
&lt;br /&gt;
 lambdaExprEqualsExpr(lambda(x+1, x), x+1)    --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaExprEqualsExpr(lambda(x+1, x, a, b), x+1)    --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 lambdaExprEqualsExpr(lambda(x*2, x, a, b), 2*x)    --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsLambdaFunction&amp;diff=7350</id>
		<title>IsLambdaFunction</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsLambdaFunction&amp;diff=7350"/>
		<updated>2022-01-28T10:14:58Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;isLambdaFunction&#039;&#039; gibt nur dann wahr(true) zurück, wenn der angegebene Parameter ein [[LambdaFunktion]] ist.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isLambdaFunction([[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; - das [[Objekt]], welches auf [[LambdaFunktion]] überprüft werden soll&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 isLambdaFunction(lambda(x+1, x))   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 isLambdaFunction(x+1)   --&amp;gt; returns false&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IntegerInterval&amp;diff=7349</id>
		<title>IntegerInterval</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IntegerInterval&amp;diff=7349"/>
		<updated>2022-01-28T10:12:06Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Funktion des Evaluators in JACK3.}}&lt;br /&gt;
&lt;br /&gt;
== Zugehörige Evaluatoren ==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Die Funktion &#039;&#039;integerInterval&#039;&#039; beschreibt das Intervall von zwei integer Zahlen. Es wird nicht auf Richtigkeit überprüft.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 integerInterval([[Ganzzahl]] zahl1, [[Ganzzahl]] zahl2)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;zahl1&#039;&#039;&#039; - untere Grenze des Intervalls&lt;br /&gt;
* &#039;&#039;&#039;zahl2&#039;&#039;&#039; - obere Grenze des Intervalls&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt das Intervall zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
 integerInterval(2, 5)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Die erste Zahl sollte kleiner als die zweite Zahl sein.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IntegerInterval&amp;diff=7348</id>
		<title>IntegerInterval</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IntegerInterval&amp;diff=7348"/>
		<updated>2022-01-28T10:12:00Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Funktion des Evaluators in JACK3.}}&lt;br /&gt;
&lt;br /&gt;
== Zugehörige Evaluatoren ==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Die Funktion &#039;&#039;integerInterval&#039;&#039; beschreibt das Intervall von zwei integer Zahlen. Es wird nicht auf Richtigkeit überprüft.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 integerInterval([[Ganzzahl]] zahl1, [[Ganzzahl]] zahl2)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;zahl1&#039;&#039;&#039; - untere Grenze des Intervalls&lt;br /&gt;
* &#039;&#039;&#039;zahl2&#039;&#039;&#039; - obere Grenze des Intervalls&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt das Intervall zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
 integerInterval(2,c5)&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Die erste Zahl sollte kleiner als die zweite Zahl sein.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsIntegerInterval&amp;diff=7347</id>
		<title>IsIntegerInterval</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsIntegerInterval&amp;diff=7347"/>
		<updated>2022-01-28T10:11:46Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;isIntegerInterval&#039;&#039; gibt nur dann wahr(true) zurück, wenn der angegebene Parameter ein [[IntegerInterval]] ist.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isIntegerInterval([[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; - das [[Objekt]], welches auf [[IntegerInterval]] überprüft werden soll&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 isIntegerInterval(integerInterval(0, 10))   --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 isIntegerInterval(integerInterval(1, 2.012))   --&amp;gt; returns false&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=LambdaFunktion&amp;diff=7346</id>
		<title>LambdaFunktion</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=LambdaFunktion&amp;diff=7346"/>
		<updated>2022-01-28T10:09:40Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;lambda&#039;&#039; erzeugt eine Lambda Funktion mit Bindungsvariablen.&lt;br /&gt;
&lt;br /&gt;
Diese Funktion wird bspw. für das Summen- ([[Sum]]) oder Produktzeichen ([[Product]]) benötigt, um die Laufvariable des Arguments zu binden.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 lambda([[Ausdruck]] argument, [[Zeichen]] bindungsvariablen...)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;argument&#039;&#039;&#039; - der Term, welcher Variablen enthält, die gebunden werden sollen&lt;br /&gt;
* &#039;&#039;&#039;bindungsvariablen...&#039;&#039;&#039; - menge von Variablen, die gebunden werden sollen&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt die LambdaFunktion zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 lambda(x+1, x) --&amp;gt; returns &amp;lt;math&amp;gt;\lambda{x}.{x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 lambda(a^2+2*a*b+b^2, a, b) --&amp;gt; returns &amp;lt;math&amp;gt;\lambda{a},\lambda{b}.{{a}^{2} + {2} \cdot {a} \cdot {b}+{b}^{2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Product&amp;diff=7345</id>
		<title>Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Product&amp;diff=7345"/>
		<updated>2022-01-28T09:58:47Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;product&#039;&#039; erzeugt das math. Produktzeichen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 product([[IntegerInterval]] interval, [[LambdaFunktion]] lambda)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039; - das [[IntegerInterval]], welches die Laufvariable der Summe bestimmt&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - eine Lambda Funktion, welche die Luafvariable als Bindungsvariable und den Ausdruck enthält&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt das Produktzeichen zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 product(integerInterval(0,10), lambda(x+1, x)) --&amp;gt; returns &amp;lt;math&amp;gt;\prod_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 product(integerInterval(-10,0), lambda(n+1+a, n)) --&amp;gt; returns &amp;lt;math&amp;gt;\prod_{n=-10}^{0} {n+1+a}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Sum&amp;diff=7344</id>
		<title>Sum</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Sum&amp;diff=7344"/>
		<updated>2022-01-28T09:57:28Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;sum&#039;&#039; erzeugt das math. Summenzeichen.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 sum([[IntegerInterval]] interval, [[LambdaFunktion]] lambda)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039; - das [[IntegerInterval]], welches die Laufvariable der Summe bestimmt&lt;br /&gt;
* &#039;&#039;&#039;lambda&#039;&#039;&#039; - eine Lambda Funktion, welche die Luafvariable als Bindungsvariable und den Ausdruck enthält&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt das Summenzeichen zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 sum(integerInterval(0,10), lambda(x+1, x)) --&amp;gt; returns &amp;lt;math&amp;gt;\sum_{x=0}^{10} {x+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 sum(integerInterval(-10,0), lambda(n+1+a, n)) --&amp;gt; returns &amp;lt;math&amp;gt;\sum_{n=-10}^{0} {n+1+a}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsSum&amp;diff=7343</id>
		<title>IsSum</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsSum&amp;diff=7343"/>
		<updated>2022-01-28T09:50:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  ===Beschreibun…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;isSum&#039;&#039; gibt nur dann wahr(true) zurück, wenn der angegebene Parameter eine [[Sum]] ist.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isSum([[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; - das [[Objekt]], welches auf [[Sum]] überprüft werden soll&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 isSum(sum(integerInterval(0,10), lambda(x+1,x))) --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
 isSum(list(2,3))   --&amp;gt; returns false&lt;br /&gt;
 &lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7342</id>
		<title>GetParameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetParameter&amp;diff=7342"/>
		<updated>2022-01-28T08:43:36Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Die Seite wurde neu angelegt: „{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}  ==Zugehörige Evaluatoren== *&amp;#039;&amp;#039;&amp;#039;MathEvaluator&amp;#039;&amp;#039;&amp;#039;  === Beschreibu…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Evaluator-Funktion des JACK3-Systems.}}&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;getParameter&#039;&#039; arbeitet auf komplexen Objekten wie bspw. Summen oder Produktzeichen. &lt;br /&gt;
Die Rückgabe ist das Objekt an der jeweiligen Stelle im umgebenden komplexen Objekt.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
getParameter([[Ganzzahl]] position, [[Objekt]] objekt)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;position&#039;&#039;&#039; die Stelle des inneren Objekts&lt;br /&gt;
* &#039;&#039;&#039;objekt&#039;&#039;&#039; das komplexe Objekt aus dem ein Parameter gezogen werden soll&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine Objekt zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
getParameter(0, 1+2)   --&amp;gt; returns 1&lt;br /&gt;
 &lt;br /&gt;
getParameter(0, (1-2)+(3-4))    --&amp;gt; returns &#039;1-2&#039;&lt;br /&gt;
&lt;br /&gt;
getParameter(1, (1-2)+(3-4))    --&amp;gt; returns &#039;3-4&#039;&lt;br /&gt;
 &lt;br /&gt;
getParameter(0, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
getParameter(1, sum(integerInterval(1, 100), lambda(n+1, n)))    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
[input=field1] := sum(integerInterval(1, 100), lambda(n+1, n))&lt;br /&gt;
&lt;br /&gt;
[var=intervalIndex] := 0&lt;br /&gt;
&lt;br /&gt;
[var=functionIndex] := 1&lt;br /&gt;
&lt;br /&gt;
getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns integerInterval(1, 100)&lt;br /&gt;
&lt;br /&gt;
getParameter([var=intervalIndex], [input=field1])    --&amp;gt; returns lambda(n+1, n)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]][[Category:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6560</id>
		<title>Equal</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6560"/>
		<updated>2021-01-27T07:53:40Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktionen &#039;&#039;equal&#039;&#039; vergleicht zwei &#039;einfache&#039; math. Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion &#039;&#039;true&#039;&#039; zurück, ansonsten &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
  a == b&lt;br /&gt;
  equal(a,b)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
* &#039;&#039;&#039;b&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt einen Boolean zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 2+3 == 5    --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 equal(4+3,7)    --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
* Die Funktion &#039;&#039;equal&#039;&#039; kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. 2+3.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6559</id>
		<title>Equal</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6559"/>
		<updated>2021-01-27T07:53:21Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktionen &#039;&#039;equal&#039;&#039; vergleicht zwei math. Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion &#039;&#039;true&#039;&#039; zurück, ansonsten &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
  a == b&lt;br /&gt;
  equal(a,b)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
* &#039;&#039;&#039;b&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt einen Boolean zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 2+3 == 5    --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 equal(4+3,7)    --&amp;gt; returns true&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
* Die Funktion &#039;&#039;equal&#039;&#039; kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. 2+3.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6558</id>
		<title>Equal</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Equal&amp;diff=6558"/>
		<updated>2021-01-27T07:53:09Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Die Funktionen &#039;&#039;equal&#039;&#039; vergleicht zwei math. Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion &#039;&#039;true&#039;&#039; zurück, ansonsten &#039;&#039;false&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
  a == b&lt;br /&gt;
  equal(a,b)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
* &#039;&#039;&#039;b&#039;&#039;&#039; - [[Zeichenkette]] oder [[Gleitkommazahl]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt einen Boolean zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 2+3 == 5    --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 equal(4+3,7)    --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 &#039;world of math&#039; == &#039;world of math&#039;    --&amp;gt; returns true&lt;br /&gt;
 &lt;br /&gt;
 equal(&#039;JACK&#039;,&#039;jack&#039;)    --&amp;gt; returns false&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
* Die Funktion &#039;&#039;equal&#039;&#039; kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. 2+3.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=SortLexicographicalList&amp;diff=6412</id>
		<title>SortLexicographicalList</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=SortLexicographicalList&amp;diff=6412"/>
		<updated>2020-12-16T19:01:54Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Funktion des Evaluators in JACK3. JACK3 ist derzeit noch in Entwicklung und noch nicht für die Benutzung freigegeben.}}&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
Die Funktion sortiert eine Liste. Die liste darf dabei nur Terminale (String, Double oder Integer) beinhalten.&lt;br /&gt;
&lt;br /&gt;
Es wird eine sortierte Liste zurückgegeben. Der Typ der Listelemente wird nicht geändert.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
* &amp;lt;code&amp;gt;sortLexicographicalList(list(1, 1.0, 0, &#039;world&#039;, &#039;hello&#039;, &#039;!&#039;)) -&amp;gt; list(&#039;!&#039;, 0, 1, 1.0, &#039;hello&#039;, &#039;world&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sortLexicographicalList(list(&#039;abc&#039;,2,7,&#039;test&#039;)) -&amp;gt; list(2,7,&#039;abc&#039;,&#039;test&#039;)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=SortLexicographical&amp;diff=6411</id>
		<title>SortLexicographical</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=SortLexicographical&amp;diff=6411"/>
		<updated>2020-12-16T19:01:33Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Spobel verschob die Seite SortLexicographical nach SortLexicographicalList&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[SortLexicographicalList]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=SortLexicographicalList&amp;diff=6410</id>
		<title>SortLexicographicalList</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=SortLexicographicalList&amp;diff=6410"/>
		<updated>2020-12-16T19:01:33Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Spobel verschob die Seite SortLexicographical nach SortLexicographicalList&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=Diese Seite beinhaltet eine Funktion des Evaluators in JACK3. JACK3 ist derzeit noch in Entwicklung und noch nicht für die Benutzung freigegeben.}}&lt;br /&gt;
&lt;br /&gt;
==Allgemein==&lt;br /&gt;
Die Funktion sortiert eine Liste. Die liste darf dabei nur Terminale (String, Double oder Integer) beinhalten.&lt;br /&gt;
&lt;br /&gt;
Es wird eine sortierte Liste zurückgegeben. Der Typ der Listelemente wird nicht geändert.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
* &amp;lt;code&amp;gt;sortLexicographical(list(1, 1.0, 0, &#039;world&#039;, &#039;hello&#039;, &#039;!&#039;)) -&amp;gt; list(&#039;!&#039;, 0, 1, 1.0, &#039;hello&#039;, &#039;world&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sortLexicographical(list(&#039;abc&#039;,2,7,&#039;test&#039;)) -&amp;gt; list(2,7,&#039;abc&#039;,&#039;test&#039;)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=ToRadian&amp;diff=6409</id>
		<title>ToRadian</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=ToRadian&amp;diff=6409"/>
		<updated>2020-12-16T16:18:03Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Standardfälle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;toRadian&#039;&#039; wandelt Grad-Werte in Radiant um. Die Funktion erwartet einen Grad-Wert und gibt den entsprechenden Radiant zurück.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 toRadian([[Gleitkommazahl]] grad)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;grad&#039;&#039;&#039; - der umzuwandelnde Grad-Wert&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
*Gibt den Grad-Wert als Radiant zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 toRadian(180)   --&amp;gt; returns pi&lt;br /&gt;
 &lt;br /&gt;
 toRadian(360)   --&amp;gt; returns 2 * pi&lt;br /&gt;
&lt;br /&gt;
==== Benutzung mit Variablen ====&lt;br /&gt;
 toRadian([pos=1])&lt;br /&gt;
 &lt;br /&gt;
 toRadian([var=a])&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5919</id>
		<title>Evaluator-Änderungen von JACK2 nach JACK3</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5919"/>
		<updated>2020-08-11T08:42:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=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.}}&lt;br /&gt;
==Allgemein==&lt;br /&gt;
In JACK3 wird nun eine neue Evaluatorversion genutzt. Im folgenden werden die Änderungen/Unterschiede zur alten Version aufgezählt.&lt;br /&gt;
&lt;br /&gt;
==Zeichenketten/Strings==&lt;br /&gt;
Zeichenketten/Strings können in der Syntax mit einfachen oder doppelten Anführungszeichen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Benutzung der jeweils anderen ist dann ohne Escaping &amp;lt;code&amp;gt;\&amp;quot; \&#039;&amp;lt;/code&amp;gt; möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung! Das Escaping wird nicht vom Evaluator aufgelöst! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein &#039;Beispiel&#039;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein anderes &amp;quot;Beispiel&amp;quot;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein drittes \&amp;quot;Beispiel\&amp;quot;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein letztes \&#039;Beispiel\&#039;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert.&lt;br /&gt;
&lt;br /&gt;
Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt;&amp;quot;Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen.&amp;quot;&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;lt;code&amp;gt;concat()&amp;lt;/code&amp;gt; können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt; concat(&amp;quot;Die Ersetzung von Variablen &amp;quot;, [var=text1], &amp;quot; kann so vorgenommen werden.&amp;quot;) &amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; durch ihren Wert ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nutzt man in &amp;lt;code&amp;gt;equalsExpr()&amp;lt;/code&amp;gt; Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
Bsp:&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(&#039;x^2+3&#039;, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als Text, nicht als mathematischer Ausdruck erkannt.&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(x^2+3, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
==Neue Funktionalität==&lt;br /&gt;
Es gibt nun eine Möglichkeit Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel hierfür ist die Definition von Variablen für den Aufgabentext.&lt;br /&gt;
Hat man bisher &amp;lt;code&amp;gt;x+2*x&amp;lt;/code&amp;gt; als Variable angelegt, wurde der Ausdruck zu &amp;lt;code&amp;gt;3*x&amp;lt;/code&amp;gt; zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Fügt man nun &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; ein, wird der Ausdruck nicht mehr ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x+3*x&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[x+3*x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$x+3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(0,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(1,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Variablen können allerdings trotzdem zur Bewertung der Aufgabe verwendet werden.&lt;br /&gt;
Sobald ein &amp;quot;gestoppter&amp;quot;-Ausdruck (von &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen) in einer Funktion verwendet wird, wird diese ausgerechnet.&lt;br /&gt;
D.h. viel mehr, dass ein &amp;quot;gestoppter&amp;quot;-Ausdruck nur solange &amp;quot;gestoppt&amp;quot; ist, wie keine Funktion den Wert dieses &amp;quot;gestoppten&amp;quot;-Ausdrucks verwendet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3+[x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3$&amp;lt;/code&amp;gt;. Da &amp;lt;code&amp;gt; [x+x]&amp;lt;/code&amp;gt; Teil der Summe ist, wird er ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x$&amp;lt;/code&amp;gt;. Hier ist der Ausdruck selbst eine Summe. Da er hier aber kein Parameter einer weiteren Funktion ist, wird er nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[var=varA]+3&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 6$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; wieder Teil einer Summe und wird daher ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[[var=varA]+3]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x+3$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; zwar auch Teil einer Summe, da diese aber auch mit &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen ist, wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList([1+1], list(1,2,3))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; Teil einer Funktion, die den genauen Wert benötigt. Daher wird &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; berechnet.&lt;br /&gt;
&lt;br /&gt;
==Nicht mehr unterstützte Funktionen==&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromSet&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromOrderedSet&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsSemiSem&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;eval&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evalCplx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evalEq&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evalPolynomial&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evalPolynomialCplx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evalTermIn2Variables&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;evaluateInSymja&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;expand&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromOrderedList&amp;lt;/code&amp;gt; wird durch &amp;lt;code&amp;gt;sortXList&amp;lt;/code&amp;gt;, wobei &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; der Typ der Listenelemente ist (s. Neue Funktionen), und &amp;lt;code&amp;gt;getFromList&amp;lt;/code&amp;gt; ersetzt. Mit &amp;lt;code&amp;gt;sortXList&amp;lt;/code&amp;gt; wird die Liste sortiert und mit &amp;lt;code&amp;gt;getFromList&amp;lt;/code&amp;gt; kann ein Element aus dieser Liste ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
== Geänderte Funktionen ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ifthenelse&amp;lt;/code&amp;gt;&lt;br /&gt;
** 0 wird zu &#039;&#039;falsch&#039;&#039; ausgewertet, 1 wird zu &#039;&#039;richtig&#039;&#039; ausgewertet.&lt;br /&gt;
** Alle anderen Ergebnisse führen zu einem Fehler.&lt;br /&gt;
&lt;br /&gt;
== evaluateInSage und evaluateInR==&lt;br /&gt;
&lt;br /&gt;
Die beiden Funktionen &amp;lt;code&amp;gt;evaluateInSage&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;evaluateInR&amp;lt;/code&amp;gt; werten die Eingabe direkt in einem CAS aus.&lt;br /&gt;
 &lt;br /&gt;
Der Inhalt der Funktionen ist &#039;&#039;&#039;immer&#039;&#039;&#039; ein String/Zeichenkette. Auch darf die Eingabe nicht verschachtelte Funktionen beinhalten. Sie wird &#039;&#039;&#039;nicht&#039;&#039;&#039; geparsed und &#039;&#039;&#039;nicht&#039;&#039;&#039; evaluiert.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Variable in den Funktionen genutzt werden soll, kann diese, wie zuvor, innerhalb des CAS-Strings angegeben werden.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;evaluateInSage(&amp;quot;bool(1+[var=value2]==3)&amp;quot;)&amp;lt;/code&amp;gt; ist möglich&lt;br /&gt;
* &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;evaluateInSage(concat(&amp;quot;bool(1+&amp;quot;, [var=value2], &amp;quot;==3)&amp;quot;)&amp;lt;/code&amp;gt;&amp;lt;/s&amp;gt; ist &#039;&#039;&#039;nicht&#039;&#039;&#039; möglich&lt;br /&gt;
&lt;br /&gt;
==Neue Funktionen==&lt;br /&gt;
Die folgenden Funktionen erwarten als Argument eine Liste und geben eine Liste zurück.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sortDoubleList&amp;lt;/code&amp;gt; &lt;br /&gt;
** sortiert eine Liste, die nur Doubles/Floats oder Integers beinhaltet&lt;br /&gt;
** Ausgabe ist eine sortierte Liste mit Doubles/Floats&lt;br /&gt;
* &amp;lt;code&amp;gt;sortIntegerList&amp;lt;/code&amp;gt;&lt;br /&gt;
** sortiert eine Liste, die nur Integers beinhaltet&lt;br /&gt;
** Ausgabe ist eine sortierte Liste mit Integers&lt;br /&gt;
* &amp;lt;code&amp;gt;sortLexicographical&amp;lt;/code&amp;gt;&lt;br /&gt;
** sortiert eine Liste, die nur Terminale beinhaltet (String/Double/Integer)&lt;br /&gt;
** Ausgabe ist eine sortierte Liste mit &#039;&#039;&#039;Strings&#039;&#039;&#039; &lt;br /&gt;
* &amp;lt;code&amp;gt;sortNumberList&amp;lt;/code&amp;gt;&lt;br /&gt;
** sortiert eine Liste, die nur Terminale beinhaltet (Double/Integer)&lt;br /&gt;
** Ausgabe ist eine sortierte Liste mit &#039;&#039;&#039;Doubles/Floats&#039;&#039;&#039; &lt;br /&gt;
* &amp;lt;code&amp;gt;sortStringList&amp;lt;/code&amp;gt;&lt;br /&gt;
** sortiert eine Liste, die nur Strings beinhaltet&lt;br /&gt;
** Ausgabe ist eine sortierte Liste mit &#039;&#039;&#039;Strings&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;convertToDoubleList&amp;lt;/code&amp;gt;&lt;br /&gt;
**Elemente der Liste werden zu Double umgewandelt&lt;br /&gt;
* &amp;lt;code&amp;gt;convertToIntegerList&amp;lt;/code&amp;gt;&lt;br /&gt;
** Elemente der Liste werden zu Integer umgewandelt&lt;br /&gt;
* &amp;lt;code&amp;gt;convertToStringList&amp;lt;/code&amp;gt;&lt;br /&gt;
** Elemente der Liste werden zu Strings umgewandelt&lt;br /&gt;
* &amp;lt;code&amp;gt;removeDuplicates&amp;lt;/code&amp;gt;&lt;br /&gt;
** Alle Duplikate werden aus der Liste gelöscht&lt;br /&gt;
* &amp;lt;code&amp;gt;shuffleList&amp;lt;/code&amp;gt;&lt;br /&gt;
** Die Elemente der Liste werden geshuffelt&lt;br /&gt;
&lt;br /&gt;
==Runden von Ergebnissen==&lt;br /&gt;
&lt;br /&gt;
Ergebnisse werden nicht mehr vom Evaluator gerundet. Stattdessen werden die Ergebnisse genau angegeben. Bsp.: &amp;lt;code&amp;gt;exp(2)&amp;lt;/code&amp;gt; wird zu &amp;lt;code&amp;gt;e^2&amp;lt;/code&amp;gt; evaluiert.&lt;br /&gt;
&lt;br /&gt;
Soll das Ergebnis als Zahl angegeben werden, muss eine Funktion zum Runden genutzt werden. Bsp.: &amp;lt;code&amp;gt; round(), ceil(), floor(),...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kleine Änderungen==&lt;br /&gt;
* &amp;lt;code&amp;gt;constE&amp;lt;/code&amp;gt;&lt;br /&gt;
** sowohl als &amp;lt;code&amp;gt;constE()&amp;lt;/code&amp;gt; als auch als &amp;lt;code&amp;gt;conste()&amp;lt;/code&amp;gt; benutzbar&lt;br /&gt;
* &amp;lt;code&amp;gt;constPI&amp;lt;/code&amp;gt;&lt;br /&gt;
** sowohl als &amp;lt;code&amp;gt;constPi()&amp;lt;/code&amp;gt; als auch als &amp;lt;code&amp;gt;constpi()&amp;lt;/code&amp;gt; benutzbar&lt;br /&gt;
* &amp;lt;code&amp;gt;IEEERemainder&amp;lt;/code&amp;gt;&lt;br /&gt;
** als &amp;lt;code&amp;gt;iEEERemainder(...)&amp;lt;/code&amp;gt; benutzbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:JACK3]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5849</id>
		<title>Evaluator-Änderungen von JACK2 nach JACK3</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5849"/>
		<updated>2020-05-14T14:28:53Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=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.}}&lt;br /&gt;
==Allgemein==&lt;br /&gt;
In JACK3 wird nun eine neue Evaluatorversion genutzt. Im folgenden werden die Änderungen/Unterschiede zur alten Version aufgezählt.&lt;br /&gt;
&lt;br /&gt;
==Zeichenketten/Strings==&lt;br /&gt;
Zeichenketten/Strings können in der Syntax mit einfachen oder doppelten Anführungszeichen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Benutzung der jeweils anderen ist dann ohne Escaping &amp;lt;code&amp;gt;\&amp;quot; \&#039;&amp;lt;/code&amp;gt; möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung! Das Escaping wird nicht vom Evaluator aufgelöst! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein &#039;Beispiel&#039;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein anderes &amp;quot;Beispiel&amp;quot;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein drittes \&amp;quot;Beispiel\&amp;quot;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein letztes \&#039;Beispiel\&#039;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert.&lt;br /&gt;
&lt;br /&gt;
Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt;&amp;quot;Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen.&amp;quot;&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;lt;code&amp;gt;concat()&amp;lt;/code&amp;gt; können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt; concat(&amp;quot;Die Ersetzung von Variablen &amp;quot;, [var=text1], &amp;quot; kann so vorgenommen werden.&amp;quot;) &amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; durch ihren Wert ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nutzt man in &amp;lt;code&amp;gt;equalsExpr()&amp;lt;/code&amp;gt; Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
Bsp:&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(&#039;x^2+3&#039;, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als Text, nicht als mathematischer Ausdruck erkannt.&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(x^2+3, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
==Neue Funktionalität==&lt;br /&gt;
Es gibt nun eine Möglichkeit Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel hierfür ist die Definition von Variablen für den Aufgabentext.&lt;br /&gt;
Hat man bisher &amp;lt;code&amp;gt;x+2*x&amp;lt;/code&amp;gt; als Variable angelegt, wurde der Ausdruck zu &amp;lt;code&amp;gt;3*x&amp;lt;/code&amp;gt; zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Fügt man nun &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; ein, wird der Ausdruck nicht mehr ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x+3*x&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[x+3*x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$x+3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(0,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(1,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Variablen können allerdings trotzdem zur Bewertung der Aufgabe verwendet werden.&lt;br /&gt;
Sobald ein &amp;quot;gestoppter&amp;quot;-Ausdruck (von &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen) in einer Funktion verwendet wird, wird diese ausgerechnet.&lt;br /&gt;
D.h. viel mehr, dass ein &amp;quot;gestoppter&amp;quot;-Ausdruck nur solange &amp;quot;gestoppt&amp;quot; ist, wie keine Funktion den Wert dieses &amp;quot;gestoppten&amp;quot;-Ausdrucks verwendet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3+[x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3$&amp;lt;/code&amp;gt;. Da &amp;lt;code&amp;gt; [x+x]&amp;lt;/code&amp;gt; Teil der Summe ist, wird er ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x$&amp;lt;/code&amp;gt;. Hier ist der Ausdruck selbst eine Summe. Da er hier aber kein Parameter einer weiteren Funktion ist, wird er nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[var=varA]+3&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 6$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; wieder Teil einer Summe und wird daher ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[[var=varA]+3]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x+3$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; zwar auch Teil einer Summe, da diese aber auch mit &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen ist, wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList([1+1], list(1,2,3))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; Teil einer Funktion, die den genauen Wert benötigt. Daher wird &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; berechnet.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5848</id>
		<title>Evaluator-Änderungen von JACK2 nach JACK3</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5848"/>
		<updated>2020-05-14T14:28:42Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Neue Funktionalität */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=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.}}&lt;br /&gt;
==Allgemein==&lt;br /&gt;
In JACK3 wird nun eine neue Evaluatorversion genutzt. Im folgenden werden die Änderungen/Unterschiede zur alten Version aufgezählt.&lt;br /&gt;
&lt;br /&gt;
==Zeichenketten/Strings==&lt;br /&gt;
Zeichenketten/Strings können in der Syntax mit einfachen oder doppelten Anführungszeichen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Benutzung der jeweils anderen ist dann ohne Escaping &amp;lt;code&amp;gt;\&amp;quot; \&#039;&amp;lt;/code&amp;gt; möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung! Das Escaping wird nicht vom Evaluator aufgelöst! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein &#039;Beispiel&#039;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein anderes &amp;quot;Beispiel&amp;quot;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein drittes \&amp;quot;Beispiel\&amp;quot;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein letztes \&#039;Beispiel\&#039;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert.&lt;br /&gt;
&lt;br /&gt;
Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt;&amp;quot;Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen.&amp;quot;&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;lt;code&amp;gt;concat()&amp;lt;/code&amp;gt; können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt; concat(&amp;quot;Die Ersetzung von Variablen &amp;quot;, [var=text1], &amp;quot; kann so vorgenommen werden.&amp;quot;) &amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; durch ihren Wert ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nutzt man in &amp;lt;code&amp;gt;equalsExpr()&amp;lt;/code&amp;gt; Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
Bsp:&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(&#039;x^2+3&#039;, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als Text, nicht als mathematischer Ausdruck erkannt.&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(x^2+3, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
==Neue Funktionalität==&lt;br /&gt;
Es gibt nun eine Möglichkeit Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel hierfür ist die Definition von Variablen für den Aufgabentext.&lt;br /&gt;
Hat man bisher &amp;lt;code&amp;gt;x+2*x&amp;lt;/code&amp;gt; als Variable angelegt, wurde der Ausdruck zu &amp;lt;code&amp;gt;3*x&amp;lt;/code&amp;gt; zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Fügt man nun &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; ein, wird der Ausdruck nicht mehr ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x+3*x&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[x+3*x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$x+3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(0,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(1,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Variablen können allerdings trotzdem zur Bewertung der Aufgabe verwendet werden.&lt;br /&gt;
Sobald ein &amp;quot;gestoppter&amp;quot;-Ausdruck (von &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen) in einer Funktion verwendet wird, wird diese ausgerechnet.&lt;br /&gt;
D.h. viel mehr, dass ein &amp;quot;gestoppter&amp;quot;-Ausdruck nur solange &amp;quot;gestoppt&amp;quot; ist, wie keine Funktion den Wert dieses &amp;quot;gestoppten&amp;quot;-Ausdrucks verwendet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3+[x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3$&amp;lt;/code&amp;gt;. Da &amp;lt;code&amp;gt; [x+x]&amp;lt;/code&amp;gt; Teil der Summe ist, wird er ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x$&amp;lt;/code&amp;gt;. Hier ist der Ausdruck selbst eine Summe. Da er hier aber kein Parameter einer weiteren Funktion ist, wird er nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[var=varA]+3&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 6$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; wieder Teil einer Summe und wird daher ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[[var=varA]+3]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x+3$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; zwar auch Teil einer Summe, da diese aber auch mit &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen ist, wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList([1+1], list(1,2,3)&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; Teil einer Funktion, die den genauen Wert benötigt. Daher wird &amp;lt;code&amp;gt;[1+1]&amp;lt;/code&amp;gt; berechnet.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5847</id>
		<title>Evaluator-Änderungen von JACK2 nach JACK3</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Evaluator-%C3%84nderungen_von_JACK2_nach_JACK3&amp;diff=5847"/>
		<updated>2020-05-14T14:23:34Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vorlage:Warnung|Warnung=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.}}&lt;br /&gt;
==Allgemein==&lt;br /&gt;
In JACK3 wird nun eine neue Evaluatorversion genutzt. Im folgenden werden die Änderungen/Unterschiede zur alten Version aufgezählt.&lt;br /&gt;
&lt;br /&gt;
==Zeichenketten/Strings==&lt;br /&gt;
Zeichenketten/Strings können in der Syntax mit einfachen oder doppelten Anführungszeichen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Benutzung der jeweils anderen ist dann ohne Escaping &amp;lt;code&amp;gt;\&amp;quot; \&#039;&amp;lt;/code&amp;gt; möglich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung! Das Escaping wird nicht vom Evaluator aufgelöst! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein &#039;Beispiel&#039;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein anderes &amp;quot;Beispiel&amp;quot;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;Dies ist ein drittes \&amp;quot;Beispiel\&amp;quot;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;Dies ist ein letztes \&#039;Beispiel\&#039;.&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert.&lt;br /&gt;
&lt;br /&gt;
Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt;&amp;quot;Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen.&amp;quot;&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion &amp;lt;code&amp;gt;concat()&amp;lt;/code&amp;gt; können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:&lt;br /&gt;
&lt;br /&gt;
Bsp.: In &amp;lt;code&amp;gt; concat(&amp;quot;Die Ersetzung von Variablen &amp;quot;, [var=text1], &amp;quot; kann so vorgenommen werden.&amp;quot;) &amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;[var=text1]&amp;lt;/code&amp;gt; durch ihren Wert ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nutzt man in &amp;lt;code&amp;gt;equalsExpr()&amp;lt;/code&amp;gt; Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
Bsp:&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(&#039;x^2+3&#039;, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als Text, nicht als mathematischer Ausdruck erkannt.&lt;br /&gt;
* &amp;lt;code&amp;gt;equalsExpr(x^2+3, [input=gleichung])&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;x^2+3&amp;lt;/code&amp;gt; wird als mathematischer Ausdruck erkannt.&lt;br /&gt;
&lt;br /&gt;
==Neue Funktionalität==&lt;br /&gt;
Es gibt nun eine Möglichkeit Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel hierfür ist die Definition von Variablen für den Aufgabentext.&lt;br /&gt;
Hat man bisher &amp;lt;code&amp;gt;x+2*x&amp;lt;/code&amp;gt; als Variable angelegt, wurde der Ausdruck zu &amp;lt;code&amp;gt;3*x&amp;lt;/code&amp;gt; zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Fügt man nun &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; ein, wird der Ausdruck nicht mehr ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x+3*x&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[x+3*x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$x+3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(0,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$4 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;getFromList(1,list(x+3*x,[2*x+3*x]))&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3 \cdot x$&amp;lt;/code&amp;gt;. Hier wird der Ausdruck nicht ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Variablen können allerdings trotzdem zur Bewertung der Aufgabe verwendet werden.&lt;br /&gt;
Sobald ein &amp;quot;gestoppter&amp;quot;-Ausdruck (von &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen) in einer Funktion verwendet wird, wird diese ausgerechnet.&lt;br /&gt;
&lt;br /&gt;
Bsp.:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3+[x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 3$&amp;lt;/code&amp;gt;. Da &amp;lt;code&amp;gt; [x+x]&amp;lt;/code&amp;gt; Teil der Summe ist, wird er ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x$&amp;lt;/code&amp;gt;. Hier ist der Ausdruck selbst eine Summe. Da er hier aber kein Parameter einer weiteren Funktion ist, wird er nicht ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[var=varA]+3&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$2 \cdot x + 6$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; wieder Teil einer Summe und wird daher ausgerechnet.&lt;br /&gt;
* &amp;lt;code&amp;gt;varA=[3+x+x] varB=[[var=varA]+3]&amp;lt;/code&amp;gt; -&amp;gt; LaTeX: &amp;lt;code&amp;gt;$3+x+x+3$&amp;lt;/code&amp;gt;. Hier ist &amp;lt;code&amp;gt;[3+x+x]&amp;lt;/code&amp;gt; zwar auch Teil einer Summe, da diese aber auch mit &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; umschlossen ist, wird der Ausdruck nicht ausgerechnet.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Templatepaletten&amp;diff=5032</id>
		<title>Templatepaletten</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Templatepaletten&amp;diff=5032"/>
		<updated>2019-05-22T09:26:07Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Liste der zur Verfügung stehenden Symbole */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
Eine [[Templatepaletten|Templatepalette]] ist eine selbsterstellte Palette, die im [[Formeleditor]] in JACK eingesetzt werden kann. So können eigene Paletten erstellt werden, welche nicht im Standardrepertoire von JACK enthalten sind. Im Prinzip kann eine beliebige Palette aus den vorhandenen Eingabesymbolen des Formeleditors zusammengebaut werden und an eine Aufgabe angehängt werden. Dieses Feature gibt Lehrenden die Möglichkeit, den Lernenenden nur exakt die benötigten Eingabesymbole zur Verfügung zu stellen. Eine Palette kann nach Belieben in einzelne Tabs unterteilt werden und die Symbole können nach eigenen Wünschen in Reihen angeordnet werden. Jede Palette des Formeleditors ist ein eigens deklariertes OpenMath-Objekt, welches durch OpenMath-Symbole weiter definiert wird. Für die Schlüsselbegriffe &#039;&#039;palette&#039;&#039;, &#039;&#039;palette_tab&#039;&#039; und &#039;&#039;palette_row&#039;&#039; zur Unterteilung einer Palette wurde eigens das Content Dictionnary &#039;&#039;editor1&#039;&#039; deklariert.&lt;br /&gt;
&lt;br /&gt;
===Einbinden===&lt;br /&gt;
Im Gegensatz zu [[Standardpaletten]], welche Systemweit verfügbar sind, sind [[Templatepaletten]] nur in einer Aufgabe verfügbar. Um [[Templatepaletten]] in einer Aufgabe einzubinden, muss die selbsterstellte XML Datei der Aufgabe als WORKING_SHEET Ressource hinzugefügt werden. Zusätzlich muss in dem editor-Tag der [[Stage]] Datei der Name der Datei + Dateiendung übergeben werden. Bsp.: editor=&amp;quot;MyPalette.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Beispiel===&lt;br /&gt;
Eine Templatepalettendatei ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;OMOBJ version=&#039;2.0&#039; xmlns=&#039;http://www.openmath.org/OpenMath&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;OMA&amp;gt;&lt;br /&gt;
            &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;palette&#039;/&amp;gt;&lt;br /&gt;
            &amp;lt;OMA&amp;gt;&lt;br /&gt;
                &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;palette_tab&#039;/&amp;gt;&lt;br /&gt;
                &amp;lt;OMA&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;palette_row&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;plus&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;minus&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;times&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMA&amp;gt;&lt;br /&gt;
                        &amp;lt;OMS cd=&#039;transc1&#039; name=&#039;cos&#039;/&amp;gt;&lt;br /&gt;
                        &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;input_box&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/OMA&amp;gt;&lt;br /&gt;
                    &amp;lt;OMA&amp;gt;&lt;br /&gt;
                        &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;root&#039;/&amp;gt;&lt;br /&gt;
                        &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;input_box&#039;/&amp;gt;&lt;br /&gt;
                        &amp;lt;OMI&amp;gt;2&amp;lt;/OMI&amp;gt;&lt;br /&gt;
                    &amp;lt;/OMA&amp;gt;&lt;br /&gt;
                &amp;lt;/OMA&amp;gt;&lt;br /&gt;
                &amp;lt;OMA&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;palette_row&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;lt&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;leq&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;eq&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;geq&#039;/&amp;gt;&lt;br /&gt;
                    &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;gt&#039;/&amp;gt;&lt;br /&gt;
                &amp;lt;/OMA&amp;gt;&lt;br /&gt;
            &amp;lt;/OMA&amp;gt;&lt;br /&gt;
        &amp;lt;/OMA&amp;gt;&lt;br /&gt;
    &amp;lt;/OMOBJ&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[Datei:Templatepalette1-spobel.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Liste der zur Verfügung stehenden Symbole ===&lt;br /&gt;
Die folgende Liste dient zur Dokumentation der zur Verfügung stehenden Symbole und ist noch nicht vollständig.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Definition&#039;&#039;&#039; &lt;br /&gt;
| &#039;&#039;&#039;Symbol&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;plus&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;+&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;minus&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;times&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\cdot&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;lt&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;leq&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\leq&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;gt&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;relation1&#039; name=&#039;geq&#039;/&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\geq&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMA&amp;gt;&lt;br /&gt;
    &amp;lt;OMS cd=&#039;transc1&#039; name=&#039;cos&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;input_box&#039;/&amp;gt;&lt;br /&gt;
  &amp;lt;/OMA&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\cos( )&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMA&amp;gt;&lt;br /&gt;
    &amp;lt;OMS cd=&#039;arith1&#039; name=&#039;root&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;input_box&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;OMI&amp;gt;2&amp;lt;/OMI&amp;gt;&lt;br /&gt;
  &amp;lt;/OMA&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\sqrt{ }&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
  &amp;lt;OMS cd=&#039;editor1&#039; name=&#039;palette_whitespace&#039;/&amp;gt;&lt;br /&gt;
| Platzhalter zum Formatieren&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Siehe auch ===&lt;br /&gt;
* [[Formeleditor]]&lt;br /&gt;
* [[Standardpaletten]]&lt;br /&gt;
[[Category:Formeleditor]]&lt;br /&gt;
[[category:Beispiel]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=EvaluateInR&amp;diff=4870</id>
		<title>EvaluateInR</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=EvaluateInR&amp;diff=4870"/>
		<updated>2018-12-18T11:09:25Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugehörige Evaluatoren==&lt;br /&gt;
*&#039;&#039;&#039;MathEvaluator&#039;&#039;&#039;&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Mit der Funktion &#039;&#039;EvaluateInR&#039;&#039; ist es möglich &#039;&#039;R&#039;&#039;-Befehle auszuführen. Das Argument der Funktion ist eine [[Zeichenkette]], welche in &#039;&#039;R&#039;&#039; direkt ausgeführt wird.&lt;br /&gt;
In der [[Zeichenkette]] können FillInvariablen (pos), sowie Aufgabenvariablen (var) auftauchen. Diese Variablen werden dann automatisch in die &#039;&#039;R&#039;&#039;-Sprache übersetzt.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
Eine [[Variablen|Variable]] &#039;&#039;Test&#039;&#039; kann dann folgendermaßen beschrieben werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;option name=&amp;quot;Test&amp;quot; type=&amp;quot;Typ&amp;quot; cas=&amp;quot;Evaluator&amp;quot; value=&amp;quot;evaluateInR(&#039;argument&#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;Typ&#039;&#039;&#039; - Entspricht dem Typen der Variable.&lt;br /&gt;
* &#039;&#039;&#039;argument&#039;&#039;&#039; - R-Befehl&lt;br /&gt;
&lt;br /&gt;
=== Befehlsreferenz für R ===&lt;br /&gt;
&lt;br /&gt;
In folgender Tabelle sind einige Beispiele, wie R verwendet werden kann. Die Variablen die damit gesetzt werden, können ebenfalls wieder in R angewandt werden oder auch für andere Zwecke im Evaluator verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| &#039;&#039;&#039;argument&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| &#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| list(1, 2.34)&lt;br /&gt;
| [[List]]&lt;br /&gt;
| Eine Liste mit 2 Einträgen&lt;br /&gt;
|-&lt;br /&gt;
| list(1, ...., n)&lt;br /&gt;
| [[List]]&lt;br /&gt;
| Eine Liste mit n Einträgen&lt;br /&gt;
|-&lt;br /&gt;
| c(1,2,3,4,5,6)&lt;br /&gt;
| [[Vektor]]&lt;br /&gt;
| Eine Vektor mit der Länge 6&lt;br /&gt;
|-&lt;br /&gt;
| matrix(c(1,2,3,4,5,6),2,3)&lt;br /&gt;
| [[Matrix]]&lt;br /&gt;
| Eine 2x3-Matrix mit folgenden Einträgen: [1, 3, 5; 2, 4, 6]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Ausführliche Dokumentation findet man hier: [https://cran.r-project.org/manuals.html]&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
Eine 3x3-Matrix als [[Variablen|Variable]] mit Namen A erstellt man durch den folgenden Befehl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
 &amp;lt;option name=&amp;quot;A&amp;quot; type=&amp;quot;matrix&amp;quot; cas=&amp;quot;Evaluator&amp;quot; value=&amp;quot;evaluateInR(&#039;matrix(c(1,2,3,4,5,6,7,8,9),3,3)&#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem folgenden Beispiel wird eine Matrixvariable &amp;quot;A&amp;quot; erzeugt und anschließend der Rang von &amp;quot;A&amp;quot; in der Variable &amp;quot;rang&amp;quot; gespeichert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;variables&amp;gt;&lt;br /&gt;
   &amp;lt;option name=&amp;quot;A&amp;quot; type=&amp;quot;matrix&amp;quot; cas=&amp;quot;Evaluator&amp;quot; value=&amp;quot;evaluateInR(&#039;matrix(c(1,2,3,4,5,6,7,8,9),3,3)&#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;option name=&amp;quot;rang&amp;quot; type=&amp;quot;vector&amp;quot; cas=&amp;quot;Evaluator&amp;quot; value=&amp;quot;evaluateInR(&#039;rank([var=A])&#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/variables&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weitere Links===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Math-Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Molecule&amp;diff=4793</id>
		<title>Molecule</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Molecule&amp;diff=4793"/>
		<updated>2018-12-11T11:15:16Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:ChemEvaluatorfunktion|Parameter=Die Funktion kann 1-3 Parameter erwarten. Parameter 2 und 3 sind optional.&lt;br /&gt;
&lt;br /&gt;
Die Methode ertwartet ein &#039;&#039;[[Atomarray|atomarray]]&#039;&#039;(muss immer enthalten sein) einen &#039;&#039;[[Charge|charge]]&#039;&#039; und einen &#039;&#039;[[StateOfMatter|stateOfMatter]]&#039;&#039;(optional).|Rückgabewert=Die Funktion gibt ein Molekül zurück.|Aufbau= &amp;lt;code&amp;gt;molecule(atomarray,[charge],[stateOfMatter])&amp;lt;/code&amp;gt;|Hinweise=*Diese Moleküle können im Aufgabentext/Feedbacktext/etc. angezeigt werden.&lt;br /&gt;
*Diese Moleküle können zum rechnen im ChemEvaluator verwendet werden:&lt;br /&gt;
**&amp;lt;code&amp;gt;+,*&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;contains, consostOf, compareNumberOfAtoms, checkOxidationState, checkStateOfMatter&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;isEmpty&amp;lt;/code&amp;gt;|Beispiel=&lt;br /&gt;
1.&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;molcule(atomarray(atomarray_element(H,2), atomarray_Element(O)))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::=&amp;gt;&amp;lt;code&amp;gt;H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;molcule(atomarray(atomarray_element(H,2), atomarray_Element(O)), charge(2+))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::=&amp;gt;&amp;lt;code&amp;gt;H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;lt;sup&amp;gt;2+&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. &amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;molcule(atomarray(atomarray_element(H,2), atomarray_Element(O)), charge(3+), stateOfMatter(&#039;aq&#039;))&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
::=&amp;gt;&amp;lt;code&amp;gt;H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;lt;sup&amp;gt;3+&amp;lt;/sup&amp;gt;(aq)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. &amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;molcule(atomarray(oxidationState(-&#039;II&#039;,atomarray_element(H,2)), atomarray_Element(O)))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::=&amp;gt;[[Datei:H2o.jpg]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Funktionen zur Erstellung von Molekülen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Versionshistorie_(Jack2)&amp;diff=3447</id>
		<title>Versionshistorie (Jack2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Versionshistorie_(Jack2)&amp;diff=3447"/>
		<updated>2018-10-31T10:40:29Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== August 2018 ==&lt;br /&gt;
* &#039;&#039;29. August 2018&#039;&#039;: &#039;&#039;&#039;JACK 2.5&#039;&#039;&#039;&lt;br /&gt;
** Der Lösungsüberblick zu Kursen ist nun in den Kurseinstellungen ein- und ausschaltbar. Standardmäßig sind diese bei schon existierenden Kursen sichtbar. &lt;br /&gt;
** Der &#039;&#039;&#039;Evaluator&#039;&#039;&#039; unterstützt nun auch OpenChem mithilfe des [[ChemEvaluator]]s:&lt;br /&gt;
*** arith1: [[Plus]], [[Times]], [[UnaryMinus]], [[UnaryPlus]]&lt;br /&gt;
*** chemistry1: [[CheckOxidationState]], [[CheckStateOfMatter]], [[CompareNumberOfAtoms]], [[ConsistOf]], [[Contains]]&lt;br /&gt;
*** list1: [[List]]&lt;br /&gt;
*** logic1: [[And]], [[False]], [[Not]], [[Or]], [[True]]&lt;br /&gt;
*** molecule1: [[AtomarryElement]], [[Atomarray]], [[Charge]], [[Molecule]], [[OxidationState]], [[StateOfMatter]]&lt;br /&gt;
*** nums1: [[E]], [[PI]]&lt;br /&gt;
*** periodictable_group1 - 18&lt;br /&gt;
*** testterminal_jack: [[IsEmpty]]&lt;br /&gt;
*** variable_jack: [[Exercise]], [[FillIn]]&lt;br /&gt;
** Des Weiteren verhält sich das Zeichen „/“ in Mathematik-Formeln nun exakt (d.h. als Bruch). Möchte man eine Dezimalzahl erzeugen, so kann man den „:“-Operator nutzen. &lt;br /&gt;
*** Neue MathEvaluator-Funktionen: [[IsVector]], [[IsNVector]], [[GetFromMatrix]], [[GetFromVector]] &lt;br /&gt;
&lt;br /&gt;
== Juni 2018 ==&lt;br /&gt;
* &#039;&#039;13. Juni 2018&#039;&#039;: Die [[:Kategorie:Testfunktionen|Testfunktionen]] des Evaluators haben Zuwachs bekommen: Mit [[IsVector]] und [[IsNVector]] können nun Vektoren überprüft werden.&lt;br /&gt;
* &#039;&#039;6. Juni 2018&#039;&#039;: Die Dokumentation für den [[TracingChecker]] und den [[KovidaChecker]] für Programmieraufgaben ist nun auch in diesem Wiki verfügbar.&lt;br /&gt;
* &#039;&#039;5. Juni 2018&#039;&#039;: Die meisten JACK-Instanzen wurden eine neue Version mit vielen kleinen Fehlerkorrekturen und Verbesserungen aktualisiert.&lt;br /&gt;
&lt;br /&gt;
== April 2018 ==&lt;br /&gt;
* &#039;&#039;25. April 2018&#039;&#039;: Mit der neuen Evaluator-Funktion [[ImplodeList]] können nun Listen in Zeichenketten verwandelt werden.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
* &#039;&#039;20. November 2017&#039;&#039;: Der Evaluator 2.0 läuft nun auch auf http://jack.s3.uni-due.de. Hinweise zu notwendigen Änderungen an formularbasierten Aufgaben findet man unter [[Migration zur Evaluator 2 Syntax]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2017 ==&lt;br /&gt;
* &#039;&#039;04. Oktober 2017&#039;&#039;: Die Funktionen des [[Evaluator|Evaluators]] sind nun in diesem Wiki kategorisiert. Eine Übersicht aller Kategorien findet man unter [[:Kategorie:Evaluatorfunktionenkategorie|Evaluatorfunktionenkategorien]]&lt;br /&gt;
&lt;br /&gt;
== September 2017 ==&lt;br /&gt;
* &#039;&#039;29. September 2017&#039;&#039;: Auf der Spielwiese läuft seit heute Version 2 vom [[Evaluator]]. Neu ist insbesondere, dass Lehrende in den Funktionen anstatt CAS-Syntax sogenannte [[:Kategorie:Konstruktor|Konstruktoren]] verwendet werden müssen. Dies zieht ggf. Änderungen nach sich, z.B. an der Funktion [[equalsExpr]].&lt;br /&gt;
&lt;br /&gt;
== August 2017 ==&lt;br /&gt;
* &#039;&#039;30. August 2017&#039;&#039;: In [[Fill In|Fill-In-Aufgaben]] können die Warnungen des Checkers bei leerer Eingabe unterdrückt werden. Die Dokumentation dazu findet man im Artikel [[Stage]] in der Erläuterung des Tags &#039;&#039;&#039;exercise&#039;&#039;&#039;. Bisher kann dieses Feature nur auf der Spielwiese verwendet werden.&lt;br /&gt;
* &#039;&#039;29. August 2017&#039;&#039;: Sage läuft jetzt in JACK auf Version 8.0&lt;br /&gt;
* &#039;&#039;29. August 2017&#039;&#039;: [[Fill In|Fill-In-Aufgaben]] erhalten eine [[Evaluator-Konsole]] für Lehrende, um Aufgaben einfacher Testen zu können.&lt;br /&gt;
&lt;br /&gt;
== Juli 2017 ==&lt;br /&gt;
* &#039;&#039;5. Juli 2017&#039;&#039;: Der Server jack-server05.s3.uni-due.de (Spielwiese) wird ab ca. 14:45 Uhr offline sein um ihn zu aktualisieren. Bis ca. 16 Uhr sollten alle Maßnahmen abgeschlossen und der Server wieder verfügbar sein. Vielen Dank für ihr Verständnis!&lt;br /&gt;
&lt;br /&gt;
== Juni 2017 ==&lt;br /&gt;
* &#039;&#039;29. Juni 2017&#039;&#039;: Eine neue stabile Version findet sich auf allen JACK-Servern, eine neue Testversion (2.4.2) befindet sich auf der Spielwiesen-Instanz! Im Wesentlichen beinhaltet die neue Version zahlreiche Bugfixes.&lt;br /&gt;
* &#039;&#039;19. Juni 2017&#039;&#039;: Herzlich Willkommen auf dem Feature-News-Ticker. Auf dieser Seite stellen wir in Zukunft neue Features innerhalb von JACK vor und dokumentieren ihre Verwendung. Bitte schauen Sie also regelmäßig rein.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=List&amp;diff=2616</id>
		<title>List</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=List&amp;diff=2616"/>
		<updated>2018-08-28T14:06:34Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;list&#039;&#039; dient als Konstruktor für eine Liste. Es können Objekte und Funktionen, die Objekte zurückgeben als Elemente hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;Besonderheit&#039; an diesem Typ: wird eine [[List]]e als Paramter erwartet, kann auch ein beliebiges Objekt übergeben werden, dieses wird automatisch in eine [[List]]e übersetzt und das [[Objekt]] bildet das einzige Element dieser Liste.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
  list(Objekt param1, Funktion param2, ...)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;param1&#039;&#039;&#039; - Objekt z.B. Zahl oder Matrix&lt;br /&gt;
* &#039;&#039;&#039;param2&#039;&#039;&#039; - Funktion, die ein Objekt zurück gibt&lt;br /&gt;
* ... - beliebige Anzahl Elemente&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt die Liste zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
    list(vector(1,1),vector(1,2))&lt;br /&gt;
&lt;br /&gt;
OpenMath:&lt;br /&gt;
  &amp;lt;OMOBJ&amp;gt;&amp;lt;OMA&amp;gt;&amp;lt;OMS cd=&amp;quot;list1&amp;quot; name=&amp;quot;list&amp;quot;/&amp;gt;&amp;lt;OMA&amp;gt;&amp;lt;OMS cd=&amp;quot;linalg2&amp;quot; name=&amp;quot;vector&amp;quot;/&amp;gt;&amp;lt;OMI&amp;gt;1&amp;lt;/OMI&amp;gt;&amp;lt;OMI&amp;gt;1&amp;lt;/OMI&amp;gt;&amp;lt;/OMA&amp;gt;&amp;lt;OMA&amp;gt;&amp;lt;OMS cd=&amp;quot;linalg2&amp;quot; name=&amp;quot;vector&amp;quot;/&amp;gt;&amp;lt;OMI&amp;gt;1&amp;lt;/OMI&amp;gt;&amp;lt;OMI&amp;gt;2&amp;lt;/OMI&amp;gt;&amp;lt;/OMA&amp;gt;&amp;lt;/OMA&amp;gt;&amp;lt;/OMOBJ&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LaTeX:&lt;br /&gt;
  &amp;lt;math&amp;gt;\{ \begin{pmatrix} 1 \\ 1 \end{pmatrix} , \begin{pmatrix} 1 \\ 2 \end{pmatrix} \}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]][[Kategorie:Konstruktoren]][[Kategorie:Listfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Log&amp;diff=2614</id>
		<title>Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Log&amp;diff=2614"/>
		<updated>2018-08-21T09:16:14Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Beschreibung ===&lt;br /&gt;
Die Funktion &#039;&#039;log&#039;&#039; beschreibt die Logarithmusfunktion zur angegebenen Basis. Der erste Parameter stellt die Basis dar. Der zweite Parameter ist eine rationale Zahl. Zu diesem zweiten Parameter wird der Logarithmus berechnet. Die Rückgabe ist eine rationale Zahl.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 log([[Gleitkommazahl]] basis, [[Gleitkommazahl]] zahl)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;basis&#039;&#039;&#039; - [[Gleitkommazahl]], Basis zu der die Logarithmusfunktion arbeitet&lt;br /&gt;
* &#039;&#039;&#039;zahl&#039;&#039;&#039; - [[Gleitkommazahl]], auf die die Logarithmusfunktion angewendet wird&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine [[Gleitkommazahl]] zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 log(e, 100) --&amp;gt; returns 4.605170185988092&lt;br /&gt;
 log(10, 1)   --&amp;gt; returns 0&lt;br /&gt;
 log(2, 1) --&amp;gt; returns 0&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
 log(10, [pos=1])&lt;br /&gt;
 log([var=a], [pos=4])&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Aufgrund von der Rechengenauigkeit des Computers, wird in jedem Fall eine rationale Zahl zurückgegeben. Sollte der tatsächliche Funktionswert irrational sein, wird entsprechend gerundet.&lt;br /&gt;
* log(a,b) == log(b)/log(a)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetFromSet&amp;diff=2554</id>
		<title>GetFromSet</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetFromSet&amp;diff=2554"/>
		<updated>2018-07-03T11:24:36Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== DEPRECTAED ===&lt;br /&gt;
Diese Funktion wird im Evaluator 2 nicht mehr unterstützt. Die Funktion [[GetFromList]] bietet die gleiche Funktionalität.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=GetFromOrderedSet&amp;diff=2553</id>
		<title>GetFromOrderedSet</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=GetFromOrderedSet&amp;diff=2553"/>
		<updated>2018-07-03T11:24:10Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* DEPRECTAED */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== DEPRECTAED ===&lt;br /&gt;
Diese Funktion wird im Evaluator 2 nicht mehr unterstützt. Die Funktion [[GetFromOrderedList]] bietet die gleiche Funktionalität.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Log&amp;diff=2459</id>
		<title>Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Log&amp;diff=2459"/>
		<updated>2018-02-27T10:07:22Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Beschreibung ===&lt;br /&gt;
Die Funktion &#039;&#039;log&#039;&#039; beschreibt die natürliche Logarithmusfunktion zur Basis &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;. Die Funktion erwartet eine rationale Zahl und gibt eine rationale Zahl zurück.&lt;br /&gt;
Die Funktion &#039;&#039;log&#039;&#039; bietet die Möglichkeit einen zweiten Parameter einzugeben. Nutzt man die Funktion mit zwei Parametern, stellt der erste Parameter die Basis dar.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 log([[Gleitkommazahl]] zahl)&lt;br /&gt;
 log([[Gleitkommazahl]] basis, [[Gleitkommazahl]] zahl)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;zahl&#039;&#039;&#039; - [[Gleitkommazahl]], auf die die Logarithmusfunktion angewendet wird&lt;br /&gt;
* &#039;&#039;&#039;basis&#039;&#039;&#039; - [[Gleitkommazahl]], Basis zu der die Logarithmusfunktion arbeitet&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
* Gibt eine [[Gleitkommazahl]] zurück&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 log(100) --&amp;gt; returns 4.605170185988092&lt;br /&gt;
 log(1)   --&amp;gt; returns 0&lt;br /&gt;
 log(2,1) --&amp;gt; returns 0&lt;br /&gt;
&lt;br /&gt;
==== Benutzung von Variablen ====&lt;br /&gt;
 log([pos=1])&lt;br /&gt;
 log([var=a])&lt;br /&gt;
&lt;br /&gt;
====JUnit Tests====&lt;br /&gt;
&amp;lt;span class=&amp;quot;mw-customtoggle-myDivision&amp;quot;&amp;gt;[Anzeigen]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-myDivision&amp;quot;&amp;gt;&lt;br /&gt;
@BeforeClass&lt;br /&gt;
public static void beforeTest() {&lt;br /&gt;
	&lt;br /&gt;
		fillInVariableMap.put(1, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;5&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		fillInVariableMap.put(2, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMF dec=\&amp;quot;13.7465\&amp;quot;/&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
		exerciseVariableMap.put(&amp;quot;a&amp;quot;, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;5&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		exerciseVariableMap.put(&amp;quot;b&amp;quot;, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMF dec=\&amp;quot;13.7465\&amp;quot;/&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLog1() {&lt;br /&gt;
	assertEquals(Math.log(100), Evaluator.getNumberResult(&amp;quot;log(100)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLog2() {&lt;br /&gt;
	assertEquals(Math.log(197), Evaluator.getNumberResult(&amp;quot;log(197)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLog3() {&lt;br /&gt;
	assertEquals(Math.log(100), Evaluator.getNumberResult(&amp;quot;log(&#039;100&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLog4() {&lt;br /&gt;
	assertEquals(Math.log(197), Evaluator.getNumberResult(&amp;quot;log(&#039;197&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithInput1() {&lt;br /&gt;
	assertEquals(Math.log(5), Evaluator.getNumberResult(&amp;quot;log([pos=1])&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithInput2() {&lt;br /&gt;
	assertEquals(Math.log(13.7465),&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;log([pos=2])&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithVariables1() {&lt;br /&gt;
	assertEquals(Math.log(5), Evaluator.getNumberResult(&amp;quot;log([var=a])&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithVariables2() {&lt;br /&gt;
	assertEquals(Math.log(13.7465),&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;log([var=b])&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithExpressions1() {&lt;br /&gt;
	assertEquals(Math.log(Math.log(12)),&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;log(log(12))&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithExpressions2() {&lt;br /&gt;
	assertEquals(Math.log(Math.log(Math.log(12))),&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;log(log(log(12)))&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithPointNumbers1() {&lt;br /&gt;
	assertEquals(Math.log(1.0), Evaluator.getNumberResult(&amp;quot;log(1.0)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithPointNumbers2() {&lt;br /&gt;
	assertEquals(Math.log(.1), Evaluator.getNumberResult(&amp;quot;log(0.1)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testLogWithPointNumbers3() {&lt;br /&gt;
	assertEquals(Math.log(.1234), Evaluator.getNumberResult(&amp;quot;log(0.1234)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.0001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentException.class) // NaN&lt;br /&gt;
public void testLogAtDefinition1() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(-1)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentException.class) // NaN&lt;br /&gt;
public void testLogAtDefinition2() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(-0.1)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentException.class) // NaN&lt;br /&gt;
public void testLogAtDefinition3() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(0)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentTypeException.class)&lt;br /&gt;
public void testLogWithWrongInputCharacter() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(a)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)&lt;br /&gt;
public void testLogWithTwoArguments() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(2, 1)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)&lt;br /&gt;
public void testLogWithThreeArguments() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(1, 23, 4)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = UndefinedExerciseVariableException.class)&lt;br /&gt;
public void testLogWithMissingExerciseVariable() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(&#039;[var=j]&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = UndefinedFillInVariableException.class)&lt;br /&gt;
public void testLogWithMissingInput() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;log(&#039;[pos=42]&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Aufgrund von der Rechengenauigkeit des Computers, wird in jedem Fall eine rationale Zahl zurückgegeben. Sollte der tatsächliche Funktionswert irrational sein, wird entsprechend gerundet.&lt;br /&gt;
* log(a,b) == log(b)/log(a)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsTuple&amp;diff=2457</id>
		<title>IsTuple</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsTuple&amp;diff=2457"/>
		<updated>2018-02-26T13:15:41Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
&#039;&#039;isTuple&#039;&#039; gibt wahr(true) zurück falls der angegebene Parameter ein [[Tupel]], nicht wahr(false) ansonst.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isTuple(a)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Tupel]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 &amp;lt;math&amp;gt;isTuple(tuple(2,3,4,5,6,7))&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isTuple(tuple())&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isTuple(list(2,3,4,5,6,7))&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isTuple(2)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]][[Kategorie:Testfunktionen]][[Kategorie:Tupelfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsNTuple&amp;diff=2456</id>
		<title>IsNTuple</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsNTuple&amp;diff=2456"/>
		<updated>2018-02-26T13:15:18Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
&#039;&#039;isNTuple&#039;&#039; gibt wahr(true) zurück falls der erste Parameter ein [[Tupel]] ist UND der zweite Parameter die Anzahl der Tupel-Elemente entspricht.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isNTuple(a,b)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Tupel]]&lt;br /&gt;
* &#039;&#039;&#039;b&#039;&#039;&#039; - [[Ganzzahl]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(1,2,3,4),4)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(),0)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(2,3,4,5,6,7),1)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(list(2,3,4),3)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(2)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]][[Kategorie:Testfunktionen]][[Kategorie:Tupelfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Kategorie:Tupelfunktionen&amp;diff=2455</id>
		<title>Kategorie:Tupelfunktionen</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Kategorie:Tupelfunktionen&amp;diff=2455"/>
		<updated>2018-02-26T13:14:24Z</updated>

		<summary type="html">&lt;p&gt;Spobel: Leere Seite erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Tuple&amp;diff=2454</id>
		<title>Tuple</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Tuple&amp;diff=2454"/>
		<updated>2018-02-26T13:13:57Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
Die Funktion &#039;&#039;tuple&#039;&#039; dient als Konstruktor für einen Tuple. Es können Objekte und Funktionen, die Objekte zurückgeben als Elemente hinzugefügt werden. Ebenfalls können in Tupeln weitere Tupeln enthalten sein.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
  tuple([[Objekt]] param1, [[Objekt]] param2, ...)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;param1&#039;&#039;&#039; - [[Objekt]] z.B. Zahl, Zeichenkette oder Matrix&lt;br /&gt;
* &#039;&#039;&#039;param2&#039;&#039;&#039; - [[Objekt]] z.B. Zahl, Zeichenkette oder Matrix&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt das resultierende Tupel zurück&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
    tuple(1,&#039;Hallo&#039;)  &lt;br /&gt;
    tuple(&#039;Eins&#039;, 2, 3.3, &#039;Vier&#039;)&lt;br /&gt;
&lt;br /&gt;
OpenMath:&lt;br /&gt;
  &amp;lt;OMOBJ&amp;gt;&amp;lt;OMA&amp;gt;&amp;lt;OMS cd=&amp;quot;ecc&amp;quot; name=&amp;quot;Tuple&amp;quot;/&amp;gt;&amp;lt;OMI&amp;gt;1&amp;lt;/OMI&amp;gt;&amp;lt;OMSTR&amp;gt;Hallo&amp;lt;/OMSTR&amp;gt;&amp;lt;/OMA&amp;gt;&amp;lt;/OMOBJ&amp;gt;&lt;br /&gt;
  &amp;lt;OMOBJ&amp;gt;&amp;lt;OMA&amp;gt;&amp;lt;OMS cd=&amp;quot;ecc&amp;quot; name=&amp;quot;Tuple&amp;quot;/&amp;gt;&amp;lt;OMSTR&amp;gt;Eins&amp;lt;/OMSTR&amp;gt;&amp;lt;OMI&amp;gt;2&amp;lt;/OMI&amp;gt;&amp;lt;OMF dec=3.3&amp;gt;&amp;lt;OMSTR&amp;gt;Vier&amp;lt;/OMSTR&amp;gt;&amp;lt;/OMA&amp;gt;&amp;lt;/OMOBJ&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LaTeX:&lt;br /&gt;
  &amp;lt;math&amp;gt;(1, 2)&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;(Eins, 2, 3.3, Vier)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]][[Kategorie:Konstruktoren]][[Kategorie:Tupelfunktionen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IsNTuple&amp;diff=2452</id>
		<title>IsNTuple</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IsNTuple&amp;diff=2452"/>
		<updated>2018-02-26T13:11:44Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Beschreibung===&lt;br /&gt;
&#039;&#039;isNTuple&#039;&#039; gibt wahr(true) zurück falls der erste Parameter ein [[Tupel]] ist UND der zweite Parameter die Anzahl der Tupel-Elemente entspricht.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
 isNTuple(a,b)&lt;br /&gt;
&lt;br /&gt;
===Parameter===&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; - [[Tupel]]&lt;br /&gt;
* &#039;&#039;&#039;b&#039;&#039;&#039; - [[Ganzzahl]]&lt;br /&gt;
&lt;br /&gt;
===Return Value===&lt;br /&gt;
* Gibt True oder False zurück.&lt;br /&gt;
&lt;br /&gt;
===Beispiele===&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(1,2,3,4),4)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(),0)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;True&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(tuple(2,3,4,5,6,7),1)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(list(2,3,4),3)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;isNTuple(2)&amp;lt;/math&amp;gt;    --&amp;gt; returns &amp;lt;math&amp;gt;False&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Variablen_(Jack2)&amp;diff=2450</id>
		<title>Variablen (Jack2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Variablen_(Jack2)&amp;diff=2450"/>
		<updated>2018-02-13T13:27:13Z</updated>

		<summary type="html">&lt;p&gt;Spobel: /* Nutzung einer CAS-Funktion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Eine wichtige Funktion von [[FormBased|formularbasierten]] Aufgaben ist die Parametrisierung der Aufgaben durch Variablen. Dadurch können beliebig viele Instanzen derselben Aufgabe, bspw. mit verschiedenen Zahlenwerten generiert werden. Eine Variable definiert nach dem Verständnis von JACK einen oder mehrere (z.B. eine Menge) solcher variabler Werte. Sie kann zufällig oder nach einer vorgegebenen Berechnungsvorschrift bestimmt werden und trägt einen für die Aufgabe eindeutigen Namen, welcher dazu dient, sie zu referenzieren.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
[[Datei:Bestimmedenggt.PNG|500px]]&lt;br /&gt;
&lt;br /&gt;
Die obige Beispielaufgabe dient dazu, die Idee der Parametrisierung von Aufgaben zu erläutern. Der Lernende soll in einer typischen Mathematikaufgabe den größten gemeinsamen Teiler von den beiden Zahlen &amp;lt;math&amp;gt;x_1 = 120&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 125&amp;lt;/math&amp;gt; berechnen. Natürlich könnte diese Aufgabe auch mit zwei beliebigen anderen, zufällig gewählten natürlichen Zahlen gestellt werden und der größte gemeinsame Teiler stets berechnet werden. Es wäre daher denkbar, die beiden Zahlen &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt; zufällig aus einer vorgegebenen Menge ziehen zu lassen und man erhielte für jede Möglichkeit eine andere Instanz derselben Aufgabe. Da man in diesem Fall vermutlich zumeist 1 als größten gemeinsamen Teiler erhalten würde, bietet einem JACK jedoch auch die Möglichkeit, anders vorzugehen. So kann der eine Ausgangszahl als zufällige natürliche Zahl aus einem vorgegebenen Intervall gezogen werden und die Zahlen &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt; anschließend mithilfe geeigneter ebenfalls zufällig gezogenen Faktoren ermittelt werden. Es können also bereits belegte Variablenwerte verwendet werden, um andere zu berechnen. Man beachte jedoch, dass der größte gemeinsame Teiler dadurch auch von den beiden zufällig gezogenen Faktoren  abhängt, denn diese können ja auch gemeinsame Primfaktoren besitzen. Man benötigt also eine Funktion, welche einem den ggT von &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt; berechnen kann.&lt;br /&gt;
&lt;br /&gt;
=== Definition von Variablen in der ExerciseChain ===&lt;br /&gt;
&lt;br /&gt;
Die Definition von Variablen geschieht in JACK in der [[ExerciseChain]] über das Tag &amp;lt;code&amp;gt;&amp;lt;variables&amp;gt;&amp;lt;/code&amp;gt;. Jede Variable definiert man durch ein Tag &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt; und gibt ihr einen Namen über das Attribut &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;. Referenziert werden können die Variablen anschließend über ihren Namen mittels des Platzhalters &amp;lt;code&amp;gt;[var=name]&amp;lt;/code&amp;gt;. Die kann an allen Stellen innerhalb einer Aufgabe geschehen, also z.B. in der ExerciseChain, in der Aufgabenstellung, in Hinweisen oder auch im Feedback. Die Berechnungsvorschrift kann mithilfe verschiedener Funktionen geschehen, die hier vorgestellt werden sollen:&lt;br /&gt;
&lt;br /&gt;
==== Ganzzahlige Zufallszahl aus einem vorgegebenen Intervall==== &lt;br /&gt;
Dies geschieht durch die Angabe einer unteren und einer oberen Grenze des Intervalls mittels der Attribute &amp;lt;code&amp;gt;min&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt;. Der folgende Eintrag wählt beispielsweise eine ganzzahlige Zufallszahl im Intervall [1,5] aus, also eine der Zahlen 1,2,3,4 und 5:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;a&amp;quot; min=&amp;quot;1&amp;quot; max=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ziehen von Elementen aus einer Menge ====&lt;br /&gt;
Das Attribut &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; kann verwendet werden, um eine Menge zu definieren, aus der zufällig ein Element gezogen wird. Die folgende Variablendeklaration kann verwendet werden, um zufällig eine der ersten fünf Primzahlen zu ziehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;a&amp;quot; set=&amp;quot;{2,3,5,7,11}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Mengenelemente können jedoch auch beliebige Zeichenketten sein und müssen nicht numerisch sein. Es ist also auch folgende Variablendeklaration möglich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;a&amp;quot; set=&amp;quot;{x,y,z}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nutzung einer Evaluator-Funktion ====&lt;br /&gt;
Das Attribut &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; dient dazu, eine Funktion des [[Evaluator|Evaluators]] zu verwenden. Der [[Evaluator]] kennt einfache arithmetische Operationen und beherrscht eine Reihe von selbst-implementierten Funktionen. Außerdem können Computer Algebra Systeme über eigens dafür implementierte Funktionen angesprochen werden. Die folgende Variablendeklaration definiert eine Variable &amp;quot;b&amp;quot;, welche das Quadrat der Variable &amp;quot;a&amp;quot; ist. Die Funktion [[Pow]] ist eine Evaluatorfunktion, welche zwei Argumente a,n entgegennimmt und daraus die Potenz &amp;lt;math&amp;gt;a^n&amp;lt;/math&amp;gt; berechnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;b&amp;quot; value=&amp;quot;pow([var=a],2)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nutzung einer CAS-Funktion ====&lt;br /&gt;
Durch das Attribut &amp;lt;code&amp;gt;cas&amp;lt;/code&amp;gt; können Computer Algebra Systeme auch direkt angesprochen werden. Erlaubte Werte des Attributs sind &amp;lt;code&amp;gt;sage&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt;. Es kann dann das Attribut &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; verwendet werden, um eine Funktion des gewählten CAS zu benutzen. Die folgende Variablendeklaration berechnet die Fakultät der Variable &amp;quot;a&amp;quot; mit Hilfe von &#039;&#039;R&#039;&#039; und speichert diese in der Variable &amp;quot;b&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;b&amp;quot; value=&amp;quot;factorial([var=a])&amp;quot; cas=&amp;quot;R&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mengenvariablen ====&lt;br /&gt;
Bei den bisher besprochenen Variablentypen handelt es sich stets um Einzelelemente, also bspw. Zahlen oder Zeichenketten. JACK erlaubt jedoch auch komplexere Variablentypen, wie z.B. Mengen oder Matrizen. Dafür besitzt das &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;-Tag ein Attribut &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, mit welchem der Variablentyp deklariert werden kann. Lässt man das Attribut weg, so handelt es sich um eine Einzelvariable, wie wir bereits oben gesehen haben. Mengenvariablen können auf verschiedene Weisen deklariert werden. Zum einen über die direkte Angabe der einzelnen Elemente, zum anderen können Mengen auch aus Computer Algebra Systemen gezogen werden. Eine Mengenvariable kann, wenn sie einmal mit einem Wert belegt ist, dazu verwendet werden, um weitere Funktionen auf ihr auszuführen. So kann man z.B. ein bestimmtes Element aus einer Menge ziehen oder auch den Mittelwert aller Elemente berechnen. Die einfachste Art, eine Mengenvariable zu deklarieren, ist die folgende:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;M&amp;quot; type=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;element&amp;gt;2&amp;lt;/element&amp;gt;&lt;br /&gt;
    &amp;lt;element&amp;gt;3&amp;lt;/element&amp;gt;&lt;br /&gt;
    &amp;lt;element&amp;gt;5&amp;lt;/element&amp;gt;&lt;br /&gt;
  &amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch hat die Mengenvariable &amp;quot;M&amp;quot; die Elemente 2,3 und 5. Man könnte nun eine Funktion verwenden, die auf Mengen operiert, um auf diese Elemente zuzugreifen (z.B. [[GetFromSet]]). Zudem ist es auch möglich CAS-Funktionen zu verwenden, um eine Mengenvariable zu belegen. Der folgende Aufruf zieht fünf Elemente mit Hilfe der Normalverteilung mit Erwartungswert 0 und Standardabweichung 1 und verwendet dafür &#039;&#039;R&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;y&amp;quot; type=&amp;quot;set&amp;quot; value=&amp;quot;rnorm(5,0,1)&amp;quot; cas=&amp;quot;R&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== String-Variablen ====&lt;br /&gt;
In JACK können auch String-Variablen angelegt werden. Das ist hilfreich, wenn Aufgaben-, Feedback- bzw. Hinweistexte variabel gehalten werden sollen. Insbesondere kann man eine Menge mit String-Variablen erstellen, aus der dann mit entsprechenden Evaluator-Funktionen (bspw. [[GetFromSet]]) passende Strings ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Allgemein erstellt man eine String-Variable folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option name=&amp;quot;aufgabentext&amp;quot; value=&amp;quot;&#039;Berechne die Summe aus 2 und 5&#039;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass innerhalb des &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;-Attributs neben den herkömmlichen doppelten Anführungszeichen zusätzlich einfache Anführungszeichen stehen. Diese sind hier zwingend notwendig, damit JACK den Wert als String versteht.&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen einer Menge mit Strings verzichtet man hingegen auf die Anführungszeichen. In diesem Fall verfährt man genauso wie bei einer herkömmlichen Menge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;definitheit&amp;quot; type=&amp;quot;set&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;element&amp;gt;A ist positiv definit&amp;lt;/element&amp;gt;&lt;br /&gt;
  &amp;lt;element&amp;gt;A ist positiv semidefinit&amp;lt;/element&amp;gt;&lt;br /&gt;
  &amp;lt;element&amp;gt;A ist negativ definit&amp;lt;/element&amp;gt;&lt;br /&gt;
  &amp;lt;element&amp;gt;A ist negativ semidefinit&amp;lt;/element&amp;gt;&lt;br /&gt;
  &amp;lt;element&amp;gt;A ist indefinit&amp;lt;/element&amp;gt;&lt;br /&gt;
&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matrixvariablen ====&lt;br /&gt;
In gleicher Art und Weise wie Mengenvariablen erzeugt werden können, funktioniert dies auch für Matrizen. Dem Attribut &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; gibt man dafür den Wert &amp;lt;code&amp;gt;matrix&amp;lt;/code&amp;gt;. Anschließend verwendet man ein CAS, um eine Matrix zu generieren. Ein CAS, welches eine Reihe von Funktionen zur Matrixerzeugung anbietet ist &#039;&#039;Sage&#039;&#039;. In dem Artikel [[EvaluateInSage]] findet man eine Reihe von Beispielen, wie eine Matrixvariable mit Sage generiert werden kann.&lt;br /&gt;
&lt;br /&gt;
==== McIndex-Variablen ====&lt;br /&gt;
&#039;&#039;&amp;amp;rarr; Hauptartikel:&#039;&#039; [[McIndex-Variablen]]&lt;br /&gt;
&lt;br /&gt;
McIndex-Variablen finden in Multiple-Choice Aufgaben mit einem Pool an Aussagen Verwendung und ermöglichen das automatische Durchführen einer [[Distraktoranalyse]]. Sie fungieren dabei als Hilfsvariablen für die zufällige Auswahl aus einer oder mehreren Set-Variablen.&lt;br /&gt;
&lt;br /&gt;
=== Konstanten ===&lt;br /&gt;
Außerdem bietet JACK die Möglichkeit Konstanten zu benutzen ohne sie vorher explizit in der exerciseChain deklarieren zu müssen. Momentan stehen die eulersche Zahl &#039;&#039;e&#039;&#039; und die Kreiszahl &#039;&#039;π&#039;&#039; als Konstanten zur Verfügung. Man kann in allen Situationen, in denen man eine Variable verwenden könnte, auch &amp;lt;code&amp;gt;[var=E]&amp;lt;/code&amp;gt; für &#039;&#039;e&#039;&#039; oder &amp;lt;code&amp;gt;[var=PI]&amp;lt;/code&amp;gt; für &#039;&#039;π&#039;&#039; schreiben.&lt;br /&gt;
&lt;br /&gt;
Daraus folgt allerdings, dass man beim Erstellen einer Aufgabe selbst keine Variablen mit den Namen &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;PI&amp;lt;/code&amp;gt; erstellen darf.&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Evaluator&amp;diff=2448</id>
		<title>Evaluator</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Evaluator&amp;diff=2448"/>
		<updated>2018-02-13T11:59:17Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Beschreibung ===&lt;br /&gt;
Der Evaluator ist das Evaluierungswerkzeug, welches von JACK für Berechnungen aller Art (z.B. mathematische Berechnungen) verwendet wird. Der Evaluator wird daher sowohl für die Erzeugung von [[Variablen]] genutzt, als auch um die Prüfregeln für richtige Antworten bzw. Feedbacknachrichten in [[Fill In|Fill In Aufgaben]] auszuwerten. Er beherrscht eine Reihe von Funktionen, z.B. einfache arithmetische Operationen und Funktionen auf Zeichenketten, ist jedoch auch in der Lage, mit Computer Algebra Systemen zu sprechen und dort Auswertungen vornehmen zu lassen. Derzeit ist der Evaluator in der Lage, mit zwei externen Systemen zu kommunizieren. Es handelt sich dabei um die Systeme &#039;&#039;Sage&#039;&#039; und &#039;&#039;R&#039;&#039;. Der Evaluator bietet neben den oben beschriebenen Basisfunktionen einige CAS-Funktionen an, welche bestimmte festgelegte Auswertungen in den externen Systemen vornehmen. So kann zum Beispiel mittels der Funktion &#039;&#039;isLinearlyIndependent&#039;&#039; geprüft werden, ob eine Menge von Vektoren linear unabhängig ist. Diese Funktion verwendet intern &#039;&#039;Sage&#039;&#039;, um eine Entscheidung zu finden. Der Evaluator meldet das Ergebnis dann an den JACK Kern zurück, welcher dieses weiter verarbeitet. Zudem können mit dem Evaluator auch Funktionen logisch miteinander verknüpft werden, also durch &amp;quot;und&amp;quot;, &amp;quot;oder&amp;quot; oder auch &amp;quot;nicht&amp;quot;. Wird in einer Prüfregel einer [[Fill In|Fill In Aufgabe]] im Tag &amp;lt;code&amp;gt;&amp;lt;correctanswer&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;feedback&amp;gt;&amp;lt;/code&amp;gt; ein &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;-Tag verwendet, so wird der Ausdruck im Attribut &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; dem Evaluator übergeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option result=&amp;quot;evaluatorfunktion(...)&amp;quot;&amp;gt;Feedback&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Rückgabewert der verwendeten Funktion muss an dieser Stelle also zwingend ein Wahrheitswert sein. In den leeren Klammern müssen noch die Argumente der verwendeten Funktion ergänzt werden. Es können auch mehrere Funktionen folgendermaßen verknüpft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option result=&amp;quot;funktion1(...)&amp;amp;amp;&amp;amp;amp;funktion2(...)&amp;quot;&amp;gt;Feedback&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die XML-Entity &amp;quot;&amp;amp;amp;amp;&amp;quot; steht für das &#039;&#039;&amp;amp;&#039;&#039;-Zeichen. Zwei &#039;&#039;&amp;amp;&#039;&#039;-Zeichen stehen wiederum für die logische &amp;quot;Und&amp;quot;-Verknüpfung. Der Ausdruck wird folglich als wahr ausgewertet, wenn beide verwendeten Funktionen wahr zurückgeben. Die &amp;quot;Oder&amp;quot;-Verknüpfung wird durch zwei senkrechte Striche (&amp;quot;||&amp;quot;) erreicht und die &amp;quot;Nicht&amp;quot;-Verknüpfung durch das Ausrufungszeichen (&amp;quot;!&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Variablen erstellen ===&lt;br /&gt;
Der Evaluator kann beim Erzeugen aufgabenbezogener [[Variablen]] innerhalb der [[ExerciseChain]] genutzt werden. Innerhalb des value-Attributs des &amp;lt;option&amp;gt;-Tags lassen sich Funktionen des Evaluators nutzen, um Aufgaben mit variablen Werten zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;variables&amp;gt;&lt;br /&gt;
 &amp;lt;option name=&amp;quot;a&amp;quot; value=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;option name=&amp;quot;b&amp;quot; value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;option name=&amp;quot;c&amp;quot; value=&amp;quot;[var=a]*[var=b]&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/variables&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel werden die beiden Variablen &#039;&#039;a&#039;&#039; und &#039;&#039;b&#039;&#039; mit den Werten &#039;&#039;5&#039;&#039; bzw. &#039;&#039;2&#039;&#039; erstellt. Außerdem wird eine dritte Variable &#039;&#039;c&#039;&#039; erstellt, die das Produkt der beiden vorherigen Variablen bildet.&lt;br /&gt;
&lt;br /&gt;
Neben den mathematischen Basisoperationen enthält der Evaluator diverse eigen-implementierte Funktionen, die teilweise auf externe Computer-Algebra-Systeme (Sage, R) zugreifen. Beim Benutzen einer solchen CAS-Funktion kann mittels des Attributs &#039;&#039;cas&#039;&#039; und den Werten &#039;&#039;Sage&#039;&#039;, &#039;&#039;R&#039;&#039; explizit angegeben werden, welches CAS verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option name=&amp;quot;b&amp;quot; value=&amp;quot;factorial([var=a])&amp;quot; cas=&amp;quot;R&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall enthält die Variable &#039;&#039;b&#039;&#039; die Fakultät der Zahl, die in der Variablen &#039;&#039;a&#039;&#039; enthalten ist, berechnet mit Hilfe des CAS R.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisauswertung ===&lt;br /&gt;
Der Evaluator wird ebenfalls bei der Auswertung von Aufgaben verwendet, konkreter bei dem result-Attribut innerhalb des &amp;lt;option&amp;gt;-Tags.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;correctanswer&amp;gt;&lt;br /&gt;
 &amp;lt;option result=&amp;quot;[pos=1]==25*2&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Richtig! Das Ergebnis ist 50.&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/correctanswer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In diesem Beispiel wird überprüft, ob in dem ersten [[Fill In]]-Feld der Aufgabe der Wert 50 steht.&lt;br /&gt;
&lt;br /&gt;
Hierbei versucht der Evaluator den Wert des result-Attributs, also den in Anführungszeichen stehenden Ausdruck, zu einem Boolean auszuwerten. Für eine korrekte Funktionsweise ist es deswegen wichtig, dass der dort stehende Ausdruck auch tatsächlich zu einem booleschen Ergebnis validiert werden kann. Auf diese Weise können viele mitunter sehr unterschiedliche Lösungs-Einreichungen von Aufgaben auf ihre Richtigkeit geprüft werden, ohne jede einzelne Möglichkeit explizit angeben zu müssen. Hierbei kann man genauso wie beim Erstellen von Variablen auf diverse Funktionen des Evaluators zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
Der Evaluator beinhaltet viele verschiedene Funktionen, die alle in JACK für die Aufgabendarstellung benutzt werden können. Hier geben wir eine vollständige Liste aller angebotenen Funktionen mit ihrer Funktionalität.&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Evaluatorfunktion|Evaluatorfunktion]]&lt;br /&gt;
* [[:Kategorie:Konstruktoren|Konstruktoren]]&lt;br /&gt;
* [[:Kategorie:Ausdruckfunktionen|Ausdruckfunktionen]]&lt;br /&gt;
* [[:Kategorie:Zeichenkettenfunktionen|Zeichenkettenfunktionen]]&lt;br /&gt;
* [[:Kategorie:Booleanfunktionen|Booleanfunktionen]]&lt;br /&gt;
* [[:Kategorie:Listfunktionen|Listfunktionen]]&lt;br /&gt;
* [[:Kategorie:Vektorfunktionen|Vektorfunktionen]]&lt;br /&gt;
* [[:Kategorie:Matrixfunktionen|Matrixfunktionen]]&lt;br /&gt;
* [[:Kategorie:Testfunktionen|Testfunktionen]]&lt;br /&gt;
* [[:Kategorie:Sparqlfunktionen|Sparqlfunktionen]]&lt;br /&gt;
* [[Best Practice für den Evaluator]]&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
* Wenn man zwei oder mehr Funktionen miteinander verknüpft fallen die Anführungszeichen weg: &#039;&#039;equalsExpr(evalEq(&#039;5&#039;,&#039;5&#039;),&#039;0&#039;)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Formeleditor&amp;diff=2377</id>
		<title>Formeleditor</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Formeleditor&amp;diff=2377"/>
		<updated>2018-01-31T13:53:05Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JACK bietet die Möglichkeit, Fill-In-Aufgaben um einen Editor zu erweitern, der die Eingabe mathematischer Ausdrücke vereinfacht. Zum Einbinden des Editors in eine Aufgabe muss der &amp;lt;code&amp;gt;exercise&amp;lt;/code&amp;gt;-Tag um das Attribut &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt; mit einem passenden Wert ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;exercise type=&amp;quot;fillIn&amp;quot; editor=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/exercise&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel hat &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt; den Wert &amp;lt;code&amp;gt;basic&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Der Editor bietet Palette mit einer Vielfalt an mathematischen Ausdrücken an, die außerdem erweitert werden kann. In JACK gibt es die Möglichkeit eigene Paletten ([[Templatepaletten]]) zu erstellen und vorgefertigte [[Standardpaletten]] zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Um [[Standardpaletten]] einzubinden genügt es den Namen der Palette wie oben beschrieben anzugeben.&lt;br /&gt;
&lt;br /&gt;
Um [[Templatepaletten]] einzubinden, muss die selbsterstellte XML Datei der Aufgabe hinzugefügt werden. Zusätzlich muss in dem &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt;-Tag der Stage Datei der Name der Datei + Dateiendung übergeben werden. Bsp.: &amp;lt;code&amp;gt;editor=&amp;quot;MyPalette.xml&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
Es gibt die Möglichkeit die FillIn Kästchen des Formeleditors zu nutzen, ohne eine Palette anzuzeigen. Hierzu kann &amp;lt;code&amp;gt;editor=&amp;quot;invisible&amp;quot;&amp;lt;/code&amp;gt; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
  * [[Templatepaletten]]&lt;br /&gt;
  * [[Standardpaletten]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=Stage_(Jack2)&amp;diff=2376</id>
		<title>Stage (Jack2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=Stage_(Jack2)&amp;diff=2376"/>
		<updated>2018-01-31T13:49:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um die Inhalte einer Stufe zu definieren, wie z.B. Fragetext, Antwortoptionen, Feedback, etc. ist für jede Stufe eine weitere [[XML-Dateien|XML-Datei]] notwendig. Der Name&lt;br /&gt;
dieser XML-Datei ist beliebig und muss nur an der entsprechenden Stelle in der [[ExerciseChain]] referenziert werden. Zur Zeit gibt es drei mögliche Fragetypen&lt;br /&gt;
für eine Stufe: [[Multiple Choice]], [[Fill In]] und [[SCList]] (eine Tabelle mit Checkboxen). Die XML-Dateien der jeweiligen Fragetypen sind unterschiedlich und werden&lt;br /&gt;
in den folgenden Abschnitten detailliert erläutert. &lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
Das Grundgerüst einer solchen Stufendefinition ist jedoch immer ähnlich und weist für alle Fragetypen gemeinsame Tags &lt;br /&gt;
auf. Es hat die folgende Form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;exercise type=&amp;quot;&amp;quot; editor=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input condition=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;inputvalue name=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/input&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    {Stufenspezifischer Bereich}&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;advice&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt; Hinweistext &amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;/advice&amp;gt;&lt;br /&gt;
    &amp;lt;skipmessage&amp;gt; Nachricht zum Überspringen &amp;lt;/skipmessage&amp;gt;&lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;outputvalue value=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/output&amp;gt;	&lt;br /&gt;
  &amp;lt;/exercise&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gemeinsamen Tags haben die folgende Bedeutung:&lt;br /&gt;
* &#039;&#039;&#039;exercise:&#039;&#039;&#039; Das Wurzeltag einer jeden Stufendefinition. Es besitzt das Attribut &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, bei welchem der Fragetyp der jeweiligen Stufe einzutragen ist. Erlaubte Werte sind hier &amp;lt;code&amp;gt;mc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fillIn&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;sclist&amp;lt;/code&amp;gt;. Des weiteren kann man über das Attribut &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt; steuern, ob die Stufe einen [[Formeleditor]] bei Fill-In-Kästchen besitzen soll. Mögliche Werte sind &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; und der Name des jeweiligen Editors. Statt dem Attribut den Wert &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; zuzuordnen, kann es auch einfach weggelassen werden. Bei [[Fill In]]-Aufgaben können mittels des Attributs &amp;lt;code&amp;gt;suppressEmptyWarnings&amp;lt;/code&amp;gt; die automatischen Warnungen des Checkers bei leergelassenen Fill-In-Kästchen unterdrückt werden. Auch hier ist der Defaultwert des Attributs &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; und es akzeptiert die Werte &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Es gibt die Möglichkeit mithilfe des Attributs &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt; einen Formeleditor in eine Stage einzubinden. Eine ausführliche Beschreibung ist auf der Seite [[Formeleditor]] zu finden.&lt;br /&gt;
* &#039;&#039;&#039;input:&#039;&#039;&#039; In diesem Tag werden die Variablen definiert, die von der ExerciseChain übergeben werden. Für jeden Tag &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; muss ein Tag &amp;lt;code&amp;gt;inputvalue&amp;lt;/code&amp;gt; definiert werden. Gibt es keine &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;-Tags in der ExerciseChain, so bleibt dieses Tag leer, es muss jedoch zwingend vorhanden sein. Über das Attribut &amp;lt;code&amp;gt;condition&amp;lt;/code&amp;gt; kann außerdem eine Bedingung angegeben werden, die vom System geprüft werden soll. Will man bspw. eine Parabel &amp;lt;math&amp;gt;f(x) = ax^2 + bx + c&amp;lt;/math&amp;gt; mit Variablen &amp;lt;math&amp;gt;a,b,c&amp;lt;/math&amp;gt; definieren, so sollte &amp;lt;math&amp;gt;a \neq 0&amp;lt;/math&amp;gt; gelten. Ist die Bedingung nicht erfüllt, so wird die Aufgabe dem Studierenden nicht angezeigt und er erhält eine Fehlermeldung. Dieses Attribut kann auch weggelassen werden.&lt;br /&gt;
* &#039;&#039;&#039;inputvalue:&#039;&#039;&#039; Definiert eine [[Variablen|Variable]] für die lokale Variablenliste. Über das Attribut &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; wird der Name für die lokale Variablenliste bestimmt. Der Name muss dabei nicht mit dem Namen der Variable in der globalen Variablenliste übereinstimmen, es ist jedoch meist sinnvoll diesen beizubehalten. Außerdem wird über das Attribut &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; der Typ der Variable angegeben. Mögliche Werte bei diesem Attribut sind &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt; (für ganze Zahlen), &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; (für Dezimalzahlen), &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; (für sonstige Zeichenketten) und &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; für Mengen. Die Defaulteinstellung dieses Attributs ist &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;advice:&#039;&#039;&#039; Über das Tag &amp;lt;code&amp;gt;advice&amp;lt;/code&amp;gt; können Hinweise gegeben werden. Für jeden Hinweis muss ein Tag &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt; erzeugt werden. Der Studierende kann diese Hinweise über das Klicken des Hinweis-Buttons angezeigt bekommen.&lt;br /&gt;
* &#039;&#039;&#039;skipmessage:&#039;&#039;&#039; Hier kann eine Nachricht angegeben werden, die beim Überspringen der Aufgabenstufe angezeigt wird. Beispielsweise kann dem Studierenden hier die Lösung der übersprungenen Stufe erläutert werden. Gibt man der &#039;&#039;&#039;letzten&#039;&#039;&#039; Aufgabenstufe eine &amp;lt;code&amp;gt;&amp;lt;skipmessage&amp;gt;&amp;lt;/code&amp;gt;, zeigt der Überspringen-Button stattdessen &#039;&#039;&#039;Lösung anzeigen&#039;&#039;&#039; an, andernfalls wird der Button hier nicht angezeigt.&lt;br /&gt;
* &#039;&#039;&#039;output:&#039;&#039;&#039; Für jede Variable, die an die ExerciseChain zurückgegeben werden soll, muss in diesem Tag ein Tag vom Typ &amp;lt;code&amp;gt;outputvalue&amp;lt;/code&amp;gt; erstellt werden. Sollen keine Variablen zurückgegeben werden, so bleibt dieses Tag leer. Es muss jedoch zwingend vorhanden sein.&lt;br /&gt;
* &#039;&#039;&#039;outputvalue:&#039;&#039;&#039; Gibt eine Variable an die ExerciseChain zurück. Im Attribut &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; wird der Wert der Variable angegeben. Dieser Wert kann ein beliebiger String sein, den der [[Evaluator]] evaluieren kann. Möchte man eine studentische Eingabe bei einer Fill-In-Aufgabe zurückgeben, so kann man es mit &amp;lt;code&amp;gt;[pos=...]&amp;lt;/code&amp;gt; referenzieren. Dabei muss nach dem Gleichheitszeichen die Nummer des Fill-In-Kästchens eingetragen werden. JACK nummeriert die Fill-In-Kästchen beginnend mit 1. Das erste Fill-In-Kästchen wird also durch den Platzhalter &amp;lt;code&amp;gt;[pos=1]&amp;lt;/code&amp;gt; referenziert, usw. (s. auch die Erklärung zum Tag &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt; beim Fragetyp [[Fill In]]). Möchte man das Ankreuzmuster einer Multiple-Choice-Aufgabe zurückgeben, so belegt man das Attribut mit dem Wert &amp;lt;code&amp;gt;ticked&amp;lt;/code&amp;gt;. Über das Attribut &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; wird zudem analog zum Tag &amp;lt;code&amp;gt;inputvalue&amp;lt;/code&amp;gt; der Typ der Variable definiert.&lt;br /&gt;
&lt;br /&gt;
=== LaTeX-Umgebung ===&lt;br /&gt;
In Fragetexten, Antworten, Hinweisen und Feedback kann jederzeit die Matheumgebung von LaTeX verwendet werden. Dies geschieht, indem man einfach den LaTeX-Code eingefasst in &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;-Zeichen an der entsprechenden Stelle in das XML-Dokument schreibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039; ist jedoch, dass ein Fill-In-Kästchen niemals in einer Matheumgebung stehen und in Dropdown-Menüs kein LaTeX-Code stehen darf!&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
Bilder können ebenfalls an allen Stellen in Aufgaben eingepflegt werden. Dies geschieht im XML-Dokument über den Befehl &amp;lt;code&amp;gt;[img name=&amp;quot; &amp;quot;] DATEINAME.ENDUNG [/img]&amp;lt;/code&amp;gt;. Dabei muss DATEINAME.ENDUNG durch den richtigen Dateinamen des Bildes sowie die richtige Endung ersetzt werden. Über das Attribut &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; kann man dem Bild eine Unterschrift geben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Möchte man Bilder benutzen, die man nicht selbst erstellt hat, sollte man die Urheberrechte des Bildes prüfen!&lt;br /&gt;
&lt;br /&gt;
=== HTML ===&lt;br /&gt;
Man kann an beliebiger Stelle HTML verwenden. Dabei muss darauf geachtet werden, dass die entsprechenden Tags nicht von spitzen Klammern eingefasst sind (diese sind den XML-Tags vorbehalten), sondern durch die jeweilige XML-Notation ersetzt werden. Also &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Möchte man also beispielsweise seinen Text fett markieren, schreibt man nicht &amp;lt;code&amp;gt;&amp;amp;lt;b&amp;amp;gt;fett gedruckter Text&amp;amp;lt;/b&amp;amp;gt;&amp;lt;/code&amp;gt;, sondern &amp;lt;code&amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;fett gedruckter Text&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Graphen ===&lt;br /&gt;
Es besteht an den gleichen Stellen wie Bilder und Latex-Code auch die Möglichkeit, dynamisch (interaktive) Graphen mit Hilfe von Javascript zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;rarr; Hauptartikel:&#039;&#039; [[Graphen]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
	<entry>
		<id>https://wiki.uni-due.de/jack/index.php?title=IEEERemainder&amp;diff=2366</id>
		<title>IEEERemainder</title>
		<link rel="alternate" type="text/html" href="https://wiki.uni-due.de/jack/index.php?title=IEEERemainder&amp;diff=2366"/>
		<updated>2018-01-29T08:29:39Z</updated>

		<summary type="html">&lt;p&gt;Spobel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;IEEEremainder&#039;&#039; berechnet die Remainder-Operation auf zwei Argumente, wie es in dem IEEE 745 Standtard beschrieben ist [https://de.wikipedia.org/wiki/IEEE_754#Aritmetik_und_Quadratwurzel]. Die Funktion erwartet zwei Zahlen und gibt das entsprechende Ergebnis zurück.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 IEEEremainder([[Gleitkommazahl]] f1, [[Gleitkommazahl]] f2)&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;f1&#039;&#039;&#039; - Zähler&lt;br /&gt;
* &#039;&#039;&#039;f2&#039;&#039;&#039; - Nenner&lt;br /&gt;
&lt;br /&gt;
=== Return Value ===&lt;br /&gt;
*Gibt den Rest-Wert zurück, wenn f1 durch f2 geteilt wird&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
==== Standardfälle ====&lt;br /&gt;
 IEEEremainder(4,2)   --&amp;gt; returns 0&lt;br /&gt;
 IEEEremainder(3,2)   --&amp;gt; returns -1&lt;br /&gt;
&lt;br /&gt;
==== Benutzung mit Variablen ====&lt;br /&gt;
 IEEEremainder([pos=1],[pos=2])&lt;br /&gt;
 IEEEremainder([var=a],[var=b])&lt;br /&gt;
&lt;br /&gt;
====JUnit Tests====&lt;br /&gt;
&amp;lt;span class=&amp;quot;mw-customtoggle-myDivision&amp;quot;&amp;gt;[Anzeigen]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-myDivision&amp;quot;&amp;gt;&lt;br /&gt;
@BeforeClass&lt;br /&gt;
public static void beforeTest() {&lt;br /&gt;
	&lt;br /&gt;
		fillInVariableMap.put(1, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;0&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		fillInVariableMap.put(2, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;20&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		fillInVariableMap.put(3, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;-10&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
		exerciseVariableMap.put(&amp;quot;a&amp;quot;, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;0&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		exerciseVariableMap.put(&amp;quot;b&amp;quot;, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;20&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
		exerciseVariableMap.put(&amp;quot;c&amp;quot;, OMConverter.toObject(&amp;quot;&amp;lt;OMOBJ&amp;gt;&amp;lt;OMI&amp;gt;-10&amp;lt;/OMI&amp;gt;&amp;lt;/OMOBJ&amp;gt;&amp;quot;));&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder1() {&lt;br /&gt;
	assertEquals(-1, Evaluator.getNumberResult(&amp;quot;IEEEremainder(3, 2)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder2() {&lt;br /&gt;
	assertEquals(0, Evaluator.getNumberResult(&amp;quot;IEEEremainder(4, 2)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder3() {&lt;br /&gt;
	assertEquals(1, Evaluator.getNumberResult(&amp;quot;IEEEremainder(10, 3)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder4() {&lt;br /&gt;
	assertEquals(-1, Evaluator.getNumberResult(&amp;quot;IEEEremainder(11, 3)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder5() {&lt;br /&gt;
	assertEquals(-1, Evaluator.getNumberResult(&amp;quot;IEEEremainder(27, 4)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainder6() {&lt;br /&gt;
	assertEquals(-2, Evaluator.getNumberResult(&amp;quot;IEEEremainder(28, 5)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test // It returns for Example 1.800000000XXX not 1.8&lt;br /&gt;
public void testIEEERemainderWithPointNumberResults1() {&lt;br /&gt;
	assertEquals(1.8, Evaluator.getNumberResult(&amp;quot;IEEEremainder(17.8, 4)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.00001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithPointNumberResults2() {&lt;br /&gt;
	assertEquals(1.4, Evaluator.getNumberResult(&amp;quot;IEEEremainder(17.8, 4.1)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0.00001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithPointNumberResults3() {&lt;br /&gt;
	assertEquals(0.1,&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;IEEEremainder(-16.3, 4.1)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.00001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithPointNumberResults4() {&lt;br /&gt;
	assertEquals(1.4,&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;IEEEremainder(17.8, -4.1)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.00001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithPointNumberResults5() {&lt;br /&gt;
	assertEquals(-1.4,&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;IEEEremainder(-17.8, -4.1)&amp;quot;, exerciseVariableMap, fillInVariableMap), 0.00001);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithInput1() {&lt;br /&gt;
	assertEquals(0, Evaluator.getNumberResult(&amp;quot;IEEEremainder([pos=1], 4)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithInput2() {&lt;br /&gt;
	assertEquals(0,&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;IEEEremainder([pos=2], [pos=3])&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithVariables1() {&lt;br /&gt;
	assertEquals(0, Evaluator.getNumberResult(&amp;quot;IEEEremainder([var=a], 4)&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithVariables2() {&lt;br /&gt;
	assertEquals(0,&lt;br /&gt;
			Evaluator.getNumberResult(&amp;quot;IEEEremainder([var=b], [var=c])&amp;quot;, exerciseVariableMap, fillInVariableMap),&lt;br /&gt;
			0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithExpressions1() {&lt;br /&gt;
	assertEquals(0, Evaluator.getNumberResult(&amp;quot;IEEEremainder(&#039;15&#039;, &#039;IEEEremainder(10, 3)&#039;)&amp;quot;, exerciseVariableMap,&lt;br /&gt;
			fillInVariableMap), 0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testIEEERemainderWithExpressions2() {&lt;br /&gt;
	assertEquals(0, Evaluator.getNumberResult(&amp;quot;IEEEremainder(&#039;IEEEremainder(10, 3)&#039;, &#039;IEEEremainder(10, 3)&#039;)&amp;quot;,&lt;br /&gt;
			exerciseVariableMap, fillInVariableMap), 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentTypeException.class)&lt;br /&gt;
public void testIEEERemainderWithWrongInputCharacter() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(17.8, a)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)&lt;br /&gt;
public void testIEEERemainderWithOneArgument() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(8)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)&lt;br /&gt;
public void testIEEERemainderWithThreeArguments() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(3, 2, 8)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = UndefinedExerciseVariableException.class)&lt;br /&gt;
public void testIEEERemainderWithMissingExerciseVariable() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(&#039;[var=j]&#039;, &#039;3&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = UndefinedFillInVariableException.class)&lt;br /&gt;
public void testIEEERemainderWithMissingInput() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(&#039;[pos=42]&#039;, &#039;3&#039;)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test(expected = FunctionInvalidArgumentException.class)&lt;br /&gt;
public void testIEEERemainderAtZero() {&lt;br /&gt;
	Evaluator.getNumberResult(&amp;quot;IEEEremainder(5, 0)&amp;quot;, exerciseVariableMap, fillInVariableMap);&lt;br /&gt;
	fail();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Evaluatorfunktion]]&lt;/div&gt;</summary>
		<author><name>Spobel</name></author>
	</entry>
</feed>