Wissen und Reproduzieren
18 PunkteOrdne jedem Projekt die passende Sprache zu und gib an, welche Aussagen über Übersetzer richtig sind.
Lösung anzeigen (nach Auswerten freigeschaltet)
a) Unity-Spiel → C# · Bibliotheks-Datenbank → SQL · Webseite vom Server → PHP · Animation im Browser → JavaScript · iPhone-App → Swift. Python und Go werden nicht gebraucht. Je richtige Zuordnung 1 P. (5 P)
b) Richtig: Compiler übersetzt vorab; Java → Bytecode → JVM; Maschinencode ist prozessorabhängig. Falsch: Ein Interpreter bemerkt Fehler erst, wenn er die Zeile erreicht; Python wird interpretiert. Jede falsch gewählte Aussage hebt eine richtige auf. (3 P)
Bestimme jeweils die Ausgabe. Schreibe Kommazahlen mit Komma. Ist die Ausgabe ein Text aus Ziffern, gib die Ziffern als Zahl ein.
int-Werte: 1 Pprint("8" + 2)? (eine Antwort richtig) 2 Pint-Werte: 2 PLösung anzeigen (nach Auswerten freigeschaltet)
a) Ein Wert ist Text, also verkettet +: „82“ → 82 (1 P)
b) * wandelt in eine Zahl um: 16 (1 P)
c) In PHP rechnet + immer: 10 (1 P)
d) In Python liefert / eine Kommazahl: 4,5 (1 P)
e) int durch int ist in Java ganzzahlig: 4 (1 P)
f) 9%2 = 1, 9/2 = 4 (ganzzahlig): 5 (1 P)
g) Python verknüpft Text und Zahl nicht mit +: TypeError zur Laufzeit (2 P)
h) 11 / 2 = 5 (ganzzahlig), 5 · 2 = 10 — nicht 11 (2 P)
Zusammenhänge herstellen
21 PunkteEin Zoo speichert seine Tiere in der Tabelle tiere (Gewicht in kg, Alter in Jahren):
| name | art | gewicht | jahre | gehege |
|---|---|---|---|---|
| Kira | Löwe | 190 | 7 | Savanne |
| Bruno | Braunbär | 320 | 12 | Wald |
| Luna | Zebra | 280 | 5 | Savanne |
| Pip | Pinguin | 25 | 3 | Eiswelt |
| Tara | Löwe | 150 | 4 | Savanne |
| Olli | Pinguin | 30 | 9 | Eiswelt |
| Mia | Braunbär | 210 | 6 | Wald |
| Zazu | Zebra | 300 | 11 | Savanne |
SELECT name FROM tiere WHERE gehege = 'Savanne' AND jahre > 5;
SELECT name, gewicht FROM tiere WHERE gewicht > 100 ORDER BY gewicht ASC;
SELECT COUNT(*) FROM tiere WHERE art = 'Pinguin' OR jahre >= 10;
SELECT AVG(gewicht) FROM tiere WHERE art = 'Löwe';
Lösung anzeigen (nach Auswerten freigeschaltet)
a) Savanne: Kira (7), Luna (5), Tara (4), Zazu (11). Älter als 5: Kira und Zazu → 2 Zeilen. Luna mit genau 5 Jahren zählt nicht, weil > und nicht >= dasteht. (2 P)
b) Über 100 kg: Kira 190, Bruno 320, Luna 280, Tara 150, Mia 210, Zazu 300. ASC sortiert aufsteigend, also steht Tara mit 150 kg oben. (2 P)
c) Pinguine: Pip, Olli; mindestens 10 Jahre: Bruno (12), Zazu (11). Bei OR reicht eine Bedingung → 4 (2 P)
d) Löwen: Kira 190, Tara 150 → (190 + 150) : 2 = 170 (2 P)
e) Richtig ist die Abfrage mit 'Wald' in Anführungszeichen und DESC (schwerstes zuerst). Ohne Anführungszeichen wäre Wald ein Spaltenname, ASC sortiert falsch herum, und WHERE muss vor ORDER BY stehen. (2 P)
f) Deklarativ: Man beschreibt das gewünschte Ergebnis, die Datenbank entscheidet selbst, wie sie sucht. (1 P)
Ein Spiele-Club zeigt seine Bestenliste mit diesem PHP-Skript auf dem Server an:
<?php echo "<ol>"; for ($i = 1; $i <= 4; $i++) { echo "<li>Rang $i: " . (100 - $i * 15) . " Punkte</li>"; } echo "</ol>"; ?>
<li>-Elemente das gesendete HTML enthält. 1 P<li>-Element. 2 PDas folgende Rust-Programm wird dem Compiler übergeben:
fn main() { // Zeile 1 let name = String::from("Mia"); // Zeile 2 let kopie = name; // Zeile 3 let alter = 14; // Zeile 4 let alter2 = alter; // Zeile 5 println!("{} {}", alter, alter2); // Zeile 6 println!("{}", name); // Zeile 7 }
In einem Unity-Spiel steht in Update() die Zeile transform.Translate(5f * Time.deltaTime, 0, 0);. Das Spiel läuft mit 60 Bildern pro Sekunde, die Zeile wird 3 Sekunden lang in jedem Frame ausgeführt.
Update() in diesen 3 Sekunden aufgerufen wird. 2 PLösung anzeigen (nach Auswerten freigeschaltet)
a) $i läuft von 1 bis 4: 4 Elemente (1 P)
b) Letzter Durchlauf $i = 4: 100 − 4 · 15 = 40 Punkte (davor 85, 70, 55) (2 P)
c) PHP läuft auf dem Server; der Browser erhält nur das erzeugte HTML. (1 P)
d) Zeile 3 verschiebt den Besitz des Strings an kopie, name ist danach ungültig — deshalb lehnt der Borrow Checker Zeile 7 ab. Die Zahl 14 wird in Zeile 5 kopiert, alter bleibt gültig. (2 P)
e) 60 · 3 = 180 Aufrufe (2 P)
f) Durch Time.deltaTime bedeutet 5 „5 Einheiten pro Sekunde“: 5 · 3 = 15 Einheiten — unabhängig von der Bildrate. (2 P)
Verallgemeinern und beurteilen
11 PunkteDie Schülerzeitung plant eine Umfrage-Webseite: Man wählt im Browser eine Antwort, der Server speichert die Stimme in einer Datenbank und zeigt danach das Ergebnis. Einmal pro Woche soll zusätzlich ein Auswertungsprogramm Statistiken über alle Umfragen berechnen. Eine Fassung in C bräuchte dafür 0,4 s. Modell für die Laufzeit (Vielfaches von C): C 1 · Go 1,5 · JavaScript 2 · PHP 8 · Python 25.
Lösung anzeigen (nach Auswerten freigeschaltet)
a) t(Python) = 25 · 0,4 s = 10 s (2 P)
b) t(PHP) = 8 · 0,4 s = 3,2 s (2 P)
c) Aufbau → HTML · Warnung im Browser → JavaScript (clientseitig) · Server → PHP (serverseitig) · Auszählen → SQL, z. B. SELECT COUNT(*) FROM stimmen WHERE antwort = 'ja'; Je 1 P. (4 P)
d) Gut begründet sind die Aussagen über seltene Ausführung und Python, über Vorwissen und über sehr häufige Ausführung. Falsch: Es gibt keine „beste“ Sprache — Laufzeit ist nur ein Kriterium; PHP kann durchaus rechnen und auswerten; im Browser läuft JavaScript, nicht Python. (3 P)
So könnte eine ausformulierte Beurteilung lauten: „Für die wöchentliche Auswertung ist Python geeignet. Sie ist zwar 25-mal langsamer als C, 10 s pro Woche sind aber unerheblich. Dafür ist das Programm schneller geschrieben, es gibt Bibliotheken für Statistik, und das Team kennt Python bereits.“
Ergebnis
| Aufgabe | Thema | Punkte |
|---|
Notenschlüssel
| Punkte | Note | Beurteilung |
|---|---|---|
| 50 – 46 P | 1 | sehr gut |
| 45 – 40 P | 2 | gut |
| 39 – 30 P | 3 | befriedigend |
| 29 – 22 P | 4 | ausreichend |
| 21 – 12 P | 5 | mangelhaft |
| 11 – 0 P | 6 | ungenügend |
