MINT üben

Mit gegebenen Klassen arbeiten

Dreißig Übungen zum Benutzen gegebener Klassen und zur Klasse String — von AFB I bis AFB III.

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
Das letzte Zeichen des Grußes
AFB I

Gegeben ist String gruss = "Moin Moin"; Wende die Regeln der Klasse String an und leite so das letzte Zeichen her: Ordne jeder Zeile die passende Begründung zu.

Ordne jeder Zeile der Herleitung die passende Begründung zu: Karte anklicken, dann das Feld neben der Zeile (oder Karte direkt auf das Feld ziehen). Mit der Tastatur: Tab zur Karte, Enter, dann Tab zum Feld und Enter. Ein Klick auf ein belegtes Feld legt die Karte zurück. Nicht alle Karten werden gebraucht.

Zu zeigen: gruss.charAt(gruss.length() - 1) liefert 'n'.

  1. gruss.length() = 9Das Leerzeichen zählt mit: 4 + 1 + 4 Zeichen
  2. letzter Index = 9 − 1 = 8
  3. gruss.charAt(8)
  4. Das Zeichen an Index 8 ist 'n'
Das letzte Zeichen hat den Index length() − 1 = 8. charAt(8) liefert es: ein n. Wer von 1 an zählt, kommt auf Index 9 und damit zu einem Fehler beim Aufruf.
Bestimme zuerst die Länge und dann den letzten Index. Danach setzt du den Index in charAt ein.
Die Zählung beginnt bei 0. Bei neun Zeichen sind die Indizes 0 bis 8 gültig, der letzte Index ist also length() − 1.
A2
Fehlersuche: Benutzerkennung erzeugen
AFB III

Für das Schulnetz soll aus Vor- und Nachnamen eine Kennung entstehen: die ersten drei Buchstaben des Vornamens und die ersten drei des Nachnamens, in Großbuchstaben — hier also JOHPET. Ausgegeben wird sie, wenn sie genau sechs Zeichen lang ist. Beurteile den Quelltext: Drei Zeilen sind falsch, eine davon lässt sich nicht übersetzen.

In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
Mit den Fehlern käme "JoPet" heraus — fünf Zeichen, in gemischter Schreibweise, und es würde gar nichts ausgegeben. Die Zeile if (laenge == 6) ist dagegen korrekt: laenge ist ein int, und int-Werte vergleicht man mit ==. Der Fehler mit length ohne Klammern ist eine typische Verwechslung mit den Reihungen.
Ansatz: Prüfe bei jedem String-Aufruf in der Dokumentation: Stimmen die Parameter? Wird der Rückgabewert benutzt?
Weiter: Wie viele Zeichen liefert substring(0, 2)? Und was passiert mit dem Ergebnis von toUpperCase, wenn es nicht zugewiesen wird?
A3
Solltemperatur im Wohnzimmer
AFB II

Ein Heizungsregler wird über eine gegebene Klasse gesteuert. Die Temperaturen sind in °C angegeben.

Regler
  • c Regler(soll: Ganzzahl)
  • + waermer()
  • + kaelter()
  • + setSoll(t: Ganzzahl)
  • + getSoll(): Ganzzahl
  • Regler(soll) — erzeugt einen Regler mit dieser Solltemperatur.
  • waermer() — erhöht die Solltemperatur um 2 °C; kaelter() senkt sie um 2 °C.
  • setSoll(t) — setzt die Solltemperatur auf t; getSoll() liefert die aktuelle Solltemperatur.
Regler r = new Regler(19);
r.waermer();
int a = r.getSoll();
r.setSoll(16);
int b = r.getSoll();
r.waermer();
r.waermer();
int c = r.getSoll();
r.kaelter();

Stelle die Rangfolge der Werte auf: Sortiere die Karten nach ihrem Wert in °C — der kleinste zuerst.

Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1 b
2 r.getSoll() nach der letzten Zeile
3 Argument im Aufruf von new Regler
4 c
5 a
Der Ablauf: Start 19, waermer() → 21 (das speichert a), setSoll(16) → 16 (b), zweimal waermer() → 20 (c), kaelter() → 18. Die Variablen a, b und c halten den Wert von damals fest und ändern sich nicht mehr. Die Reihenfolge lautet also b = 16, Endwert 18, Startwert 19, c = 20, a = 21.
Verfolge die Solltemperatur Zeile für Zeile. Notiere dir bei jeder Anfrage getSoll(), welcher Wert gerade in der Variablen landet.
Eine Variable wie a speichert den Wert zum Zeitpunkt der Anfrage. Spätere Aufträge verändern das Regler, aber nicht a, b oder c.