Equal: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(34 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
==== Vergleich mit ''equals'' und ''equalsExpr'' ====
public void testEqual2() {
assertTrue(Evaluator.getBooleanResult("0.7 == 7/10", equalExerciseVariableMap, equalFillInVariableMap));
}


@Test
Es werden die drei Funktion '''equal''', '''[[equalsExpr]]''' und '''[[equals]]''' in Zussammenhang gesetzt, welche Funktion in welcher Situation was zurückgibt. Dabei bekommen die Funktionen entweder einen String Ausdruck oder einen mathematischen Ausdruck als Eingabe. Die Ausgaben ''true'' und ''false'' bedeuten, dass die Eingaben ausgewertet werden können, ''error'' bedeutet, dass die Eingabe nicht ausgewertet kann und ein Fehler zurückgegeben wird.
public void testEqual3() {
assertTrue(Evaluator.getBooleanResult("4/2 == 2", equalExerciseVariableMap, equalFillInVariableMap));
}


@Test
{| class="wikitable"
public void testEqual4() {
|+ Ausdrücke ohne Operator
assertTrue(Evaluator.getBooleanResult("'world of math' == 'world of math'", equalExerciseVariableMap, equalFillInVariableMap));
|-
}
! Eingabe !! <span style="color:#6B8E23"> equal </span> / equalsExpr !! equals
|-
| String, String (Bsp.: 'hello','hello') || Error || True
|-
| String, String (Bsp.: '23','23') || Error || True
|-
| String, math (Bsp.: '23',23) || Error || True
|-
| math, String (Bsp.: 23,'23') || Error || True
|-
| math, math (Bsp.: 23,23) || True || True
|}


@Test
{| class="wikitable"
public void testEqual5() {
|+ Ausdrücke mit Operator
assertTrue(Evaluator.getBooleanResult("'' == ''", equalExerciseVariableMap, equalFillInVariableMap));
|-
}
! Eingabe !! <span style="color:#6B8E23"> equal </span> / equalsExpr !! equals
|-
| String, String (Bsp.: '2+3','3+2') || Error || False
|-
| String, String (Bsp.: '2+3','2+3') || Error || True
|-
| String, String (Bsp.: '2+3','5') || Error || False
|-
| String, String (Bsp.: 'sin(2)+sqrt(2)','sin(2)*1+sqrt(2)*1') || Error || False
|-
| String, math (Bsp.: '2+3',3+2) || Error || False
|-
| String, math (Bsp.: '2+3',2+3) || Error || False
|-
| String, math (Bsp.: '2+3',5) || Error || False
|-
| String, math (Bsp.: '5',2+3) || Error || True
|-
| String, math (Bsp.: 'sin(2)+sqrt(2)',sin(2)*1+sqrt(2)*1) || Error || False
|-
| math, math (Bsp.: 2+3,3+2) || True || True
|-
| math, math (Bsp.: sin(2)+sqrt(2),sin(2)*1+sqrt(2)*1) || True || True
|-
| math, math (Bsp.: 3.7,37/10) || True || False
|}


@Test
{| class="wikitable"
public void testEqual6() {
|+ Ausdrücke mit Operator und Variablen
assertTrue(!Evaluator.getBooleanResult("'' == 1", equalExerciseVariableMap, equalFillInVariableMap));
|-
}
! Eingabe !! <span style="color:#6B8E23"> equal </span> / equalsExpr !! equals
|-
| String, String (Bsp.: '2x','2x') || Error || True
|-
| String, String (Bsp.: 'x+y','y+x') || Error || False
|-
| String, math (Bsp.: '2x',2x) || Error || True
|-
| String, math (Bsp.: 'x+y',y+x) || Error || True
|-
| String, math (Bsp.: '5y',2y+3*y) || Error || True
|-
| math, math (Bsp.: 5x+3x,8*x) || True || True
|-
| math, math (Bsp.: 5x+3x,3x+5x) || True || True
|-
| math, math (Bsp.: sin(x),sin(x)*1) || True || True
|}


@Test
===Hinweise===
public void testEqual7() {
* Die Funktion ''equal'' ist ein Alias für [[equalsExpr]].
assertTrue(!Evaluator.getBooleanResult("1 = ''", 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.
* 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.


@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 8. Juli 2024, 13: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)

Vergleich mit equals und equalsExpr

Es werden die drei Funktion equal, equalsExpr und equals in Zussammenhang gesetzt, welche Funktion in welcher Situation was zurückgibt. Dabei bekommen die Funktionen entweder einen String Ausdruck oder einen mathematischen Ausdruck als Eingabe. Die Ausgaben true und false bedeuten, dass die Eingaben ausgewertet werden können, error bedeutet, dass die Eingabe nicht ausgewertet kann und ein Fehler zurückgegeben wird.

Ausdrücke ohne Operator
Eingabe equal / equalsExpr equals
String, String (Bsp.: 'hello','hello') Error True
String, String (Bsp.: '23','23') Error True
String, math (Bsp.: '23',23) Error True
math, String (Bsp.: 23,'23') Error True
math, math (Bsp.: 23,23) True True
Ausdrücke mit Operator
Eingabe equal / equalsExpr equals
String, String (Bsp.: '2+3','3+2') Error False
String, String (Bsp.: '2+3','2+3') Error True
String, String (Bsp.: '2+3','5') Error False
String, String (Bsp.: 'sin(2)+sqrt(2)','sin(2)*1+sqrt(2)*1') Error False
String, math (Bsp.: '2+3',3+2) Error False
String, math (Bsp.: '2+3',2+3) Error False
String, math (Bsp.: '2+3',5) Error False
String, math (Bsp.: '5',2+3) Error True
String, math (Bsp.: 'sin(2)+sqrt(2)',sin(2)*1+sqrt(2)*1) Error False
math, math (Bsp.: 2+3,3+2) True True
math, math (Bsp.: sin(2)+sqrt(2),sin(2)*1+sqrt(2)*1) True True
math, math (Bsp.: 3.7,37/10) True False
Ausdrücke mit Operator und Variablen
Eingabe equal / equalsExpr equals
String, String (Bsp.: '2x','2x') Error True
String, String (Bsp.: 'x+y','y+x') Error False
String, math (Bsp.: '2x',2x) Error True
String, math (Bsp.: 'x+y',y+x) Error True
String, math (Bsp.: '5y',2y+3*y) Error True
math, math (Bsp.: 5x+3x,8*x) True True
math, math (Bsp.: 5x+3x,3x+5x) True True
math, math (Bsp.: sin(x),sin(x)*1) True True

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.