Ifthenelse: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''ifthenelse'' wählt zwischen zwei Zeichenketten, abhängig vom logischen Wahrheitsgehalt einer gegebenen Aussage. Als Aussage sind rationale Zahlen, sowie mathematische Terme und Un-/Gleichungen zulässig. Zahlen ungleich 0 werden als ''wahr'', 0 wird zu ''falsch'' ausgewertet.
Die Funktion ''ifthenelse'' wählt zwischen zwei Zeichenketten, abhängig vom logischen Wahrheitsgehalt einer gegebenen Aussage. Als Aussage sind rationale Zahlen, sowie mathematische Terme und Un-/Gleichungen zulässig. Zahlen ungleich 0 werden als ''wahr'', 0 wird zu ''falsch'' ausgewertet.
Zeile 5: Zeile 8:


=== Syntax ===
=== Syntax ===
  ifthenelse(String aussage, String wahrAussage, String falschAussage)
  ifthenelse([[Boolean]] aussage, wahrAussage, falschAussage)


=== Parameter ===
=== Parameter ===
* '''aussage''' -  logisch auzuwertende Aussage
* '''aussage''' -  logisch auzuwertende Aussage
* '''wahrAussage''' - String, der im Falle einer wahren Aussage zurückgegeben wird
* '''wahrAussage''' - wird im Falle einer wahren Aussage zurückgegeben (Funktion|Object)
* '''falschAussage''' - String, der im Falle einer falschen Aussage zurückgegeben wird
* '''falschAussage''' - wird im Falle einer falschen Aussage zurückgegeben (Funktion|Object)


=== Return Value ===
=== Return Value ===
Zeile 17: Zeile 20:
=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  ifthenelse('1','wahr','falsch')  --> returns wahr
'''Jack2:'''
  ifthenelse('5*2+5==5*3','a','b')  --> returns a
  ifthenelse('1', 'wahr', 'falsch')  --> returns 'wahr'
 
==== Benutzung von Variablen ====
  ifthenelse('5*2+5==5*3', 'a', 'b')  --> returns a
ifthenelse('[pos=1]','then','else')
ifthenelse('15','[var=a]','text')
 
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("1"));
  placeFillInVariable(3, OMParser.parse("test"));
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("1"));
  placeExerciseVariable("c", OMParser.parse("test"));
}
 
@Test
public void testIfthenelse(){
  assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(0, 'then', 'else')")));
  assertTrue("'then'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 'then', 'else')")));
  assertTrue("'five'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(5.7, 'five', 'notFive')")));
}
 
@Test
public void testIfthenelseWithInput(){
  assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([pos=1], 'then', 'else')")));
  assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, '[pos=3]', 'else')")));
  assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([pos=2], '[pos=3]', 'notFive')")));
}
 
@Test
public void testIfthenelseWithVariables(){
  assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([var=a], 'then', 'else')")));
  assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, '[var=c]', 'else')")));
  assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([var=b], '[var=c]', 'notFive')")));
}


@Test
'''Jack3:'''
public void testIfthenelseWithExpressions(){
ifthenelse(1, 'wahr', 'falsch')   --> returns 'wahr'
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse('5*2 +5 == 5*3', 'a', 'b')")));
  assertTrue("'b'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse('ifthenelse(0, '1', '0')', 'a', 'b')")));
ifthenelse(5*2+5==5*3, 4, 5)   --> returns 4
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testIfthenelseWithWrongInputCharacter(){
  getEvaluator().getResultAsEvaluatorString("ifthenelse(a, 'a', 'b')");
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
==== Benutzung mit Variablen ====
public void testIfthenelseWithTwoRationalAndOneTextArgument(){
'''Jack2:'''
  getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 0, 'b')");
ifthenelse('15', '[var=a]', 'text')   --> returns Inhalt von [var=a]
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
'''Jack3:'''
public void testIfthenelseWithThreeRationalArguments(){
ifthenelse(1, [var=a], 'text')   --> returns Inhalt von [var=a]
  getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 0, 7)");
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
==== Benutzung mit studentischen Eingaben ====
public void testIfthenelseWithOneArgument(){
'''Jack2:'''
  getEvaluator().getResultAsEvaluatorString("ifthenelse(1)");
ifthenelse('[pos=1]', 'then', 'else')
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIfthenelseWithTwoArguments(){
  getEvaluator().getResultAsEvaluatorString("ifthenelse(0, 'this')");
}


@Test(expected=UndefinedExerciseVariableException.class)
'''Jack3:'''
public void testIfthenelseWithMissingExerciseVariable(){
ifthenelse([input=field1], 'then', 'else')
  getEvaluator().getResultAsEvaluatorString("ifthenelse('[var=j]', 'a', 'b')");
}


@Test(expected=UndefinedFillInVariableException.class)
public void testIfthenelseWithMissingInput(){
  getEvaluator().getResultAsEvaluatorString("ifthenelse('[pos=42]', 'a', 'b')");
}
</syntaxhighlight>
=== Hinweise ===
=== Hinweise ===
* Zahlen ungleich 0 werden zu ''wahr'' ausgewertet.
* '''Jack2:''' Zahlen ungleich 0 werden zu ''wahr'' ausgewertet.
* '''Jack3:''' 0 wird zu ''false'' ausgewertet, 1 wird zu ''true'' ausgewertet.


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

Aktuelle Version vom 17. April 2024, 08:57 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion ifthenelse wählt zwischen zwei Zeichenketten, abhängig vom logischen Wahrheitsgehalt einer gegebenen Aussage. Als Aussage sind rationale Zahlen, sowie mathematische Terme und Un-/Gleichungen zulässig. Zahlen ungleich 0 werden als wahr, 0 wird zu falsch ausgewertet.

Die Funktion erwartet eine Aussage, die sich zu wahr oder falsch auswerten lässt, einen String, der zurückgegeben wird, falls die Aussage wahr ist, und einen String, der zurückgegeben wird, falls die Aussage falsch ist. Es wird ein String zurückgegeben.

Syntax

ifthenelse(Boolean aussage, wahrAussage, falschAussage)

Parameter

  • aussage - logisch auzuwertende Aussage
  • wahrAussage - wird im Falle einer wahren Aussage zurückgegeben (Funktion|Object)
  • falschAussage - wird im Falle einer falschen Aussage zurückgegeben (Funktion|Object)

Return Value

  • Gibt einen String zurück

Beispiele

Standardfälle

Jack2:
ifthenelse('1', 'wahr', 'falsch')   --> returns 'wahr'

ifthenelse('5*2+5==5*3', 'a', 'b')   --> returns a
Jack3:
ifthenelse(1, 'wahr', 'falsch')    --> returns 'wahr'

ifthenelse(5*2+5==5*3, 4, 5)    --> returns 4

Benutzung mit Variablen

Jack2:
ifthenelse('15', '[var=a]', 'text')    --> returns Inhalt von [var=a]
Jack3:
ifthenelse(1, [var=a], 'text')    --> returns Inhalt von [var=a]

Benutzung mit studentischen Eingaben

Jack2:
ifthenelse('[pos=1]', 'then', 'else')
Jack3:
ifthenelse([input=field1], 'then', 'else')

Hinweise

  • Jack2: Zahlen ungleich 0 werden zu wahr ausgewertet.
  • Jack3: 0 wird zu false ausgewertet, 1 wird zu true ausgewertet.