Wiki-Quellcode von Programmieraufgabe
Zuletzt geändert von Carina Enke am 15.02.2024
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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}} |