CountBasicOperations: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''countBasicOperations'' zählt die Anzahl der Basisoperationen, die in einem Term verwendet werden. Die Funktion erwartet einen String und gibt eine Zahl zurück.
Die Funktion ''countBasicOperations'' zählt die Anzahl der Basisoperationen, die in einem Term verwendet werden. Die Funktion erwartet einen String und gibt eine Zahl zurück.
Zeile 12: Zeile 15:


=== Beispiele ===
=== Beispiele ===
countBasicOperations('2*3+5')  --> returns 2
==== Standardfälle ====
 
'''Jack2:'''
====JUnit Tests====
countBasicOperations('2*3+5')   --> returns 2
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@Test
public void testCountBasicOperations1() {
assertEquals(4,
Evaluator.getNumberResult("countBasicOperations('2+3*5/10-3')", exerciseVariableMap, fillInVariableMap),
0.0);
}
 
@Test
public void testCountBasicOperations2() {
assertEquals(0,
Evaluator.getNumberResult("countBasicOperations('-2.1')", exerciseVariableMap, fillInVariableMap), 0.0);
}
 
@Test
public void testCountBasicOperations3() {
assertEquals(1,
Evaluator.getNumberResult("countBasicOperations('-32+12')", exerciseVariableMap, fillInVariableMap),
0.0);
}
 
@Test
public void testCountBasicOperations4() {
assertEquals(2,
Evaluator.getNumberResult("countBasicOperations('0+0-0')", exerciseVariableMap, fillInVariableMap),
0.0);
}
 
@Test
public void testCountBasicOperations5() {
assertEquals(1, Evaluator.getNumberResult("countBasicOperations('+', '-32+12-5-4/2-2*3')", exerciseVariableMap,
fillInVariableMap), 0.0);
}
 
@Test
public void testCountBasicOperations6() {
assertEquals(3, Evaluator.getNumberResult("countBasicOperations('-', '-32+12-5-4/2-2*3')", exerciseVariableMap,
fillInVariableMap), 0.0);
}
 
@Test
public void testCountBasicOperations7() {
assertEquals(1, Evaluator.getNumberResult("countBasicOperations('*', '-32+12-5-4/2-2*3')", exerciseVariableMap,
fillInVariableMap), 0.0);
}
 
@Test
public void testCountBasicOperations8() {
assertEquals(1, Evaluator.getNumberResult("countBasicOperations('/', '-32+12-5-4/2-2*3')", exerciseVariableMap,
fillInVariableMap), 0.0);
}
 
@Test
public void testCountBasicOperationsWithInput() {
assertEquals(2, Evaluator.getNumberResult("countBasicOperations('+', '[pos=2]+[pos=2]+[pos=2]')",
exerciseVariableMap, fillInVariableMap), 0.0);
}


@Test
'''Jack3:'''
public void testCountBasicOperationsWithVariables() {
countBasicOperations(2*3+5)   --> returns 2
assertEquals(2, Evaluator.getNumberResult("countBasicOperations('*', '[var=b]*[var=b]*[var=b]')",
exerciseVariableMap, fillInVariableMap), 0.0);
countBasicOperations(4:2)   --> returns 1
}


@Test(expected = ParserException.class)
==== Benutzung mit Variablen ====
public void testCountBasicOperationsWithWrongInputTwoCharacters() {
countBasicOperations([var=a])
Evaluator.getNumberResult("countBasicOperations(ab, ab)", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test//(expected = FunctionInvalidNumberOfArgumentsException.class) //This test works now, because 5 is seen as Expression! with 0 Basic Operators
==== Benutzung mit studentischen Eingaben ====
public void testCountBasicOperationsWithWrongInputOneRational() {
'''Jack2:'''
assertEquals(0, Evaluator.getNumberResult("countBasicOperations(5)", exerciseVariableMap, fillInVariableMap), 0);
countBasicOperations([pos=1])
}


@Test(expected = FunctionInvalidArgumentTypeException.class)
'''Jack3:'''
public void testCountBasicOperationsWithTwoRationalArguments() {
countBasicOperations([input=field1])
Evaluator.getNumberResult("countBasicOperations(2, 2)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testCountBasicOperationsThreeArguments() {
Evaluator.getNumberResult("countBasicOperations('a', 'a', 'a')", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = UndefinedExerciseVariableException.class)
public void testCountBasicOperationsWithMissingExerciseVariable() {
Evaluator.getNumberResult("countBasicOperations('[var=j]', '2+1')", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = UndefinedFillInVariableException.class)
public void testCountBasicOperationsWithMissingInput() {
Evaluator.getNumberResult("countBasicOperations('[pos=42]', '4-1*8')", exerciseVariableMap, fillInVariableMap);
fail();
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Basisoperationen sind hierbei Addition, Subtraktion, Multiplikation und Division.
* Basisoperationen sind hierbei Addition, Subtraktion, Multiplikation und Division.
 
* Für die Division muss ":" geschrieben werden, "/" wird nicht als Division erkannt.
[[Kategorie:Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]]
* Bei der Verwendung von mathematischen Variablen muss darauf geachtet werden das alle Operationen ausgeschrieben werden, z.B. 3*x anstatt 3x.
* 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:Math-Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 16. April 2024, 07:00 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion countBasicOperations zählt die Anzahl der Basisoperationen, die in einem Term verwendet werden. Die Funktion erwartet einen String und gibt eine Zahl zurück.

Syntax

countBasicOperations(Ausdruck term)

Parameter

  • term - Term dessen Basisoperationen gezählt werden

Return Value

  • Gibt eine Ganzzahl zurück

Beispiele

Standardfälle

Jack2:
countBasicOperations('2*3+5')    --> returns 2
Jack3:
countBasicOperations(2*3+5)    --> returns 2

countBasicOperations(4:2)    --> returns 1

Benutzung mit Variablen

countBasicOperations([var=a])

Benutzung mit studentischen Eingaben

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

Hinweise

  • Basisoperationen sind hierbei Addition, Subtraktion, Multiplikation und Division.
  • Für die Division muss ":" geschrieben werden, "/" wird nicht als Division erkannt.
  • Bei der Verwendung von mathematischen Variablen muss darauf geachtet werden das alle Operationen ausgeschrieben werden, z.B. 3*x anstatt 3x.
  • 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.