Variablen (JACK3)

Aus JACK Wiki
Version vom 9. September 2024, 10:44 Uhr von LGlaser (Diskussion | Beiträge) (Erläuterungen zum Einbetten von Variablen)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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 allen (Evaluator-)Ausdrücken (z.B. in Feedbackregeln oder Verknü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. Auch im Fließtext (z.B. Aufgabentext, Feedback- oder Hinweis-Texten) können JACK-Variablen verwendet werden. Für die bessere Darstellung der Variablen in Fließtexten (z.B. Runden auf x Stellen, SI-Präfixe) gibt es die sogenannten Syntax Flags.

Wichtig: Nicht alle Variablen sind immer verfügbar. Eingabe-Variablen sind nur nach einer Einreichung verfügbar, Meta-/Check-Variablen ggf. erst nach durchgeführten Checks und nur bei bestimmten Aufgabentypen. Um zu prüfen, ob eine Variable definiert ist, kann die Funktion IsVariable genutzt 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 9 und "b" den Wert 15. Diese Variable kann in der Aufgabe (z.B. in Feedbackregeln, Feedback oder dem Aufgabentext) nun mit [var=a] (siehe auch Variablen in Texten einbetten) 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 einem Fill-In-Aufgabenteil 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 Aufgabenteil-Typen und können an verschiedenen Stellen benutzt werden:

Name Beschreibung Anwendungsbereich
currentResult Aktuelles Gesamtergebnis einer Kursbearbeitung Kursfeedback
stageCurrentResult Aktuelles Gesamtergebnis des jeweiligen Aufgabenteils. Vor der ersten Durchführung von Checks ist der Wert dieser Variablen stets 0. Innerhalb eines Aufgabenteils
stageCurrentAttempt Zählt die Anzahl der Versuche des jeweiligen Aufgabenteils. Beim ersten Betreten 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 eines Aufgabenteils
stageHints Anzahl Hinweise, die im jeweiligen Aufgabenteil bereits angezeigt wurden. Innerhalb eines Aufgabenteils

Die Meta-Variablen können und sollten nur im jeweiligen Anwendungsbereich genutzt werden. In Aufgabenteilen 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.

Der Evaluator unterstützt das Rechnen mit mathematischen Variablen, z.B. ergibt \( x+x=2\cdot x \)

In JACK-Variablen können auch die mathematischen Konstanten \(e, \pi, 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.

Variablen in Texten einbetten

Alle JACK-Variablen können mit [variablenTyp=variablenName] beliebig in Texten eingefügt werden, bspw. im Aufgabentext oder im Feedback. Bei der Anzeige werden diese Ausdrücke mit dem Inhalt der Variable ersetzt. Soll eine Variable als \( \LaTeX \) gerendet werden, muss die Variable mit Dollarzeichen umschlossen werden und hinter dem Variablenname der Zusatz latex ergänzt werden. [var=a] gibt die Aufgabenvariable "a" als Text aus, $[var=a,latex]$ als LaTeX. Zu beachten ist, dass Zeichenketten immer als Text gerendert werden.

Beispiele für Variablen im Text
Variablenkonfiguration [var=var1] $[var=var1,latex]$
sqrt(6) root[2](6) \(\sqrt{6}\)
"sqrt(6)" (Zeichenkette) sqrt(6) \(\text{sqrt(6)}\)
5^2 25 \(25\)
"5^2" (Zeichenkette) 5^2 \(\text{5^2}\) (es handelt sich um ungültige LaTeX-Syntax)

Es folgt ein Beispiel, wie Variablen in einer Aufgabe eingebettet werden können.

Die gezeigte Art der Einbettung funktioniert mit allen JACK-Variablen. So kann im Feedbacktext beispielsweise über Eingabe- oder Meta-Variablen Bezug auf die Eingaben genommen werden. Natürlich können Variablen auch komplexer sein, wie beispielsweise Vektoren oder Brüche. Hier ist die LaTeX-Darstellung empfehlenswert. JACK bietet zudem Syntax-Flags für Variablen, um diese in einer wissenschaftlichen Schreibweise (z.B. \(3 \cdot 10^{-3}\)) oder gerundet anzuzeigen.