Zehn Übungen zu statischen Reihungen — vom ersten Index bis zur Reihung, die zwei Namen hat.
Dein Fortschritt:
0 / 0 Aufgaben
1
Übungsaufgaben
Zehn Übungen zum Klicken, Zuordnen, Nachvollziehen und Korrigieren — von AFB I bis AFB III. Jede Übung gibt sofort Rückmeldung; wenn Sie nicht weiterkommen, helfen die gestuften Tipps.
A1
Übersetzt, bricht ab oder läuft?
AFB I
Nicht jede Zeile mit eckigen Klammern ist richtig. Ordnen Sie jede Anweisung zu: Läuft sie fehlerfrei, meldet schon der Compiler einen Fehler oder bricht das Programm erst beim Ausführen ab?
Ziehen Sie jede Karte in den passenden Korb — oder wählen Sie sie mit Enter aus und drücken dann die Ziffer des Korbs (0 legt sie zurück).
1läuft fehlerfrei
2Übersetzungsfehler
3Abbruch beim Ausführen
Typfehler (2.5 in einer int-Reihung, Text in einer boolean-Reihung) und eine fehlende Länge bei new int[] erkennt schon der Compiler. Ob ein Index gültig ist, stellt sich erst beim Ausführen heraus: sitz[3] und tag[-1] liegen außerhalb von 0 bis Länge − 1 und lösen eine ArrayIndexOutOfBoundsException aus.
Ansatz: Prüfen Sie zuerst den Typ jedes Werts, dann ob new eine Länge bekommt.
Weiter: Übersetzt wird ein Index nie geprüft — sitz[3] ist für den Compiler eine ganz normale Zahl in Klammern.
A2
Die 45. Minute
AFB I
Ein Freibad zählt eine Stunde lang jede Minute die Besucher am Eingang: int[] besucher = new int[60]; Die Zahl der ersten Minute steht in besucher[0]. Geben Sie den Index, unter dem die Zahl der 45. Minute steht.
Tragen Sie das Ergebnis ein — Enter prüft direkt.
Die 1. Minute hat Index 0, also hat die n-te Minute den Index n − 1: besucher[44]. Der größte Index ist 59 — die 60. Minute.
Ansatz: Welchen Index hat die 1. Minute, welchen die 2.?
Weiter: Der Index ist immer um eins kleiner als die Platznummer beim Zählen ab 1.
A3
Stimmt's? — Aktienkurse
AFB I
Gegeben ist double[] kurs = new double[5];Nennen Sie zu jeder Aussage, ob sie stimmt.
5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann starten Sie die Serie mit „Neue Runde“ neu.
Aussage 1 von 5
Eine statische Reihung behält ihre Länge. „Verlängern“ heißt immer: neue, größere Reihung anlegen und die Werte umkopieren.
Ansatz: Denken Sie an Index ab 0 und an den Standardwert von double.
Weiter: Bei der letzten Aussage: Verändert new eine vorhandene Reihung oder erzeugt es eine neue?
A4
Belegung eines Lagers
AFB II
Ein Online-Shop verwaltet vier Lagerplätze: int[] lager = new int[4]; Danach werden diese Anweisungen ausgeführt:
Wenden Sie die Anweisungen an und tragen Sie den Inhalt der Reihung am Ende ein.
Füllen Sie alle Felder aus und prüfen Sie dann. Enter in einem Feld prüft ebenfalls.
Index
0
1
2
3
Wert
Nach Zeile 1: {5, 0, 0, 0} · Zeile 2: {5, 0, 0, 7} · Zeile 3: {5, 14, 0, 7} · Zeile 4: {4, 14, 0, 7} · Zeile 5: {4, 14, 4, 7}. Zeile 3 benutzt den alten Wert von lager[3], die Änderung in Zeile 4 wirkt nicht zurück.
Ansatz: Notieren Sie nach jeder Zeile den ganzen Inhalt der Reihung.
Weiter: Zeile 3 rechnet mit lager[3] = 7; lager.length ist 4.
A5
Gästeliste anlegen
AFB II
Für eine Feier sollen die Namen von fünf Gästen gespeichert werden. Ergänzen Sie den Code und den Text — 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.
teilnehmer = String[5]; Der erste Gast steht in teilnehmer[], der letzte in teilnehmer[]. Die Anzahl der Plätze liefert teilnehmer.. Solange kein Name eingetragen ist, enthält jeder Platz .
5 ist die Länge, aber kein gültiger Index. size() gibt es bei Listen (Kapitel 4), nicht bei Reihungen. Leere String-Plätze enthalten null — also noch gar keinen Text, auch keinen leeren.
Ansatz: Eine Deklaration hat die Form Typ[] name = new Typ[n];
Weiter: Bei fünf Plätzen laufen die Indizes von 0 bis 4.
A6
Fehlersuche: Notenliste
AFB II
Lea speichert vier Noten und liest sie aus. Analysieren Sie ihren Code — drei Zeilen sind falsch.
In diesem Code stecken Fehler. Klicken Sie genau die falschen Zeilen an — die richtigen müssen stehen bleiben.
Zeile 3 übersetzt zwar, bricht aber beim Ausführen ab. Zeile 4 und Zeile 6 lehnt schon der Compiler ab. Zeile 5 ist korrekt: noten[0] enthält noch den Standardwert 0.0.
Ansatz: Prüfen Sie jede Zeile auf gültigen Index, richtige Schreibweise und passenden Typ.
Weiter: Die Reihung hat 4 Plätze — welcher Index ist der größte?
A7
Ringtausch in der Reihung
AFB IIMix
Die Reihung int[] gewicht = {12, 7, 9}; soll so geändert werden, dass erstes und letztes Element getauscht sind und am Ende 9 12 ausgegeben wird. Stellen Sie den Ablauf in der richtigen Reihenfolge dar.
Ziehen Sie die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
Wie beim Tausch zweier Variablen (Kapitel 1) braucht man eine Hilfsvariable: Ohne hilf würde gewicht[0] = gewicht[2]; die 12 überschreiben, und beide Plätze enthielten 9.
Ansatz: Ein Wert, der gleich überschrieben wird, muss vorher gesichert werden.
Weiter: Die Ausgabe kommt ganz zum Schluss, sonst stünde in gewicht[2] noch die 9.
A8
Das letzte Element — Länge unbekannt
AFB III
Eine Methode erhält eine Reihung int[] sitze unbekannter Länge k (mit \(k\ge1\)); zusätzlich ist k als Variable bekannt. Untersuchen Sie, welche Anweisungen das letzte Element auf 1 setzen.
Mehrere Antworten sind richtig. Markieren Sie alle zutreffenden und klicken Sie dann auf „Prüfen“.
Der letzte Index ist immer Länge − 1, egal wie die Länge ausgedrückt wird. sitze[-1] ist in Python das letzte Element, in Java aber ein Laufzeitfehler.
Ansatz: Welcher Index gehört bei der Länge k zum letzten Platz?
Weiter: Drei Anweisungen sind richtig — auch der Umweg über eine Hilfsvariable.
A9
Staffel speichern und korrigieren
AFB III
Ein Programm soll die drei Läufer einer Staffel speichern: Ada läuft zuerst, Linus als Letzter. Danach soll die Anzahl der Läufer ermittelt und eine Zwischenzeit von 12,5 Sekunden gespeichert werden. Überprüfen Sie den Code und korrigieren Sie die fehlerhaften Zeilen.
Klicken Sie jede fehlerhafte Zeile an und tragen Sie im aufklappenden Feld die korrigierte Zeile ein. Geprüft werden Auswahl und Korrektur (Leerzeichen sind egal).
Korrektur:
Korrektur:
Korrektur:
Bei drei Plätzen ist team[2] der letzte. length steht ohne Klammern. "12.5" ist ein Text; in eine double-Reihung gehört die Zahl 12.5 (in Java mit Punkt).
Ansatz: Drei Zeilen sind falsch: ein Index, eine Schreibweise, ein Typ.
Weiter: Korrigieren Sie nur die Kleinigkeit, der Rest der Zeile bleibt gleich.
kopie = stand kopiert keine Werte, sondern nur den Verweis: Beide Namen zeigen auf dieselbe Reihung. Nach kopie[1] = 20 ist auch stand[1] = 20, also stand[2] = 20 + 20 = 40. Wer 28 erhält, hat zwei getrennte Reihungen angenommen.
Ansatz: Wie viele Reihungen gibt es nach Zeile 2 — eine oder zwei?
Weiter: Eine Änderung über kopie ist auch über stand sichtbar.