Equal: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
===Beschreibung===
===Beschreibung===
Die Funktionen ''equal'' vergleicht zwei Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion ''true'' zurück, ansonsten ''false''.
Die Funktionen ''equal'' vergleicht zwei math. Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion ''true'' zurück, ansonsten ''false''.


===Syntax===
===Syntax===
a == b
  a == b
  equal(a,b)


===Parameter===
===Parameter===
* '''a''' - [[Zeichenkette]] oder [[Gleitkommazahl]]
* '''a''' - [[Ausdruck]] oder [[Gleitkommazahl]]
* '''b''' - [[Zeichenkette]] oder [[Gleitkommazahl]]
* '''b''' - [[Ausdruck]] oder [[Gleitkommazahl]]


===Return Value===
===Return Value===
Zeile 13: Zeile 17:


===Beispiele===
===Beispiele===
  <math>2+3==5</math>    --> returns ''true''
==== Standardfälle ====
  2+3 == 5   --> returns ''true''
equal(4+3,7)   --> returns ''true''


'world of math' == 'world of math'    --> returns ''true''
==== Benutzung mit Variablen ====


====JUnit Tests====
[var=a] == [var=b]
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
equal([var=a], [var=b])
@BeforeClass
public static void beforeTest() throws FunctionNotImplementedException, UndefinedFillInVariableException,
UndefinedExerciseVariableException, ParserException, ErroneousFillInVariableException, ErroneousExerciseVariableException {
equalFillInVariableMap.put(1, ExpressionParser.parse("7", null, null));
equalFillInVariableMap.put(2, ExpressionParser.parse("2", null, null));


equalExerciseVariableMap.put("a", ExpressionParser.parse("7", null, null));
==== Benutzung mit studentischen Eingaben ====
equalExerciseVariableMap.put("b", ExpressionParser.parse("2", null, null));
}


@Test
'''Jack2:'''
public void testEqual0() {
[pos=1] == 3
assertTrue(Evaluator.getBooleanResult("1 == 1.0", equalExerciseVariableMap, equalFillInVariableMap));
equal([pos=1], 3)
}


@Test
'''Jack3:'''
public void testEqual1() {
[input=fillin1] == 3
assertTrue(Evaluator.getBooleanResult("1/2 == 0.5", equalExerciseVariableMap, equalFillInVariableMap));
equal([input=fillin1], 3)
}


@Test
===Hinweise===
public void testEqual2() {
* Die Funktion ''equal'' ist ein Alias für [[equalsExpr]].
assertTrue(Evaluator.getBooleanResult("0.7 == 7/10", equalExerciseVariableMap, equalFillInVariableMap));
* Die Funktion ''equal'' wird mit Hilfe von Sage evaluiert. Es wird <code>\(bool(arg1==arg2)\)</code> in Sage berechnet.
}
* Mit Strings kann die Funktion ''equal'' nicht umgehen, da String keine Sage-Repräsentation hat, es dürfen also keine Strings in dieser Funktion verwendet werden.
 
* Als Ausdrücke sind insbesondere auch die Komplexen Zahlen erlaubt. Eine Beschreibung der Vorschrift kann [[:Kategorie:Relationaler_Operator#Besonderheiten|hier]] gefunden werden.
@Test
* Die Funktion ''equal'' kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. \(2+3\).
public void testEqual3() {
* Diese Funktion ist ein binärer Operator, sogar ein relationaler Operator.
assertTrue(Evaluator.getBooleanResult("4/2 == 2", equalExerciseVariableMap, equalFillInVariableMap));
* 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.
 
@Test
public void testEqual4() {
assertTrue(Evaluator.getBooleanResult("'world of math' == 'world of math'", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqual5() {
assertTrue(Evaluator.getBooleanResult("'' == ''", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqual6() {
assertTrue(!Evaluator.getBooleanResult("'' == 1", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqual7() {
assertTrue(!Evaluator.getBooleanResult("1 = ''", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqual8() {
assertTrue(Evaluator.getBooleanResult("1 = '1'", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithVariables1() {
assertTrue(Evaluator.getBooleanResult("[var=a] == 7", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithVariables2() {
assertTrue(Evaluator.getBooleanResult("2 == [var=b]", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithInput1() {
assertTrue(Evaluator.getBooleanResult("[pos=1] == 7", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithInput2() {
assertTrue(Evaluator.getBooleanResult("2 == [pos=2]", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithEncapsulation1() {
assertTrue(!Evaluator.getBooleanResult("1 == (1 == 0)", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithEncapsulation2() {
assertTrue(!Evaluator.getBooleanResult("1 == (1 == (1 == 0))", equalExerciseVariableMap, equalFillInVariableMap));
}
 
@Test
public void testEqualWithEncapsulation3() {
assertTrue(!Evaluator.getBooleanResult("1 == (1 == (1 == (1 == (1 == 0))))", equalExerciseVariableMap, equalFillInVariableMap));
}


@Test
public void testEqualWithEncapsulation4() {
assertTrue(Evaluator.getBooleanResult("1 == (1 == (1 == (1 == (1 == 1))))", equalExerciseVariableMap, equalFillInVariableMap));
}
@Test
public void testEqualWithEncapsulation5() {
assertTrue(!Evaluator.getBooleanResult("((((1 == 0) == 1) == 1) == 1) == 1", equalExerciseVariableMap, equalFillInVariableMap));
}
@Test
public void testEqualWithEncapsulation6() {
assertTrue(Evaluator.getBooleanResult("((((1 == 1) == 1) == 1) == 1) == 1", equalExerciseVariableMap, equalFillInVariableMap));
}
@Test(expected=ParserException.class)
public void testEqualWithWrongInputCharacter() {
Evaluator.getBooleanResult("1 == ab", equalExerciseVariableMap, equalFillInVariableMap);
fail();
}
@Test (expected=UndefinedExerciseVariableException.class)
public void testEqualWithMissingExcerciseVariable() {
Evaluator.getBooleanResult("[var=j] == 2", equalExerciseVariableMap, equalFillInVariableMap);
fail();
}
@Test (expected=UndefinedFillInVariableException.class)
public void testEqualWithMissingInput() {
Evaluator.getBooleanResult("[pos=42] == 2", equalExerciseVariableMap, equalFillInVariableMap);
fail();
}
</syntaxhighlight>
===Hinweise===
* Die Funktion ''equal'' kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. 2+3.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]][[Category:Operator]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 18. April 2024, 11:27 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktionen equal vergleicht zwei math. Ausdrücke auf Gleichheit miteinander. Wenn die beiden Ausdrücke übereinstimmen gibt die Funktion true zurück, ansonsten false.

Syntax

 a == b
 equal(a,b)

Parameter

Return Value

  • Gibt einen Boolean zurück.

Beispiele

Standardfälle

2+3 == 5    --> returns true

equal(4+3,7)    --> returns true

Benutzung mit Variablen

[var=a] == [var=b]

equal([var=a], [var=b])

Benutzung mit studentischen Eingaben

Jack2:
[pos=1] == 3
equal([pos=1], 3)
Jack3:
[input=fillin1] == 3
equal([input=fillin1], 3)

Hinweise

  • Die Funktion equal ist ein Alias für equalsExpr.
  • Die Funktion equal wird mit Hilfe von Sage evaluiert. Es wird \(bool(arg1==arg2)\) in Sage berechnet.
  • Mit Strings kann die Funktion equal nicht umgehen, da String keine Sage-Repräsentation hat, es dürfen also keine Strings in dieser Funktion verwendet werden.
  • Als Ausdrücke sind insbesondere auch die Komplexen Zahlen erlaubt. Eine Beschreibung der Vorschrift kann hier gefunden werden.
  • Die Funktion equal kann auch mit einfachen mathematischen Operationen umgehen, wie z.B. \(2+3\).
  • Diese Funktion ist ein binärer Operator, sogar ein relationaler Operator.
  • 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.