MINT lernen

Übung — AFB I (Reproduzieren)

Zehn Grundaufgaben zum ganzen Kapitel: Code-Ausgaben in sechs Sprachen, SQL-Ergebnisse und Jahreszahlen bestimmen — jeweils eine Zahl als Antwort.

Dein Fortschritt:
0 / 0 Aufgaben
1

Aufgabenblock — AFB I

Zehn Grundaufgaben quer durch das Kapitel „Weitere Programmiersprachen“ — vom Zeitstrahl über Compiler und Interpreter bis zu Typen, SQL-Abfragen und kurzen Programmstücken in Python, JavaScript, PHP, Go und C#. Jede Aufgabe verlangt genau eine Zahl. Das sind die sicheren Punkte in jeder Klassenarbeit. Bei Bedarf hilft dir die Regel-Erinnerung, die Lösung kannst du aufklappen.

A1
Zeitstrahl — Jahre zählen
AFB I

FORTRAN gilt als eine der ersten Hochsprachen. Viel später erschien die erste stabile Version von Rust (Rust 1.0). Wie viele Jahre liegen zwischen diesen beiden Ereignissen?

Jahre
Meilensteine: FORTRAN 1957 · COBOL 1959 · C 1972 · C++ 1985 · Python 1991 · Java, JavaScript und PHP 1995 · C# 2000 · Go 2009 · Rust 1.0 2015. Abstand = späteres Jahr − früheres Jahr.
Lösung anzeigen
FORTRAN erschien 1957, Rust 1.0 im Jahr 2015. Abstand: 2015 − 1957 = 58 Jahre
A2
Interpreter — Übersetzungsschritte zählen
AFB I

Ein Programm besteht aus 4 Anweisungen. Anweisung 1 und Anweisung 4 werden je einmal ausgeführt, die Anweisungen 2 und 3 stehen in einer Schleife mit 6 Durchläufen. Ein einfacher Interpreter übersetzt eine Anweisung jedes Mal neu, wenn er sie ausführt. Wie viele Übersetzungsschritte braucht er für einen Programmlauf?

Interpreter: Er übersetzt Anweisung für Anweisung während des Laufs. Steht eine Anweisung in einer Schleife, wird sie bei jedem Durchlauf erneut übersetzt. Ein Compiler dagegen übersetzt jede Anweisung genau einmal vor dem Start.
Lösung anzeigen
Anweisung 1: 1-mal, Anweisung 2: 6-mal, Anweisung 3: 6-mal, Anweisung 4: 1-mal. Summe: 1 + 6 + 6 + 1 = 14 Übersetzungsschritte Ein Compiler käme mit 4 Schritten aus — dafür muss er fertig sein, bevor das Programm startet.
A3
JavaScript — Text und Zahl gemischt
AFB I

Welche Zahl gibt diese JavaScript-Zeile aus?

JavaScript
console.log("6" * 2 + 3);
Implizite Umwandlung in JavaScript: Der Operator * wandelt Text in eine Zahl um. Der Operator + verkettet, sobald einer der beiden Werte Text ist, sonst addiert er. Gerechnet wird Punkt vor Strich, gleichrangige Operatoren von links.
Lösung anzeigen
"6" * 2: Das * macht aus dem Text "6" die Zahl 6, also 12 (eine Zahl). Danach 12 + 3: beide Werte sind Zahlen, also wird addiert = 15
A4
PHP — rechnen mit Text
AFB I

Welche Zahl schickt dieses PHP-Skript an den Browser?

PHP
<?php
$a = "5";
$b = 3;
echo $a + $b * 2;
?>
PHP-Regeln: In PHP rechnet + immer: Ein Text wie "5" wird dabei zur Zahl. Verkettet wird in PHP mit dem Punkt .. Auch hier gilt Punkt vor Strich.
Lösung anzeigen
Punkt vor Strich: $b * 2 = 6. Dann "5" + 6: PHP wandelt "5" in die Zahl 5 um und addiert = 11 (JavaScript würde hier „56“ ausgeben.)
A5
Python — zwei Arten zu teilen
AFB I

Welche Zahl gibt Python aus? Schreibe Kommazahlen mit Komma.

Python
print(7 / 2 + 7 // 2)
Teilen in Python: In Python liefert / immer eine Kommazahl, // teilt ganzzahlig (die Nachkommastellen fallen weg).
Lösung anzeigen
7 / 2 = 3.5 und 7 // 2 = 3. Zusammen: 3.5 + 3 = 6,5 Python schreibt die Ausgabe als 6.5.
A6
Go — Ganzzahldivision und Rest
AFB I

Welche Zahl gibt dieses Go-Programmstück aus?

Go
x := 7
y := 2
fmt.Println(x/y + x%y)
Go-Regeln: := legt eine neue Variable an, ihr Typ (hier int) wird aus dem Wert abgeleitet. Teilt man zwei int-Werte mit /, fallen die Nachkommastellen weg; % liefert den Rest.
Lösung anzeigen
x/y = 7 / 2 = 3 (ganzzahlig), x%y = 7 % 2 = 1 (Rest). Summe: 3 + 1 = 4
A7
SQL — Datensätze zählen
AFB I

Eine Schulbibliothek speichert ihre Bücher in der Tabelle buecher:

Tabelle buecher
titelautorjahrseitengenre
Der HobbitTolkien1937310Fantasy
MomoEnde1973304Fantasy
TintenherzFunke2003576Fantasy
Emil und die DetektiveKästner1929176Krimi
TschickHerrndorf2010256Roman
Die unendliche GeschichteEnde1979480Fantasy
Rico, Oskar und die TieferschattenSteinhöfel2008224Krimi

Welche Zahl liefert diese Abfrage?

SQL
SELECT COUNT(*) FROM buecher
WHERE genre = 'Fantasy' AND seiten > 300;
SQL-Regeln: WHERE behält nur die Zeilen, für die die Bedingung wahr ist. Bei AND müssen beide Teilbedingungen gelten. COUNT(*) zählt die übrig gebliebenen Zeilen.
Lösung anzeigen
Fantasy-Bücher: Der Hobbit (310), Momo (304), Tintenherz (576), Die unendliche Geschichte (480). Alle vier haben mehr als 300 Seiten — auch Momo mit 304. COUNT(*) = 4
A8
SQL — Zeilen der Ergebnistabelle
AFB I

Die Klasse 9b hat Spiele bewertet (0 bis 10 Punkte) und in der Tabelle spiele gespeichert:

Tabelle spiele
namegenrejahrbewertung
MinecraftSandbox20119
Tetris 99Puzzle20197
CelesteJump'n'Run20189
Stardew ValleySimulation20168
Among UsParty20187
Portal 2Puzzle201110
Mario Kart 8 DeluxeRennspiel20178

Wie viele Zeilen hat die Ergebnistabelle dieser Abfrage?

SQL
SELECT name FROM spiele
WHERE jahr >= 2018 OR bewertung > 8;
Zeilen
SQL-Regeln: Bei OR reicht es, wenn eine der beiden Teilbedingungen wahr ist. Jede Zeile kommt höchstens einmal in das Ergebnis, auch wenn beide Bedingungen gelten.
Lösung anzeigen
Jahr ab 2018: Tetris 99, Celeste, Among Us. Bewertung über 8: Minecraft, Celeste, Portal 2. Celeste erfüllt beide Bedingungen, zählt aber nur einmal. Ergebnis: Tetris 99, Celeste, Among Us, Minecraft, Portal 2 = 5 Zeilen
A9
Funktional — filter, map, reduce
AFB I

Welche Zahl gibt dieses JavaScript-Programmstück aus?

JavaScript
let werte = [5, 1, 4, 2, 6];
let ergebnis = werte
  .filter(x => x > 3)
  .map(x => x * 2)
  .reduce((a, b) => a + b, 0);
console.log(ergebnis);
Funktionale Bausteine: filter behält die Elemente, für die die Bedingung wahr ist. map wendet eine Funktion auf jedes Element an. reduce fasst alle Elemente zu einem Wert zusammen — hier eine Summe mit Startwert 0.
Lösung anzeigen
filter(x => x > 3) → [5, 4, 6]. map(x => x * 2) → [10, 8, 12]. reduce addiert: 10 + 8 + 12 = 30
A10
C# — erst ganzzahlig, dann Kommazahl
AFB I

Welche Zahl gibt dieses C#-Programmstück aus?

C#
int a = 7;
int b = 2;
Console.WriteLine(a / b * 2.0);
Teilen in C#: C# ist statisch typisiert wie Java: int / int ist eine Ganzzahldivision. Erst wenn eine Kommazahl wie 2.0 beteiligt ist, wird mit Kommazahlen gerechnet. Gerechnet wird von links nach rechts.
Lösung anzeigen
Von links: a / b = 7 / 2 = 3 (beide int, der Rest fällt weg). Dann 3 · 2.0 = 6.0 — C# gibt = 6 aus. Wer 7 statt 6 erwartet, hat 3,5 · 2 gerechnet.