Wiki-Quellcode von Programmieraufgabe

Zuletzt geändert von Carina Enke am 15.02.2024

Zeige letzte Bearbeiter
1 {{layout}}
2 {{layout-section ac:type="single"}}
3 {{layout-cell}}
4
5 {{/layout-cell}}
6 {{/layout-section}}
7
8 {{layout-section ac:type="two_right_sidebar"}}
9 {{layout-cell}}
10 [[image:ONYX._Include Library.Onyx Icons und Buttons.WebHome@Icon_Programmieraufgabe.png||data-xwiki-image-style="img-icon"]]Beim Aufgabentyp **Programmieraufgabe **handelt es sich um eine spezielle Eingabeaufgabe. Der Teilnehmer gibt Programmcode ein, welcher entweder durch definierte Testfälle oder eine Rahmendatei mit entsprechendem Rückgabewert bewertet wird. Die automatische Prüfung erfolgt durch eine Schnittstelle zur [[Serveranwendung>>url:http://vpl.dis.ulpgc.es/||rel="nofollow" shape="rect" class="external-link"]] [[VPL>>url:http://vpl.dis.ulpgc.es/||rel="nofollow" shape="rect" class="external-link"]]. Es werden die Programmiersprachen C, C++, Haskell, Pascal, Java, JavaScript, Mathlab/Octave, Phython2 und Phyton3 unterstützt.
11
12 [[image:attach:Programmieraufgabe - Beispielaufgabe_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
13
14
15 {{display reference="ONYX._Include Library.zahlungspflichtige Funktion.WebHome"/}}
16 {{/layout-cell}}
17
18 {{layout-cell}}
19 {{panel borderColor="#ddd" bgColor="#f0f0f0" borderStyle="solid" title="Inhalt"}}
20 {{toc start="2"/}}
21 {{/panel}}
22
23 {{panel borderColor="#ddd" bgColor="#f0f0f0" borderStyle="solid" title="Verwandte Themen"}}
24 * [[(% class="confluence-link sv-pt-link" %)Bewertung festlegen>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Bewertung festlegen.WebHome]]
25 * (% class="confluence-link sv-pt-link" %)[[Set Feedback>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Feedback festlegen.WebHome]]
26 * (% class="confluence-link sv-pt-link" %)[[Optionen festlegen>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Optionen festlegen.WebHome]] 
27 {{/panel}}
28
29 {{panel borderColor="#ddd" bgColor="#f0f0f0" borderStyle="solid" title="Weiterführende Informationen"}}
30 * (% class="confluence-link sv-pt-link" %)[[VPL Virtual Programming Lab>>url:http://vpl.dis.ulpgc.es/||shape="rect"]]
31 * (% class="confluence-link sv-pt-link" %)[[ACE Code Editor>>url:https://ace.c9.io/||shape="rect"]]
32 {{/panel}}
33 {{/layout-cell}}
34 {{/layout-section}}
35
36 {{layout-section ac:type="single"}}
37 {{layout-cell}}
38 == Aufgabe ==
39
40 (% class="wrapped" %)
41 |=(((
42 Funktion
43 )))|=(((
44 Beschreibung
45 )))
46 |(((
47 (% class="content-wrapper" %)
48 (((
49 **Aufgabenstellung**
50
51 [[image:attach:Programmieraufgabe - Aufgabenstellung_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="87" width="323"]]
52 )))
53 )))|(((
54 Für die Aufgabenstellung steht Ihnen ein WYSIWYG-Editor zur Verfügung. Dies ermöglicht Ihnen die freie Gestaltung und die Möglichkeit zur [[Integration von Medien>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Medien einbinden.WebHome]] und [[Formeln einbinden>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Formeln einbinden.WebHome]].
55 )))
56 |(((
57 (% class="content-wrapper" %)
58 (((
59 **Punkte**
60
61 [[image:attach:Programmieraufgabe - Punkte_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="61" width="328"]]
62 )))
63 )))|(((
64 Angezeigt wird die maximale Punktzahl für die Aufgabe. Um diese zu ändern, wechseln Sie in den Tab [[Bewertung>>doc:ONYX.Erstellung von Testinhalten.Aufgaben.Bewertung festlegen.WebHome]].
65 )))
66
67 == Antworten ==
68
69 Die Beantwortung einer Programmieraufgabe erfolgt durch die Eingabe von Programmcode. Dem Teilnehmer steht hierfü(% style="color:#000000" %)r ein **Code Editor** mi(%%)t Syntax-Highlighting zur Verfügung. Der Autor muss die gewünschte Programmiersprache wählen und kann eine automatische Auswertung aktivieren.
70
71 Folgende Konfigurationsoptionen stehen Ihnen im Bereich Antworten zur Verfügung:
72
73 (% class="wrapped" %)
74 |=(((
75 Funktion
76 )))|=(((
77 Beschreibung
78 )))
79 |(((
80 (% class="content-wrapper" %)
81 (((
82 **Automatische Auswertung**
83
84 [[image:attach:Programmieraufgabe - Automatische Auswertung_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="30" width="188"]]
85 )))
86 )))|(((
87 Durch die Aktivierung wird die Programmieraufgabe automatisch ausgewertet. Es kann gewählt werden, ob die Bewertung durch **Fallprüfung** oder den **Rückgabewert der Rahmendatei** erfolgen soll.
88
89 Erfolgt keine Aktivierung der automatischen Auswertung, wird die Aufgabe für die [[Manuelle Bewertung>>doc:ONYX.Auswertung von Tests.Manuelle Bewertung.WebHome]] gekennzeichnet und der Teilnehmer erhält während der Testdurchführung bzw. in der Ergebnisansicht einen entsprechenden Hinweis.
90 )))
91 |(((
92 (% class="content-wrapper" %)
93 (((
94 **Programmiersprache**
95
96 [[image:attach:Programmieraufgabe - Programmiersprache_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="184" width="186"]]
97 )))
98 )))|(((
99 (% class="content-wrapper" %)
100 (((
101 Wählen Sie die erwartete Programmiersprache für die Eingabe und Auswertung der Aufgabe. Es werden die Programmiersprachen C, C++, Haskell, Pascal, Java, JavaScript, Mathlab/Octave, Phython2 und Phyton3 unterstützt.
102 )))
103 )))
104
105 (% id="HBewertung" class="auto-cursor-target" %)
106 === Bewertung ===
107
108 Ist die automatische Auswertung aktiviert, kann gewählt werden, wie die Bewertung erfolgen soll. Es stehen folgende Optionen zur Verfügung:
109
110 * **Fallprüfung: **Bewertet wird nach Anzahl der korrekten Testfälle. Der Teilnehmer erhält Prozentanteile der maximalen Punktzahl pro korrektem Testfall.
111 * **Rückgabewert der Rahmendatei: **Bewertet wird durch die Rahmendatei. Der Programmcode liefert als Bewertung einen Prozentwert als Konsolenausgabe ("Grade :=>> 100").
112
113 [[image:attach:Programmieraufgabe - Bewertung_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="91" width="279"]]
114
115
116 (% class="wrapped" %)
117 |=(% colspan="1" %)(% colspan="1" %)
118 (((
119 Funktion
120 )))|=(% colspan="1" %)(% colspan="1" %)
121 (((
122 Beschreibung
123 )))
124 |(% colspan="1" %)(% colspan="1" %)
125 (((
126 (% class="content-wrapper" %)
127 (((
128 **Fallprüfung**
129
130 **[[image:attach:Programmieraufgabe - Fallprüfung_de.png]]**
131 )))
132 )))|(% colspan="1" %)(% colspan="1" %)
133 (((
134 Ist zur Bewertung die Option "Fallprüfung" gewählt, wird Ihnen ein entsprechendes Eingabefeld für die Testfälle angezeigt. Die Testfälle müssen in VPL-Syntax eingegeben werden. Jeder Testfall muss wie folgt beschrieben werden:
135
136 * **Case** = case name
137 Definiert den Start eines (neuen) Testfalls. Mittels der Bezeichnung kann im **Ergebnisbericht** nachvollzogen werden, welche Testfälle erfolgreich waren und welche fehlgeschlagen sind.
138 * **Input** = text (optional)
139 Definiert die Eingabe für den Programmcode. Der Input kann mehrere Zeilen umfassen und endet mit dem nächsten VPL-Ausdruck (bspw. output).
140 * **Output** = text
141 Definiert die erwartete Ausgabe für den Programmcode. Der Output kann mehrere Zeilen umfassen und endet mit dem nächsten VPL-Ausdruck (bspw. output).
142
143 Es können beliebig viele Testfälle definiert werden. Die Bewertung erfolgt entsprechend der Anzahl der korrekten Testfälle. Für den durch den Teilnehmer geschriebenen Programmcode wird geprüft, ob die definierte Ausgabe (Output) mit entsprec(% style="color:#000000" %)hender Eingabe (Input) erreicht wird. Die Anzahl erfolgreicher Testfälle im Verhältnis zur Gesamtanzahl ergibt die Bewertung. Die Punktzahl berechnet sich prozentual, auf die durch den Autor definierte **maximale Punktzahl**.
144
145 Die [[VPL Dokumentation>>url:http://vpl.dis.ulpgc.es/index.php/support||shape="rect"]] gibt einen Überblick zur VPL Syntax und zeigt im Abschnitt **Creating automated tests** weitere Beispiele auf.
146 )))
147 |(% colspan="1" %)(% colspan="1" %)
148 (((
149 (% class="content-wrapper" %)
150 (((
151 **Rahmendatei**
152
153 [[image:attach:Programmieraufgabe - Rahmendatei_de.png]]
154 )))
155 )))|(% colspan="1" %)(% colspan="1" %)
156 (((
157 (% class="content-wrapper" %)
158 (((
159 **Rahmendatei als Teilantwort**
160
161 Die Rahmendatei kann unabhängig von der Bewertungsoption genutzt werden, wenn nur ein Teil des Programmcodes vom Nutzer als Antwort eingegeben werden soll. Durch den **Platzhalter {LEARNERRESPONSE}** definieren Sie, die Stelle an der die spätere Teilnehmereingabe eingefügt wird.
162
163 Wird keine Rahmendatei definiert, wird der Programmcode des Teilnehmers alleinig ausgeführt.
164
165
166 **Rahmendatei als Bewertungsmöglichkeit**
167
168 Die Rahmendatei kann zusätzlich zur Bewertung genutzt werden. Ist als Bewertungsoption "**Rückgabewert der Rahmendatei**" aktiviert, muss der Programmcode die Bewertung als Prozentwert als Konsolenausgabe ausgeben. Die Rückgabe muss dabei in folgendem Format erfolgen: "Grade :=>> 100"
169
170 Die Bewertungsstufe (Grade) gibt einen Prozentwert an. (% style="color:#000000" %)Die Punktzahl berechnet sich anschließend prozentual, auf die durch den Autor definierte **maximale Punktzahl**.
171
172 (% style="text-align:justify" %)
173 (% style="color:#000000" %)Beispiel: Ausgabe (%%)„//Grade :=>> 75//“ :  Das Ergebnis entspricht den Anforderungen zu 75%. Bei einer maximalen Punktzahl von 10 Punkten erhält der Teilnehmer 7,5 Punkte
174
175 * (% style="color:#000000" %)Innerhalb der Rahmendatei kann der erreichte „Grade“ ganz individuell berechnet werden. Dieser muss am Ende unbedingt zurückgegeben werden:
176
177 {{code title="Beispiel für die Rückgabe"}}
178 if (correct) {
179 std::out << „Grade :=<< 100“ << std::endl;
180 }
181 else {
182 std::out << „Grade :=<< 100“ << std::endl;
183 }
184 {{/code}}
185
186
187 (% style="color:#000000" %)Erstellen Sie mit Hilfe der Funktionsicons weitere Rahmendateien ... hier noch was nettes
188 )))
189 )))
190
191 (% id="HLF6sungundVordefinierterInhalt" class="auto-cursor-target" %)
192 === Lösung und Vordefinierter Inhalt ===
193
194 (% class="wrapped" %)
195 |=(% colspan="1" %)(% colspan="1" %)
196 (((
197 Funktion
198 )))|=(% colspan="1" %)(% colspan="1" %)
199 (((
200 Beschreibung
201 )))
202 |(% colspan="1" %)(% colspan="1" %)
203 (((
204 (% class="content-wrapper" %)
205 (((
206 **Lösung**
207
208 [[image:attach:Programmieraufgabe - Lösungshinweis_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="76" width="255"]]
209 )))
210 )))|(% colspan="1" %)(% colspan="1" %)
211 (((
212 Der Lösungshinweis wird dem Teilnehmer als Musterlösung angezeigt. Die Musterlösung wird dem Teilnehmer bspw. in einer Testdurchführung mit aktivierter Lösungsanzeige oder in der nachträglichen Ergebniseinsicht angezeigt.
213 )))
214 |(% colspan="1" %)(% colspan="1" %)
215 (((
216 (% class="content-wrapper" %)
217 (((
218 **Vordefinierter Inhalt**
219
220 **[[image:attach:Editor - vordefinierter Inhalt für Programmieraufgabe_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="94" width="269"]]**
221 )))
222 )))|(% colspan="1" %)(% colspan="1" %)
223 (((
224 Der in diesem Feld vordefinierte Inhalt wird dem Teilnehmer in der Testansicht im Lösungseingabefeld vorausgefüllt angeboten. Er kann dann durch den Nutzer überschrieben werden.
225 )))
226 {{/layout-cell}}
227 {{/layout-section}}
228
229 {{layout-section ac:type="single"}}
230 {{layout-cell}}
231 == Zusätzliche Informationen ==
232
233 === Code Editor ===
234
235 Für die Eingabe von Programmcode steht dem Teilnehmer und dem Autor ein spezieller Code Editor auf Basis des ACE-Editors ([[https:~~/~~/ace.c9.io/>>url:https://ace.c9.io/||rel="nofollow" shape="rect" title="Verknüpfung folgen"]]) zur Verfügung. Dies ermöglicht insbesondere eine verbesserte Übersicht durch Syntax-Highlighting, spezifisches Ein- und Ausrücken und für Programmcode spezifische Bedienerunterstützung. Der Editor ist entsprechend der gewählten Programmiersprache vorkonfiguriert.
236
237 [[image:attach:Programmieraufgabe - Code Editor_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="83" width="406"]]
238
239 === (% style="color:#000000" %)Ergebnisbericht (VPL Output)(%%) ===
240
241 (% style="color:#000000" %)Die Ergebnisdaten enthalten die vollständige VPL Rückgabe als Textdatei. Diese Datei wird in der Datenarchivierung für jeden Testdurchlauf und jeden Teilnehmer gespeichert. Zukünftig ist eine direkte Anzeige in den Ergebnisansichten für den Bewerter geplant.
242
243 (% style="color:#ff0000" %)[[image:attach:Programmieraufgabe - Ergebnisbericht_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" height="162" width="407"]]
244 {{/layout-cell}}
245 {{/layout-section}}
246
247 {{layout-section ac:type="single"}}
248 {{layout-cell}}
249 == Anwendungsbeispiele ==
250
251 Um mögliche Grundeinstellungen und die Wirkungsweise der VPL-Schnittstelle nachzuvollziehen, stellen wir Ihnen hier einige Beispielinhalte bereit.
252
253 Sie finden je Programmiersprache eine Datei mit zwei Varianten einer Aufgabe: Einmal konfiguriert mit Rahmendatei und eine zweite Aufgabe konfiguriert mit Fallprüfung. Laden Sie sich die Beispielinhalte herunter und importieren Sie diese in Ihren Aufgabenpool. Wie Sie Aufgaben importieren, beschreibt der Abschnitt [[Inhalte erstellen oder importieren>>doc:ONYX.Erstellung von Testinhalten.Inhalte erstellen oder importieren.WebHome]].
254 {{/layout-cell}}
255 {{/layout-section}}
256
257 {{layout-section ac:type="two_equal"}}
258 {{layout-cell}}
259
260
261 * [[attach:Beispiel Quersumme_C.zip]]
262 * [[attach:Beispiel Quersumme_C++.zip]]
263 * [[attach:Beispiel Quersumme_Java.zip]]
264 * [[attach:Beispiel Quersumme_JavaScript.zip]]
265 * [[attach:Beispiel Quersumme_Octave.zip]]
266 * [[attach:Beispiel Quersumme_Pascal.zip]]
267 * [[attach:Beispiel Quersumme_Phython3.zip]]
268 * [[attach:Beispiel Quersumme_alle Programmiersprachen.zip]]
269 {{/layout-cell}}
270
271 {{layout-cell}}
272 [[image:attach:Programmieraufgabe - Beispiel Quersumme.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
273
274
275 {{/layout-cell}}
276 {{/layout-section}}
277
278 {{layout-section ac:type="two_equal"}}
279 {{layout-cell}}
280 Beispielaufgaben mit Orientierung am sächsischen Lehrplan:
281
282 * [[attach:Vererbung_mit_Tieren_(Java).zip]]
283 * [[attach:Zahlendreher_(Pascal).zip]]
284 * [[attach:Primzahlentest_(Java).zip]]
285 * [[attach:Durchschnittstemperatur_(Java).zip]]
286 * [[attach:ASCII_decodieren_(Java).zip]]
287 * [[attach:Alle Beispiele.zip]]
288
289
290 {{/layout-cell}}
291
292 {{layout-cell}}
293 [[image:attach:Beispiele Schule - Durchschnittstemperatur_de.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
294 {{/layout-cell}}
295 {{/layout-section}}
296 {{/layout}}