Ausführungsreihenfolge
Wie funktioniert das ProgrammingWiki und was passiert hinter den Kulissen wenn Sie auf "ausführen" klicken. Auf dieser Seite sollen die intern angewendeten Regeln dargestellt werden. Die Seite richtet sich somit vorallem an Autoren die bestimmte Zusammenhänge bei der Abarbeitung ihrer Programme verstehen wollen.
Die interaktiven Elemente
Es gibt 3 Arten von Elementen: Code, Eval und Check.
Das wohl am häufigsten verwendete Element ist das Eval-Element. Es stellt sowohl einen Eingabebereich als auch Ausgabebereich mit "ausführen" Button zur Verfügung. Dieses Element wird immer dann verwendet, wenn ein Programm abgearbeitet werden soll. Wie diese Abarbeitung genau abläuft wird später erklärt.
Ein Code-Element hat keine Schaltfläche zum ausführen und auch keinen Ausgabebereich. Stellen Sie sich Code-Bereiche als eine Art Bibliothekscode vor. Wird der "Ausführen" Button eines beliebigen Eval-Elements betätigt, so werden alle Code-Elemente der Abarbeitung vorangestellt. Bei jeder Ausführung wird also der gesamte Quelltext aller Code-Boxen gesammelt und vor der Ausführung des Quelltextes der Eval-Box abgearbeitet.
Ein Check-Element funktioniert technisch ähnlich dem Eval-Element. Der markante Unterschied ist die graphische Ausgabe mit einem lächelnden oder traurigen Gesicht. Darüber hinaus werden die Ergebnisse der Check-Elemente in der Datenbank abgelegt, um in der Lehreransicht einen schnellen Überblick über den Erfolg oder Misserfolg der Lernenden zu bekommen.
Reihenfolge der Abarbeitung
Die interaktiven Elemente einer Wikiseite werden in ganz bestimmter Reihenfolge bei der Ausführung einbezogen. Das lässt sich am besten an einem konkreten Beispiel erklären.
<eval id="4d242cba976fd"></eval>
// Eval-Block 1
System.out.println("X="+x+"; Y="+y+"; add="+add(x,y));
System.out.println("X="+x+"; Y="+y+"; mul="+mul(x,y));
x = 30; y = 3;
System.out.println("X="+x+"; Y="+y+"; div="+div(x,y));
<eval id="4d242cba97785"></eval>
// Eval-Block 2
System.out.println("X="+x+"; Y="+y+"; add="+add(x,y));
System.out.println("X="+x+"; Y="+y+"; mul="+mul(x,y));
x = 8; y = 2;
System.out.println("X="+x+"; Y="+y+"; div="+div(x,y));Erklärungen:
- Wird Eval-Block 1 ausgeführt wird zunächst der gesamte Quelltext aller Code-Blöcke in aufgeschriebener Reihenfolge gesammelt und ausgeführt. Damit sind alle 3 Hilfsfunktionen definiert und x und y sind 2 (vom letzten ausgeführten Code-Block).
- Wird Eval-Block 2 ausgeführt werden erneut zunächst alle Code-Blöcke ausgeführt und erst danach der Quelltext von Eval-Block 2. Der Inhalt von Eval-Block 1 wird jedoch nicht verwendet.