MINT üben

Implementieren auf Papier

Dreißig Übungen rund ums Implementieren: Code lesen, Fehler und Randfälle finden und Lösungen entwerfen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Die Playlist
AFB I

Eine Playlist wird als dynamische Reihung lieder verwaltet; sie enthält mindestens drei Lieder. Wende die Operationen der dynamischen Reihung an und stelle bei jeder Zeile die Ampel ein: Gibt es die Operation, ist der Aufruf richtig geschrieben und läuft er?

Gib jeder Situation eine Ampelfarbe: Klicke auf das passende Licht und prüfe dann. Mit der Tastatur: Tab zur Ampel, ↑/↓ oder 1–3 wählt die Farbe.
  • Rot: Operation gibt es nicht
  • Gelb: Name richtig, Aufruf falsch
  • Grün: Richtig
  1. lieder.append("Rock")

  2. lieder.add("Pop")

  3. x = lieder.getItem(lieder.getLength())

  4. lieder.delete(0)

  5. x = lieder.get(0)

  6. lieder.setItem(1)

Gibt es den Namen nicht, ist die Zeile rot. Stimmt der Name, aber nicht die Argumente oder der Index, ist sie gelb. Alles andere ist grün.
Lies zuerst den Namen der Operation. Danach zählst du die Argumente und prüfst den Index.
Die Operationen der dynamischen Reihung heißen append, insertAt, setItem, delete, getItem und getLength. Der gültige Indexbereich ist 0 bis getLength() − 1.
A2
Das Testprotokoll
AFB II

Ein Schüler testet diesen Programmausschnitt von Hand:

s = 10
for i in range(2, 6):
  s = s - i

Untersuche sein Protokoll: Klicke die Zeilen mit falschen Angaben an und trage die richtige Zahl ein.

Klicke die Zeilen an, die du für falsch hältst — dabei klappt ein Feld für die Korrektur auf. Geprüft wird beides: die Auswahl und die Korrekturen.
range(2, 6) endet vor der 6: 2, 3, 4, 5 sind vier Durchläufe. s wird 10 → 8 → 5 → 1 → −4. Die Laufvariable behält nach der Schleife ihren letzten Wert 5.
Notiere die Werte von i und s in einer kleinen Tabelle, eine Zeile je Durchlauf, und vergleiche sie mit den Behauptungen.
Zähle die Werte, die range(2, 6) liefert. Die Laufvariable i behält ihren letzten Wert, auch wenn die Schleife schon beendet ist.
A3
Vorn und hinten
AFB II

An einer Kasse wird diese Schlange verwaltet:

q = Queue()
q.enqueue("A")
q.enqueue("B")
q.enqueue("C")
x = q.dequeue()
q.enqueue(x)
y = q.head()
z = q.dequeue()

Erkläre den Ablauf, indem du die Lücken füllst. Zwei Wörter bleiben übrig.

Wort anklicken, dann Lücke anklicken (oder umgekehrt) — mit Tab und Enter geht es genauso. Ein Klick auf eine gefüllte Lücke legt das Wort zurück.

Zuerst liefert dequeue() den Wert . Mit enqueue(x) stellt sich dieser Wert wieder an. Weil head() nichts entnimmt, liefern y und z beide . Danach bleiben Elemente in der Schlange, vorn steht .

dequeue() entnimmt A, enqueue(x) stellt A hinten wieder an: B, C, A. head() liefert B, ohne etwas zu entnehmen, und dequeue() liefert danach ebenfalls B. Übrig bleiben C und A, vorn steht C.
Schreibe die Schlange nach jeder Zeile von vorn nach hinten auf. Prüfe bei head() und dequeue(), ob sich die Schlange verändert.
head() liefert das vorderste Element und lässt es stehen, dequeue() nimmt es weg. Beide liefern deshalb zweimal hintereinander denselben Wert.