Variablen (JACK3): Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
(Neue Seite für JACK3-Variablen)
 
K (Syntax-Highlighting behoben)
Zeile 9: Zeile 9:
Aufgaben-Variablen werden innerhalb der [[Variablenkonfiguration (JACK3)|Variablenkonfiguration]] einer Aufgabe definiert und mit einem initialen Wert belegt. Sie können durch [[Variablenupdates (JACK3)|Variablenupdates]] bei bestimmten Events geändert werden und stehen nur während der Bearbeitung dieser Aufgabe zur Verfügung.
Aufgaben-Variablen werden innerhalb der [[Variablenkonfiguration (JACK3)|Variablenkonfiguration]] einer Aufgabe definiert und mit einem initialen Wert belegt. Sie können durch [[Variablenupdates (JACK3)|Variablenupdates]] bei bestimmten Events geändert werden und stehen nur während der Bearbeitung dieser Aufgabe zur Verfügung.


Beispiel:<syntaxhighlight>
Beispiel:
<pre>
a = randomIntegerBetween(1,10)
a = randomIntegerBetween(1,10)
b = 15
b = 15
</syntaxhighlight>Nach der Initialisierung enthält die Aufgaben-Variable "a" einen zufälligen Wert zwischen 1 und 10 und "b" den Wert 15. Diese Variable kann in der Aufgabe (z.B. in Feedbackregeln, Feedback oder dem Aufgabentext) nun mit <code>[var=a]</code> verwendet werden. Als Wert der Variablen sind sowohl Konstanten als auch (komplexere) [[Evaluator#Funktionen|Evaluator-Ausdrücke]] möglich.
</pre>
Nach der Initialisierung enthält die Aufgaben-Variable "a" einen zufälligen Wert zwischen 1 und 10 und "b" den Wert 15. Diese Variable kann in der Aufgabe (z.B. in Feedbackregeln, Feedback oder dem Aufgabentext) nun mit <code>[var=a]</code> verwendet werden. Als Wert der Variablen sind sowohl Konstanten als auch (komplexere) [[Evaluator#Funktionen|Evaluator-Ausdrücke]] möglich.


=== Eingabe-Variablen (input) ===
=== Eingabe-Variablen (input) ===
Diese Variablen enthalten innerhalb eines Aufgabenteils die Eingabe von Studierenden. Wie die Variablen heißen und was sie enthalten, hängt vom jeweiligen Typ des Aufgabenteils ab. Mithilfe von Eingabe-Variablen lässt sich z.B. prüfen, ob die Eingabe korrekt war bzw. ob das eingegebene Ergebnis einer Musterlösung entspricht.
Diese Variablen enthalten innerhalb eines Aufgabenteils die Eingabe von Studierenden. Wie die Variablen heißen und was sie enthalten, hängt vom jeweiligen Typ des Aufgabenteils ab. Mithilfe von Eingabe-Variablen lässt sich z.B. prüfen, ob die Eingabe korrekt war bzw. ob das eingegebene Ergebnis einer Musterlösung entspricht.


Beispiel 1: In einer Fill-In-Stufe heißen die Variablen wie das Feld. Der folgende Ausdruck prüft, ob im Feld "feld1" die 42 eingegeben wurde:<syntaxhighlight>
Beispiel 1: In einer Fill-In-Stufe heißen die Variablen wie das Feld. Der folgende Ausdruck prüft, ob im Feld "feld1" die 42 eingegeben wurde:
<pre>
[input=feld1]==42
[input=feld1]==42
</syntaxhighlight>Beispiel 2: Die Variable "a" wurde wie oben initialisiert. Der folgende Ausdruck prüft, ob die in das Feld die Quadratzahl eingegeben wurde:<syntaxhighlight>
</pre>
Beispiel 2: Die Variable "a" wurde wie oben initialisiert. Der folgende Ausdruck prüft, ob die in das Feld die Quadratzahl eingegeben wurde:
<pre>
[input=feld1]==pow([var=a],2)
[input=feld1]==pow([var=a],2)
</syntaxhighlight>Die Inhalte der Variablen können nur gelesen, aber nicht verändert werden. Sollen die Inhalte zu einem anderen Zeitpunkt als in den Checks des Aufgabenteils verwendet werden, müssen sie durch passende [[Variablenupdates (JACK3)|Variablenupdates]] in Aufgabenvariablen kopiert werden.
</pre>Die Inhalte der Variablen können nur gelesen, aber nicht verändert werden. Sollen die Inhalte zu einem anderen Zeitpunkt als in den Checks des Aufgabenteils verwendet werden, müssen sie durch passende [[Variablenupdates (JACK3)|Variablenupdates]] in Aufgabenvariablen kopiert werden.


Beispiel 3: Um die Eingabe aus dem Feld in eine Variable zu kopieren, genügt der Ausdruck <code>[input=feld1]</code> im Inhalt des Variablenupdates.
Beispiel 3: Um die Eingabe aus dem Feld in eine Variable zu kopieren, genügt der Ausdruck <code>[input=feld1]</code> im Inhalt des Variablenupdates.
Zeile 62: Zeile 67:


=== Weitere Beispiele ===
=== Weitere Beispiele ===
<syntaxhighlight>
<pre>
[var=a]          => gibt den Wert der JACK-Variable a aus der Variablenkonfiguration zurück
[var=a]          => gibt den Wert der JACK-Variable a aus der Variablenkonfiguration zurück
[input=field1]    => Gibt den Wert des Eingabefeldes field1 zurück
[input=field1]    => Gibt den Wert des Eingabefeldes field1 zurück
[check=result]    => Gibt das Ergebnis des Checkers zurück
[check=result]    => Gibt das Ergebnis des Checkers zurück
[meta=stageHints] => Gibt die Anzahl der verwendeten Hinweise in einer Aufgabe zurück.
[meta=stageHints] => Gibt die Anzahl der verwendeten Hinweise in einer Aufgabe zurück
</syntaxhighlight>
</pre>


== Mathematische Variablen und Konstanten ==
== Mathematische Variablen und Konstanten ==

Version vom 3. Januar 2024, 14:44 Uhr

Um Aufgaben und Kurse zu parametrisieren (z.B. Feedback abhängig von der Eingabe, Aufgaben mit Zufallsvariablen), bietet JACK3 ein flexibles Variablenkonzept. Dieser Artikel beschreibt die unterschiedlichen Arten von Variablen, wie sie eingesetzt werden können und was es zu beachten gibt.

JACK-Variablen

Es stehen verschiedene Variablentypen zur Verfügung, die in Ausdrücken (z.B. in Feedbackregeln oder Stufenverknüpfungen) verwendet werden können. Alle JACK-Variablen werden mit [<type>=<name>] verwendet. Beim Testen einer Aufgabe und Ansehen einer Bearbeitung können die Variablen in den Debug-Optionen eingesehen werden.

Bieten Aufgabenteil-Typen bestimmte Variablen an, sind diese im Abschnitt "Variablen" des jeweiligen Artikels aufgelistet.

Aufgaben-Variablen (var)

Aufgaben-Variablen werden innerhalb der Variablenkonfiguration einer Aufgabe definiert und mit einem initialen Wert belegt. Sie können durch Variablenupdates bei bestimmten Events geändert werden und stehen nur während der Bearbeitung dieser Aufgabe zur Verfügung.

Beispiel:

a = randomIntegerBetween(1,10)
b = 15

Nach der Initialisierung enthält die Aufgaben-Variable "a" einen zufälligen Wert zwischen 1 und 10 und "b" den Wert 15. Diese Variable kann in der Aufgabe (z.B. in Feedbackregeln, Feedback oder dem Aufgabentext) nun mit [var=a] verwendet werden. Als Wert der Variablen sind sowohl Konstanten als auch (komplexere) Evaluator-Ausdrücke möglich.

Eingabe-Variablen (input)

Diese Variablen enthalten innerhalb eines Aufgabenteils die Eingabe von Studierenden. Wie die Variablen heißen und was sie enthalten, hängt vom jeweiligen Typ des Aufgabenteils ab. Mithilfe von Eingabe-Variablen lässt sich z.B. prüfen, ob die Eingabe korrekt war bzw. ob das eingegebene Ergebnis einer Musterlösung entspricht.

Beispiel 1: In einer Fill-In-Stufe heißen die Variablen wie das Feld. Der folgende Ausdruck prüft, ob im Feld "feld1" die 42 eingegeben wurde:

[input=feld1]==42

Beispiel 2: Die Variable "a" wurde wie oben initialisiert. Der folgende Ausdruck prüft, ob die in das Feld die Quadratzahl eingegeben wurde:

[input=feld1]==pow([var=a],2)

Die Inhalte der Variablen können nur gelesen, aber nicht verändert werden. Sollen die Inhalte zu einem anderen Zeitpunkt als in den Checks des Aufgabenteils verwendet werden, müssen sie durch passende Variablenupdates in Aufgabenvariablen kopiert werden.

Beispiel 3: Um die Eingabe aus dem Feld in eine Variable zu kopieren, genügt der Ausdruck [input=feld1] im Inhalt des Variablenupdates.

Check-Variablen (check)

Variablen dieses Typs enthalten nach einer Einreichung die Ergebnisse der automatischen Checks. Auch diese Variablen werden von JACK3 automatisch gesetzt und sind nicht überschreibbar. Wie bei den Eingabe-Variablen ist es abhängig vom Typ des Aufgabenteils, ob und welche Check-Variablen genutzt werden können.

Beispiel Multiple-Choice: Die Checkvariable mcStageCorrectTicks enthält die Anzahl der vom Studierenden gesetzten Kreuze.

Meta-Variablen (meta)

Meta-Variablen werden ebenso wie Eingabe- und Check-Variablen automatisch gesetzt. Sie enthalten zusätzliche Informationen zum Aufgabenteil oder die laufende Bearbeitung.

Beispiel Multiple-Choice: Die Metavariable mcStageNumberOfAnswerOptions gibt an, wie viele Antwortoptionen dem Studierenden angezeigt wurden.

Global nutzbare Meta-Variablen

Die folgenden Meta-Variablen sind nicht abhängig von einem Stufentypen und können an verschiedenen Stellen benutzt werden:

Name Beschreibung Anwendungsbereich
currentResult Aktuelles Gesamtergebnis einer Kursbearbeitung Kursfeedback
stageCurrentResult Aktuelles Gesamtergebnis der jeweiligen Stufe. Vor der ersten Durchführung von Checks ist der Wert dieser Variablen stets 0. Innerhalb einer Stufe
stageCurrentAttempt Zählt die Anzahl der Versuche der jeweiligen Stufe. Beim ersten Betreten der Stufe ist dies stets 1 und erhöht sich mit jeder Verknüpfung vom Typ "Aufgabenteil wiederholen" und jedem Klick auf "Ab hier neu bearbeiten". Innerhalb einer Stufe
stageHints Anzahl Hinweise, die in der jeweiligen Stufe bereits angezeigt wurden. Innerhalb einer Stufe

Die Meta-Variablen können und sollten nur im jeweiligen Anwendungsbereich genutzt werden. In Stufen können die Variablen überall dort verwendet werden, wo Ausdrücke mit JACK-Variablen unterstützt werden, z.B. in Bedingungen für Verknüpfungen oder in Variablenupdates. Sie können aber auch in Feedback- oder Hinweistexten benutzt werden.

Weitere Beispiele

[var=a]           => gibt den Wert der JACK-Variable a aus der Variablenkonfiguration zurück
[input=field1]    => Gibt den Wert des Eingabefeldes field1 zurück
[check=result]    => Gibt das Ergebnis des Checkers zurück
[meta=stageHints] => Gibt die Anzahl der verwendeten Hinweise in einer Aufgabe zurück

Mathematische Variablen und Konstanten

Mathematische Variablen wie "x" und Konstanten wie Pi können innerhalb von JACK-Variablen genutzt werden.

  • Beispiel 1: Die Aufgaben-Variable "func1" bekommt den Wert x+2 zugewiesen. Hierbei ist "x" eine mathematische Variable
  • Beispiel 2: Die Aufgaben-Variable "func2" bekommt den Wert a/b zugewiesen. "a" und "b" werden zu mathematischen Variablen.

In JACK-Variablen können auch die mathematischen Konstanten e und pi sowie i verwendet werden. Tragen mathematische Variablen denselben Namen, kann es zu Verwechslungen während der Berechnung kommen. Um dies zu vermeiden, müssen die Konstanten durch die jeweilige Evaluator-Funktion angegeben werden:

Name Symbol Evaluator-Funktion
Eulersche_Zahl e constE()
Imaginäre Einheit i imaginary()
Kreiszahl Pi pi constPi()

Achtung: Gibt ein Lernender e, pi oder i ein, wird dies immer als die jeweilige mathematische Konstante (Eulersche Zahl, Imaginäre Einheit, Pi) gewertet. Es kann daher kein Abgleich mit einer eigenen definierten Variable e, pi oder i erfolgen.