Informatik

Mit der Schlange arbeiten

Im Abitur baust du die Schlange nicht nach, sondern benutzt sie: Du bekommst eine Schlange übergeben und schreibst eine Methode, die etwas mit ihr macht. Dafür gibt es nur vier Werkzeuge – enqueue, front, dequeue und isEmpty aus der Dokumentation.

In der Online-IDE steht die Abiturklasse Queue bereit, sobald ein Block die NRW-Bibliothek lädt. Du musst sie nicht selbst schreiben.

Werkzeugkasten: zwei Muster

Das Abarbeiten nimmt vorne heraus, bis nichts mehr da ist. Danach ist die Schlange leer.

while (!pSchlange.isEmpty()) {
    String vorne = pSchlange.front();   // erst nachsehen ...
    pSchlange.dequeue();                // ... dann entfernen
    // vorne verarbeiten
}

Das Erhalten reiht jedes Element zusätzlich in eine Hilfsschlange ein und füllt die Schlange am Ende daraus wieder auf. Danach ist die Schlange wie vorher.

Queue<String> hilf = new Queue<String>();
while (!pSchlange.isEmpty()) {
    String vorne = pSchlange.front();
    pSchlange.dequeue();
    // vorne verarbeiten
    hilf.enqueue(vorne);
}
while (!hilf.isEmpty()) {
    pSchlange.enqueue(hilf.front());
    hilf.dequeue();
}

Steht in einer Aufgabe „die Schlange soll danach unverändert sein“, brauchst du das zweite Muster.

Aufgabe 1: Abarbeiten

a) Sage voraus, was das Programm ausgibt. Führe es dann aus.

b) Ergänze am Ende eine Zeile, die ausgibt, ob wartende jetzt leer ist. Was ist mit Anna, Ben und Cem passiert?

c) Vertausche die beiden Zeilen in der Schleife, sodass dequeue() vor front() steht. Sage voraus, was nun ausgegeben wird, und prüfe.

Auflösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Zählen, ohne zu zerstören

Das Struktogramm beschreibt die Methode anzahl. Die übergebene Schlange soll danach unverändert sein.

a) Erläutere, wozu die zweite Schleife da ist. Was wäre ohne sie nach dem Aufruf mit der Schlange?

b) Setze das Struktogramm in der Klasse Schlangenwerkzeug unten als Methode int anzahl(Queue<String> pSchlange) in Java um. Prüfe mit dem Reiter Testrunner.

Aufgabe 3: Suchen – erst das Struktogramm

Die Methode boolean enthaelt(Queue<String> pSchlange, String pGesucht) soll liefern, ob pGesucht in der Schlange vorkommt. Auch hier soll die Schlange danach unverändert sein.

a) Entwirf im Editor ein Struktogramm für enthaelt. Orientiere dich am Struktogramm von anzahl.

b) Setze dein Struktogramm in der Klasse Schlangenwerkzeug um, bis die Tests zu enthaelt grün sind.

Weiterdenken:

c) String letztes(Queue<String> pSchlange) liefert das hinterste Element, bei einer leeren Schlange null. Die Schlange bleibt unverändert.

d) Queue<String> reissverschluss(Queue<String> pErste, Queue<String> pZweite) liefert eine neue Schlange, in der die Elemente abwechselnd aus beiden Schlangen kommen – erst aus pErste, dann aus pZweite, dann wieder aus pErste und so weiter. Ist eine der beiden leer, kommt der Rest der anderen hinten an. Die beiden übergebenen Schlangen dürfen dabei leer werden.

Tipp: enthaelt

Die Versuchung ist groß, bei einem Treffer sofort return true zu schreiben. Dann bleibt aber alles, was schon in der Hilfsschlange steht, dort liegen – die Schlange ist danach unvollständig. Merk dir den Treffer in einer Variablen gefunden und gib sie erst am Ende zurück.

Zum Vergleichen von Zeichenketten: vorne.equals(pGesucht), nicht ==.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Mit der Schlange arbeiten

Teilbare URL erstellen

Abschnitte auswählen