ExerciseChain: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(23 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Beschreibung ===
In der ExerciseChain werden allgemeine Informationen zur Aufgabe gespeichert: Möchte man bspw. eine Aufgabe mit Variablen definieren, so muss man dies in
In der ExerciseChain werden allgemeine Informationen zur Aufgabe gespeichert: Möchte man bspw. eine Aufgabe mit Variablen definieren, so muss man dies in
dieser Datei tun. Für jede einzelne Stufe der Aufgabe muss außerdem ein Abschnitt definiert werden. Dort teilt man der Aufgabe mit, welche Variablen
dieser Datei tun. Für jede einzelne Stufe der Aufgabe muss außerdem ein Abschnitt definiert werden. Dort teilt man der Aufgabe mit, welche [[Variablen (Jack2)|Variablen]]
sie dieser Stufe übergeben soll und welche Stufe bei welcher Einreichung als nächstes angezeigt werden soll. Die einzelnen Funktionen werden im Folgenden
sie dieser Stufe übergeben soll und welche Stufe bei welcher Einreichung als nächstes angezeigt werden soll. Des Weiteren kann man eine Stufe definieren,
erläutert.
die angezeigt werden soll, wenn der Lernende den '''Überspringen'''-Button klickt. Zusammengefasst enthält die ExerciseChain die Variablendefinitionen sowie die Zuordnung der Variablen zu den einzelnen Stufen. Auch wird in der ExerciseChain festgelegt, welche Stufen wann aufgerufen werden.


=== Die Tags der ExerciseChain ===
Die ExerciseChain wird als [[XML-Dateien|XML-Datei]] erzeugt, die '''zwingend'''  
* '''variables:''' In diesem Tag werden die globalen Variablen der Aufgabe definiert. Wie man Variablen definiert und welche unterschiedlichen Möglichkeiten es dafür gibt, wird in Abschnitt [[Variablen]] erläutert. Im Allgemeinen speichert JACK eine globale Variablenliste und für die aktive Stufe (das ist die Stufe, die der Student gerade bearbeitet) eine lokale Variablenliste. Die hier definierten Variablen werden vor Anzeige der Aufgabe vom System bestimmt. Die Übergabe an die lokale Variablenliste steuert man über das Tag <code><input></code>, während alles was von der lokalen an die globale Variablenliste übergeben werden soll (z.B. zur Verwendung in einer anderen Stufe), über das Tag <code><output></code> gesteuert wird.
den Namen ''exerciseChain.xml'' (bitte auf Groß-/Kleinschreibung achten!) tragen muss. Sie wird als Exercise Resource vom Typ WORKING_SHEET an die Aufgabe angehängt.
* '''step:''' Für jede Stufe der Aufgabe muss ein Tag von diesem Typ erstellt werden. Der oberste hier definierte step ist der erste, der dem Lernenden angezeigt wird. Das Attribut <code>id</code> gibt der Stufe innerhalb der Aufgabe eine ID. Deswegen darf jede ID nur ein mal vergeben werden. Es bietet sich hier z.B. eine Nummerierung an. Das Attribut <code>file</code> ordnet der Stufe die Stufendefinitionsdatei zu und ist daher ebenfalls verpflichtend. Hier ist der Dateiname dieser Definitionsdatei einzutragen. Das Attribut <code>weight</code> ordnet der Stufe eine Gewichtung für die Bepunktung der Aufgabe zu. Die Gewichtung muss eine positive ganze Zahl sein. Das Attribut ist nicht verpflichtend und die Defaulteinstellung (das ist die Einstellung, die verwendet wird, falls das Attribut nicht angegeben wird) ist "1". Über das Attribut <code>result</code> kann man zudem noch steuern, wie die Punktzahl der jeweiligen Stufe angezeigt wird. Erlaubt sind hier die Werte "absolute", "relative" (Defaulteinstellung) und "no". Für jede Stufe gibt es ein maximales Ergebnis von 100 Punkten zu erreichen, welches dann je nach Gewichtung anteilig in die Gesamtpunktzahl von ebenfalls 100 Punkten eingeht. Wählt man hier den Wert <code>absolute</code> so bekommt der Lernende die Bepunktung für die Stufe absolut angezeigt, also z.B. 20/20, falls die Gewichtung der Stufe 1/5 des Gesamtgewichts beträgt. Der Wert <code>relative</code> bedeutet, dass die Bepunktung relativ angegeben wird, also mit 100/100, während <code>no</code> bedeutet, dass gar keine Bepunktung angezeigt wird.
* '''input:''' Für jede Variable, die der Stufe übergeben werden soll, muss hier ein Tag vom Typ <code><input></code> erstellt werden. Beim Attribut <code>value</code> muss der Wert der Variable gespeichert werden. Dies kann sowohl eine Variable aus der globalen Variablenliste sein, die dann mit <code>[var=...]</code> referenziert werden muss, als auch ein beliebiger anderer Wert, wie z.B. die Summe zweier Variablen aus der globalen Variablenliste. Der bei diesem Attribut eingesetzte Ausdruck wird dem Evaluator übergeben und muss für diesen lesbar sein.
* '''output:''' In diesem Tag werden die Variablen definiert, welche die Stufe zurückgibt und die in der globalen Variablenliste gespeichert werden sollen. Über das Attribut <code>name</code> wird der Name bestimmt, welchen die Variable in der globalen Variablenliste erhält. So kann auch eine bereits existierende Variable überschrieben werden, falls dies gewünscht wird.
* '''next:''' Dieses Tag definiert, welche Stufe bei welchem Ergebnis angezeigt wird. Bei dem Attribut <code>default</code> kann die Defaulteinstellung für die nächste Stufe angegeben werden und über das Attribut <code>message</code> kann eine Nachricht angegeben werden, die dem Lernenden in diesem Fall angezeigt wird. Beim Attribut <code>default</code> kann man entweder die ID der folgenden Stufe eintragen oder hat die Wahl zwischen den Parametern "repeat", falls die Stufe wiederholt werden soll (üblicherweise im Fehlerfall), und "end" falls die Aufgabe mit diesem Schritt beendet ist.Falls neben der Defaulteinstellung noch weitere Pfade angegeben werden, so muss man dies jeweils über ein Tag <code><path></code> tun.
* '''path:''' Definiert die nächste Stufe unter gewissen Bedingungen. Mögliche Bedingungen sind ein bestimmtes Ergebnis, welches vom Lernenden in dieser Stage erreicht wurde und welches im Attribut <code>result</code> angegeben wird oder ein Ausdruck für den Evaluator im Attribut <code>condition</code>, also z.B: wenn die nächste Stufe von den Variablen oder der Eingabe des Lernenden abhängt. Beide Attribute sind nicht verpflichtend, allerdings sollte mindestens eines der beiden angegeben werden. Die ID der nächsten Stufe wird über das Attribut <code>target</code> angegeben und eine Nachricht kann mit Hilfe des Attributs <code>message</code> angegeben werden. Weitere Einstellungsmöglichkeiten für das Attribut <code>target</code> sind <code>repeat</code> und <code>end</code>.
* '''skip:''' Falls der Lernende die Stufe mit dem Button '''Überspringen''' überspringen können soll, so kann man in diesem Tag mittels des Attributs <code>target</code> ein Ziel dafür angeben. Da der Output der Stufe eventuell von den Eingaben des Lernenden abhängt und die ExerciseChain einen Output erwartet, muss in diesem Fall für jeden vorgesehenen Output ein Tag <code><outputvalue></code> definiert werden. Soll dem Studierenden beim Überspringen einer Aufgabenstufe außerdem eine spezielle Nachricht (bspw. die entsprechende Lösung) angezeigt werden, muss diese in der [[Stage]]-Datei als <code><skipmessage></code> angegeben werden. Soll darüber hinaus ein "Überspringen" der letzten Aufgabenstufe (also ein vorzeitiges Beenden der Aufgabe) möglich sein, muss die entsprechende [[Stage]]-Datei in jedem Fall um einen <code><skipmessage></code>-Tag ergänzt werden. In diesem Fall trägt der Button die Aufschrift '''Lösung anzeigen'''.


=== Beispiel ===
Hier eine Liste aller Tags, die in der exerciseChain genutzt werden, in geordneter Reihenfolge.


==== XML-Datei ====
''&rarr;Siehe auch:'' [[Beispiel(exerciseChain) (Jack2)]]
<syntaxhighlight lang="xml">
  <?xml version="1.0" encoding="iso-8859-1"?>
  <exercisechain>
    <variables>
      <option name="a" min="1" max="5" />
      <option name="b" value="getRandomFromList(list(2,3,5,7,11))" />
      <option name="c" value="[var=a]+[var=b]" />
      <option name="d" value="getRandomFromList(list('Sinus','Kosinus'))" />
    </variables>
    <step id="1" file="stage1.xml" >
      <input value="[var=c]" />
      <input value="[var=d]" />
      <output name="e" />
      <output name="f" />
      <next default="repeat" message="Bitte versuchen Sie es erneut." >
        <path target="2" result="100" message="Richtig" />
      </next>
      <skip target="2" >
        <outputvalue name="e" value="5" />
        <outputvalue name="f" value="7" />
      </skip>
    </step>
    <step id="2" file="stage2.xml" >
      <input value="[var=c]" />
      <input value="[var=d]" />
      <next default="repeat" message="Bitte versuchen Sie es erneut." >
        <path target="end" result="100" message="Richtig" />
      </next>
      <skip target="end" />
    </step>
  </exercisechain>
</syntaxhighlight>


==== Beschreibung ====
==Tags==
Die zu dieser ExerciseChain gehörende Aufgabe besteht aus zwei Stufen, zu denen die Stufendateien ''stage1.xml'' und ''stage2.xml'' gehören. Bevor wir uns diesen zuwenden, wollen wir jedoch zunächst die Variablendeklaration im Tag <code><variables></code> genauer betrachten. Es werden vier Variablen definiert, die innerhalb der Aufgabe durch die Verwendung des Platzhalters <code>[var=name]</code> referenziert werden können:  
*{{:ExerciseChain (Tag)}}
* Die Variable ''a'' ist eine ganze Zahl zwischen 1 und 5.
**{{:Variables}}
* Die Variable ''b'' ist eine Zahl aus der Menge {2,3,5,7,11}, also eine der ersten fünf Primzahlen.
***{{:Option}}
* Die Variable ''c'' ist die Summe aus der Variablen ''a'' und der Variablen ''b''.
**{{:Step}}
* Die Variable ''d'' ist eine Mengenvariable. Die Menge besteht aus den beiden Zeichenketten "Sinus" und "Kosinus".
***{{:Input}}
***{{:Output}}
***{{:Next}}
****{{:Path}}
***{{:Skip}}
****{{:Outputvalue}}


=== Kommentiertes Aufgabengerüst ===
<noinclude>[[Category:Aufbau]][[Category:exerciseChain]]</noinclude>
Eine kommentierte exerciseChain.xml kann man [[Media:exerciseChain.xml|hier]] herunterladen.

Aktuelle Version vom 9. Juni 2023, 12:36 Uhr

In der ExerciseChain werden allgemeine Informationen zur Aufgabe gespeichert: Möchte man bspw. eine Aufgabe mit Variablen definieren, so muss man dies in dieser Datei tun. Für jede einzelne Stufe der Aufgabe muss außerdem ein Abschnitt definiert werden. Dort teilt man der Aufgabe mit, welche Variablen sie dieser Stufe übergeben soll und welche Stufe bei welcher Einreichung als nächstes angezeigt werden soll. Des Weiteren kann man eine Stufe definieren, die angezeigt werden soll, wenn der Lernende den Überspringen-Button klickt. Zusammengefasst enthält die ExerciseChain die Variablendefinitionen sowie die Zuordnung der Variablen zu den einzelnen Stufen. Auch wird in der ExerciseChain festgelegt, welche Stufen wann aufgerufen werden.

Die ExerciseChain wird als XML-Datei erzeugt, die zwingend den Namen exerciseChain.xml (bitte auf Groß-/Kleinschreibung achten!) tragen muss. Sie wird als Exercise Resource vom Typ WORKING_SHEET an die Aufgabe angehängt.

Hier eine Liste aller Tags, die in der exerciseChain genutzt werden, in geordneter Reihenfolge.

→Siehe auch: Beispiel(exerciseChain) (Jack2)

Tags

  • ExerciseChain (Tag)
    Der Tag wird nur in der exerciseChain genutzt. Ist das Elternelement aller Elemente in der XML-Datei der exercsieChain.
    • Variables
      In diesem Tag werden die globalen Variablen der Aufgabe definiert. Das Tag <variables> ist optional und kann somit auch weggelassen werden. Für jede Variable muss ein Tag <option> erstellt werden. Im Allgemeinen speichert JACK eine globale Variablenliste und für die aktive Stufe (das ist die Stufe, die der Student gerade bearbeitet) eine lokale Variablenliste. Die hier definierten Variablen werden vor Anzeige der Aufgabe vom System bestimmt. Die Übergabe an die lokale Variablenliste steuert man über das Tag <input> (Link), während alles was von der lokalen an die globale Variablenliste übergeben werden soll (z.B. zur Verwendung in einer anderen Stufe), über das Tag <output>(Link) gesteuert wird.
      • Option
        Wird für die Definition von Antwortmöglichkeiten genutzt. Für jede Variable die man verwenden möchte, legt man einen <option>-Tag an und gibt im Attribute name den Namen der Variablen an.
    • Step
      Für jede Stufe der Aufgabe muss ein Tag von diesem Typ erstellt werden. Der Tag gibt also die Nummer der Stufe an. Der oberste hier definierte step ist der erste, der dem Lernenden angezeigt wird.
      • Input
        Mit dem Tag <input> steuert man die Übergabe von Variablen. Bei der ExerciseChain übergibt der Tag <input> die Variablen an die einzelnen Stages.
      • Output
        Der Tag <output> regelt die Übergabe von Variablen. In der exerciseChain werden über den Tag <output> die Variablen definiert, welche die Stufe zurückgibt und die in der globalen Variablenliste gespeichert werden sollen.
      • Next
        Dieses Tag definiert, welche Stufe bei welchem Ergebnis angezeigt wird. Bei dem Attribut default kann die Defaulteinstellung für die nächste Stufe angegeben werden und über das Attribut message kann eine Nachricht angegeben werden, die dem Lernenden in diesem Fall angezeigt wird.
        • Path
          Definiert die nächste Stufe unter gewissen Bedingungen. Mögliche Bedingungen sind bestimmte Ergebnise, welche vom Lernenden in dieser Stage erreicht werden.
      • Skip
        Dieser Tag kann genutzt werden, um das überspringen von Stufen zu regeln. Falls der Lernende die Stufe mit dem Button Überspringen überspringen können soll, so kann man in diesem Tag mittels des Attributs target ein Ziel dafür angeben.
        • Outputvalue
          Gibt eine Variable an die ExerciseChain zurück. Im Attribut value wird der Wert der Variable angegeben. Dieser Wert kann ein beliebiger String sein, den der Evaluator evaluieren kann. Wenn der Output der Stufe von den Eingaben des Lernenden abhängt und die ExerciseChain einen Output erwartet, muss in diesem Fall für jeden vorgesehenen Output ein Tag <outputvalue> definiert werden. Dabei wird im Attribute name der Name der Variablen angegeben und unter dem Attribute value der Wert der Variablen.