CountNodes: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(16 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
 
Die Funktion ''countNodes'' zählt die Knoten des OpenMathObjektes.
Die Funktion ''countNodes'' ruft die Methode ''getNumberOfNodes'' des entsprechenden OpenMathObjektes auf und zählt die Knoten des OpenMathObjektes. (In den implementierten OpenMathObjekten ist jedoch diese Funktion nicht implementiert)


=== Syntax ===
=== Syntax ===
  countNodes(Expression argument)
  countNodes([[Ausdruck]] argument)


=== Parameter ===
=== Parameter ===
Zeile 13: Zeile 15:


=== Beispiele ===
=== Beispiele ===
==== Darstellung in OpenMath ====
\(3 \cdot 5 \)
<syntaxhighlight lang="xml">
<OMOBJ>
<OMA>
<OMS cd="arith1" name="times" />
<OMI>3</OMI>
<OMI>5</OMI>
</OMA>
</OMOBJ>
</syntaxhighlight>
\(3 \cdot 5 + 4 \)
<syntaxhighlight lang="xml">
<OMOBJ>
<OMA>
<OMS cd="arith1" name="plus" />
<OMA>
<OMS cd="arith1" name="times" />
<OMI>3</OMI>
<OMI>5</OMI>
</OMA>
<OMI>4</OMI>
</OMA>
</OMOBJ>
</syntaxhighlight>
==== Standardfälle ====
==== Standardfälle ====
'''Jack2:'''
countNodes(3*5)    --> returns 4
countNodes(3*5+4)    --> returns 7


'''Jack3:'''
countNodes(3*5)    --> returns 3
countNodes(3*5+4)    --> returns 5


==== Benutzung mit Variablen ====
==== Benutzung mit Variablen ====
countNodes([var=a])
==== Benutzung mit studentischen Eingaben ====
'''Jack2:'''
  countNodes([pos=1])
  countNodes([pos=1])
countNodes([var=a])


====JUnit Tests====
'''Jack3:'''
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
countNodes([input=field1])
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@Before
public void beforeTest() {
placeFillInVariable(1, OMParser.parse("0"));
placeFillInVariable(2, OMParser.parse("1"));
placeExerciseVariable("a", OMParser.parse("0"));
placeExerciseVariable("b", OMParser.parse("1"));
}
@Test
public void testCountNodes() {
assertTrue(4 == getEvaluator().getNumberResult("countNodes(2+2)"));
assertTrue(7 == getEvaluator().getNumberResult("countNodes(3*(2+2))"));
assertFalse(1 ==getEvaluator().getNumberResult("countNodes(2+2)"));
}
@Test
public void testCountNodesWithInput() {
assertTrue(1 == getEvaluator().getNumberResult("countNodes([pos=2])"));
assertTrue(7 == getEvaluator().getNumberResult("countNodes(3*([pos=1]+2))"));
}
@Test
public void testCountNodesWithVariables() {
assertTrue(1 == getEvaluator().getNumberResult("countNodes([var=a])"));
assertTrue(7 == getEvaluator().getNumberResult("countNodes(3*([var=a]+2))"));
}
@Test
public void testCountNodesWithExpressions() {
assertTrue(1 == getEvaluator().getNumberResult("countNodes('countNodes(2+2)')"));
}
@Test (expected=ParserMismatchException.class)
public void testCountNodesWithWrongInputCharacter() {
getEvaluator().getNumberResult("countNodes(a)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCountNodesWithTwoArguments() {
getEvaluator().getNumberResult("countNodes(3, 2)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCountNodesWithThreeArguments() {
getEvaluator().getNumberResult("countNodes(1, 2, 3)");
}
@Test (expected=UndefinedExerciseVariableException.class)
public void testCountNodesWithMissingExcerciseVariable() {
getEvaluator().getNumberResult("countNodes('[var=j]')");
}
@Test (expected=UndefinedFillInVariableException.class)
public void testCountNodesWithMissingInput() {
getEvaluator().getNumberResult("countNodes('[pos=42]')");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
*  
* Die Funktion ''countNodes'' wurde in Jack3 verbessert, sodass sie jetzt nur noch die tatsächliche Anzahl der Knoten zurück gibt. In Jack2 wird diese Funktion immer eine höhere Zahl zurückgeben, da diese dort fälschlicherweise noch interne Knoten zählt.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 10. September 2024, 13:02 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion countNodes zählt die Knoten des OpenMathObjektes.

Syntax

countNodes(Ausdruck argument)

Parameter

  • argument - die Expression, dessen Knoten gezählt werden sollen

Return Value

  • Gibt die Anzahl der Knoten zurück

Beispiele

Darstellung in OpenMath

\(3 \cdot 5 \)

<OMOBJ>
	<OMA>
		<OMS cd="arith1" name="times" />
			<OMI>3</OMI>
			<OMI>5</OMI>
	</OMA>
</OMOBJ>

\(3 \cdot 5 + 4 \)

<OMOBJ>
	<OMA>
		<OMS cd="arith1" name="plus" />
		<OMA>
			<OMS cd="arith1" name="times" />
			<OMI>3</OMI>
			<OMI>5</OMI>
		</OMA>
		<OMI>4</OMI>
	</OMA>
</OMOBJ>

Standardfälle

Jack2:
countNodes(3*5)    --> returns 4
countNodes(3*5+4)    --> returns 7
Jack3:
countNodes(3*5)    --> returns 3
countNodes(3*5+4)    --> returns 5

Benutzung mit Variablen

countNodes([var=a])

Benutzung mit studentischen Eingaben

Jack2:
countNodes([pos=1])
Jack3:
countNodes([input=field1])

Hinweise

  • Die Funktion countNodes wurde in Jack3 verbessert, sodass sie jetzt nur noch die tatsächliche Anzahl der Knoten zurück gibt. In Jack2 wird diese Funktion immer eine höhere Zahl zurückgeben, da diese dort fälschlicherweise noch interne Knoten zählt.
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.