Informatik

Übungsstunde

Aufbau und Handhabung der Liste habt ihr gemeinsam erarbeitet. In dieser Stunde suchst du dir einen von zwei Wegen aus.

Weg Was du machst Wohin
Sicher werden kleine Aufgaben ohne Projekt, Schritt für Schritt schwieriger, mit Tests zur Rückmeldung weiter auf dieser Seite
Im Spiel anwenden eine Mechanik mit einer Liste in dein eigenes Spiel einbauen Spielwerkstatt: ein Inventar und die Mechaniken mit einer Liste

Beide Wege üben dasselbe: eine Liste über ihre Methoden benutzen. Du kannst sie auch wechseln.

Stufe 1: Zustand verfolgen

Das Programm erzeugt eine Liste und verändert sie. Setze die Schritte im Objektdiagramm unter dem Programm um. Achte besonders darauf, wohin current zeigt.

List<String> farbenListe = new List<String>();
// 1. Diagramm
 
farbenListe.append("Rot");
farbenListe.append("Blau");
farbenListe.append("Gelb");
// 2. Diagramm
 
farbenListe.toFirst();
farbenListe.next();
farbenListe.remove();
farbenListe.next();
farbenListe.insert("Grün");
farbenListe.append("Orange");
// 3. Diagramm

Stufe 2: Code und Struktogramme lesen

In der Liste stehen Anna, Ben, Cem und Dora.

a) Was liefert raten(liste)? Beschreibe in einem Satz, was die Methode allgemein tut.

int raten(List<String> pListe) {
    int ergebnis = 0;
    pListe.toFirst();
    while (pListe.hasAccess()) {
        if (pListe.getContent().length() > 3) {
            ergebnis++;
        }
        pListe.next();
    }
    return ergebnis;
}

b) In der Liste stehen Anna und Ben. Wie sieht sie aus, nachdem verdoppeln aus dem Struktogramm aufgerufen wurde?

c) Schreibe verdoppeln als Java-Methode void verdoppeln(List<String> pListe).

Auflösung. Erfrage das Passwort bei deiner Lehrkraft.

Stufe 3: Fehler finden

Jede der drei Methoden enthält genau einen Fehler. Beschreibe, was beim Aufruf mit der Liste Anna, Anna, Ben passiert, und verbessere die Methode.

a) Die Methode soll alle Namen ausgeben.

void ausgeben(List<String> pListe) {
    pListe.toFirst();
    while (pListe.hasAccess()) {
        IO.println(pListe.getContent());
    }
}

b) Die Methode soll jedes Vorkommen von pWert entfernen.

void entferneAlle(List<String> pListe, String pWert) {
    pListe.toFirst();
    while (pListe.hasAccess()) {
        if (pListe.getContent().equals(pWert)) {
            pListe.remove();
        }
        pListe.next();
    }
}

c) Die Methode soll das erste Element liefern. Direkt nach dem Füllen der Liste liefert sie null. Warum?

String erstes(List<String> pListe) {
    return pListe.getContent();
}
Auflösung. Erfrage das Passwort bei deiner Lehrkraft.

Stufe 4: Methoden schreiben

Implementiere die Methoden der Klasse Uebungen, bis alle Tests im Reiter Testrunner grün sind. Fang oben an – die Aufgaben werden nach unten schwieriger.

a) int summe(List<Integer> pZahlen) liefert die Summe aller Zahlen.

b) int zaehle(List<String> pListe, String pGesucht) liefert, wie oft pGesucht vorkommt.

c) int maximum(List<Integer> pZahlen) liefert die größte Zahl. Die Liste enthält mindestens eine Zahl.

d) String letztes(List<String> pListe) liefert das letzte Element, bei einer leeren Liste null. Es geht ohne Schleife.

e) void vertauschen(List<String> pListe, int pPos1, int pPos2) vertauscht die Elemente an den Stellen pPos1 und pPos2, gezählt ab 0. Hat die Liste nicht genügend Elemente, passiert nichts.

f) Bevor du vertauschen programmierst: Entwirf im Editor zuerst ein Struktogramm. Setze es danach um.

Tipp: vertauschen

Geh die Liste zweimal durch und zähle dabei die Stelle mit.

  1. Beim ersten Durchlauf merkst du dir die beiden Inhalte an pPos1 und pPos2. Hast du danach nicht beide gefunden, ist die Liste zu kurz.
  2. Beim zweiten Durchlauf setzt du mit setContent an pPos1 den zweiten und an pPos2 den ersten Inhalt.
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Stufe 5: Knobelaufgabe

Doppelte entfernen. Implementiere void entferneDoppelte(List<String> pListe). Jeder Name soll danach nur noch einmal vorkommen, und zwar an der Stelle seines ersten Auftretens. Aus Anna, Ben, Anna, Cem, Ben wird Anna, Ben, Cem.

Die Schwierigkeit: Die Liste hat nur ein aktuelles Element. Wer beim Prüfen „kam der Name schon vor?“ in derselben Liste sucht, verliert die Stelle, an der er gerade steht.

Tipp

Lege eine zweite Liste gesehen an. Darin sammelst du jeden Namen, der dir zum ersten Mal begegnet. Steht der aktuelle Name schon in gesehen, wird er entfernt. Das Suchen in gesehen bewegt nur deren aktuelles Element – deine Stelle in pListe bleibt erhalten.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Übungsstunde

Teilbare URL erstellen

Abschnitte auswählen