Automatische Abgabenevaluation mit mehreren Dateien

VPL-Aufgaben können auch mehrere Abgabedateien und Testfälle nutzen. Diese Anleitung veranschaulicht dies am Beispiel einer VPL-Aufgabe, die ein Java-Projekt mit zwei Klassen auswertet, welches seine Eingabe aus einer Datendatei erhält. Das Projekt wird mit 4 verschiedenen Datendateien getestet. Eine Datei wird von dem Studierenden, drei vom Dozierenden bereitgestellt.
- VPL-Aufgabe erstellen
- Testfall erstellen
- Ausführungsoptionen festlegen
- Erforderliche Dateien festlegen
- Ausführungsdateien festlegen
- Zu behaltende Dateien festlegen
- Automatische Evaluation mit einer Musterlösung testen
1. VPL-Aufgabe erstellen
Erstellen Sie zunächst eine neue VPL-Aufgabe. Nehmen Sie dabei die folgenden Einstellungen vor:
- Name – Java: Multi-Dateientest
- Kurzbeschreibung – Dieses Programm prüft die Ausgabe mit vier verschiedenen Eingabedateien, wobei eine von Ihnen in data.txt bereitgestellt werden muss.
- Beschreibung – Schreiben Sie ein Java-Programm das min- und max-Werte einer gegebenen Datei auswertet.
- Abgabezeitraum – Aktivieren Sie „Verfügbar von“ und „Abgabetermin“. Wählen Sie den heutigen Tag unter „Verfügbar von“. Wählen Sie ein Datum in der Zukunft als „Abgabetermin“.
- Abgabeeinschränkungen – Wählen Sie als „Maximale Anzahl an Dateien“ 3 aus.
- Bewertung – Wählen Sie als Bewertungstyp „Punkt“ und als „Maximalpunkte“ 100.
Klicken Sie auf „Speichern und anzeigen“. Ihre VPL-Aktivität wird nun erstellt. Sie werden anschließend automatisch zur Übersichtsseite der VPL-Aufgabe geleitet.
2. Testfall erstellen
Im nächsten Schritt erstellen Sie einen Testfall.
- Klicken Sie dazu in der geöffneten VPL-Aufgabe auf "Mehr" im horizentalen Menü, um die VPL-Administration zu öffnen.
- Wählen Sie die Option „Testfälle“.
- Geben Sie den folgenden Testfall ein:
case = Test 1 input = data.txt output = "File name? min = -1 max = 110 " case = Test 2 input = data1.txt output = "File name? min = 1 max = 1 " case = Test 3 input = data2.txt output = "File name? Empty array min undefined max undefined " case = Test 4 input = data3.txt output = "File name? min = 10 max = 10 " - Klicken Sie abschließend auf die Diskette zum Speichern des Testfalls.
- Kehren Sie durch einen Klick auf den Aufgabentitel „Java: Multi-Dateientest“ in der Breadcrumb-Navigation zur Übersichtsseite der Aufgabe zurück.
3. Ausführungsoptionen festlegen
- Klicken Sie auf der Übersichtsseite der VPL-Aufgabe auf "Mehr" im horizentalen Menü, um die VPL-Administration zu öffnen.
- Wählen Sie „Ausführungsoptionen“.
- Setzen Sie die folgenden Optionen:
- Ausführen (des Programms auf dem VPL-Executionserver): Ja
- Debuggen: Nein
- Evaluieren: Ja
- Nur bei Abgabe evaluieren: Nein
- Automatische Bewertung: Ja
- Klicken Sie abschließend auf „Einstellungen speichern“.
- Kehren Sie durch einen Klick auf den Aufgabentitel „Java: Multi-Dateientest“ in der Breadcrumb-Navigation zur Übersichtsseite der Aufgabe zurück.
4. Erforderliche Dateien festlegen
- Klicken Sie auf der Übersichtsseite der VPL-Aufgabe auf "Mehr" im horizentalen Menü, um die VPL-Administration zu öffnen.
- Wählen Sie „Erforderliche Dateien“ aus.
- Geben Sie als Dateiname „data.txt“ ein und klicken Sie anschließend auf „OK“.
- Im Editor können Sie ihren Studierenden ein Codekonstrukt vorgeben. Wir nutzen hier zum Beispiel:
3 4 5 1 10 11 11 -1 100 3 9 110 - Speichern Sie die Datei mit einem Klick auf das Diskettensymbol im Editor ab.
- Fügen Sie zusätzlich die Datei „Main.java“ sowie „SortedList.java“ durch einen Klick auf das Pluszeichen hinzu. Speichern Sie jeweils die Dateien mit einem Klick auf das Diskettensymbol ab.
- Kehren Sie durch einen Klick auf „Java: Multi-Dateientest“ in der Breadcrumb-Navigation zur Übersichtsseite der Aufgabe zurück.
5. Ausführungsdateien festlegen
- Klicken Sie auf der Übersichtsseite der VPL-Aufgabe auf "Mehr" im horizentalen Menü, um die VPL-Administration zu öffnen.
- Wählen Sie im Reiter „Erweiterte Einstellungen“ die Option „Ausführungsdateien“ aus.
- Fügen Sie für „vpl_run.sh“ folgendes in den Editor ein:
#! /bin/bash cat > vpl_execution << 'EOF' #! /bin/bash javac -J-Xmx128m *.java java Main EOF chmod +x vpl_execution - Fügen Sie für „data2.txt“ keinen Text hinzu.
- Fügen Sie für „data3.txt“ Folgendes hinzu:
10 - Kehren Sie durch einen Klick auf „Java: Multi-Dateientest“ in der Breadcrumb-Navigation zur Übersichtsseite der Aufgabe zurück.
6. Zu behaltende Dateien festlegen
- Klicken Sie auf der Übersichtsseite der VPL-Aufgabe auf "Mehr" im horizentalen Menü, um die VPL-Administration zu öffnen.
- Wählen Sie im Reiter „Erweiterte Einstellungen“ die Option „Dateien, die beim Ausführen behalten werden“.
- Wählen Sie hier alle Dateien aus und klicken Sie auf „Einstellungen speichern“.
- Kehren Sie durch einen Klick auf „Java: Multi-Dateientest“ in der Breadcrumb-Navigation zur Übersichtsseite der Aufgabe zurück.
Die automatische Evaluierung ist nun erstellt.
7. Automatische Evaluation mit einer Musterlösung testen
- Zum Testen einer Musterlösung klicken Sie in der geöffneten Aufgabe auf den Reiter „Testaktivität“ und dann auf „Bearbeiten“.
- Geben Sie nun folgendes in den Editor ein:
- Für Main.java:
// Main.java import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { BufferedReader br = null; String sCurrentLine = null; SortedList array = new SortedList(); Scanner keyboard = new Scanner( System.in ); System.out.print("File name? "); String fileName = keyboard.next().trim(); try { br = new BufferedReader( new FileReader( fileName ) ); while ((sCurrentLine = br.readLine()) != null) { int x = Integer.parseInt( sCurrentLine.trim() ); array.add( x ); } } catch (IOException e) { //e.printStackTrace(); System.err.println( "Could not find file" ); return; } finally { try { if (br != null) br.close(); } catch (IOException ex) { //ex.printStackTrace(); return; } } if ( array.isEmpty() ) { System.out.println( "Empty array" ); System.out.println( "min undefined" ); System.out.println( "max undefined" ); return; } int max = array.getLast(); int min = array.getFirst(); System.out.println( "min = " + min ); System.out.println( "max = " + max ); } } - Für SortedList.java
import java.util.ArrayList; import java.util.Collections; public class SortedList { ArrayList<Integer>array = null; SortedList() { array = new ArrayList <Integer> (); } public void add( int x ) { array.add( x ); Collections.sort( array ); } public boolean isEmpty() { return array.isEmpty(); } public int getFirst( ) { return array.get( 0 ); } public int getLast( ) { return array.get( array.size() - 1 ); } } - Klicken Sie zum Speichern zunächst auf die Diskette. Durch einen Klick auf die Rakete führen Sie Ihr Programm aus.
- Durch einen Klick auf den Haken mit der danebenstehenden 0 führen Sie den automatischen Test aus. Sie sollten nun auf der rechten Seite die folgende Ausgabe finden:
| 4 test run/ 4 test passed |

