Zum Hauptinhalt springen
Grundlagen der Programmierung!

1.4 Wiederholungen

In diesem Kapitel beschäftigen wir uns mit Aufgabenstellungen, bei denen bestimmte Anweisungen mehrfach ausgeführt werden sollen.

1.4.1 Abweisende Schleife (while-Schleife)

Aufgabe 1-9: Szenario – „Ist der Weg frei?“

Ziel dieses Szenarios ist es, dass ein blauer Roboter von Feld (1; 2) aus mit einer Geschwindigkeit von 4 das Zielfeld erreicht.

Allerdings ist in diesem Szenario nur eine Skizze des Spielbrettes vorgegeben, die den grundsätzlichen Aufbau festlegt. Das tatsächlich verwendete Spielbrett kann jedoch in seiner Breite und Höhe unterschiedlich groß sein. Es ist daher nicht möglich, dem Roboter vorzugeben, wie viele Felder er auf den einzelnen Wegabschnitten vorwärts gehen soll, da deren Länge bei den verschiedenen Spielbrettvarianten unterschiedlich ist.

Der Quellcode dieses Szenarios muss daher so verfasst werden, dass der Roboter bei allen denkbaren Spielbrettvarianten das Ziel erreicht. Die beiden folgenden Spielbretter zeigen lediglich zwei mögliche Varianten.

  1. Machen Sie sich zunächst mit Hilfe des nachfolgenden Merkekastens mit der Kontrollstruktur „abweisende Schleife“ vertraut und erstellen Sie anschließend den Quellcode.
  2. Lagern Sie Programmabschnitte, die an mehreren Stellen des Quellcodes benötigt werden, in eine separate Methode moveWhilePossible() aus.

Spielbrett 9a

Spielbrett 9b

Problem

Ist zur Entwicklungszeit nicht bekannt, wie oft ein bestimmter Programmabschnitt ausgeführt werden soll, kann dieser nicht einfach mehrfach hintereinander in einer linearen Programmstruktur notiert werden.

Eine abweisende Schleife (while-Schleife) ist eine Kontrollstruktur, die einen Programmabschnitt wiederholt ausführt, solange eine Bedingung erfüllt ist.

Die Bedingung wird in Form eines booleschen Ausdrucks formuliert.

Hat der boolesche Ausdruck den Wert true, wird der zu wiederholende Programmabschnitt ausgeführt. Anschließend wird der boolesche Ausdruck erneut ausgewertet und der Programmabschnitt gegebenenfalls erneut ausgeführt (Schleife).

Hat der boolesche Ausdruck den Wert false, wird die abweisende Schleife verlassen.

Abweisende Schleife (Ablauf)

Abweisende Schleife (Struktogramm)

Abweisende Schleife (Java-Quellcode)

Aufgabe 1-10: Szenario – „Unsichere Lage!“

In diesem Szenario hat sich auf einem der Felder im Bereich (2; 2) bis (7; 2) ein Steinschlag ereignet. Zur Entwicklungszeit ist jedoch nicht bekannt, auf welchem Feld die Steine liegen und um wie viele Steine es sich handelt. Die nachfolgenden Spielbretter 10a und 10b zeigen lediglich zwei mögliche Varianten.

Ein roter Roboter soll mit einer Geschwindigkeit von 4 von Feld (1; 2) starten, den Ort des Steinschlags ausfindig machen, die Steine aufladen und anschließend das Zielfeld erreichen.

Programmieren Sie das Szenario so, dass der Roboter seine Aufgabe auf jeder möglichen Spielbrettvariante erfüllen kann.

Spielbrett 10a

Spielbrett 10b

1.4.2 Zählerschleife (for-Schleife)

Aufgabe 1-11: Szenario – „Wie oft?“

Ziel dieses Szenarios ist es, dass ein Roboter von Feld (1; 1) startend mit einer Geschwindigkeit von 4 das Zielfeld (3; 4) erreicht.

  1. Machen Sie sich zunächst mit Hilfe des nachfolgenden Merkekastens mit der Kontrollstruktur „Zählerschleife“ vertraut und erstellen Sie anschließend den Quellcode.
  2. Lagern Sie Programmabschnitte, die an mehreren Stellen des Quellcodes benötigt werden, in eine separate Methode move(int fieldCount) aus.

Spielbrett 11

Eine Zählerschleife (for-Schleife) ist eine besondere Form der abweisenden Schleife. Sie wird eingesetzt, wenn zur Laufzeit feststeht, wie oft ein Programmabschnitt wiederholt werden soll.

Dazu verfügt die Zählerschleife über eine Variable, die mit einem Startwert initialisiert wird und deren Wert nach jeder ausgeführten Wiederholung angepasst wird.

Wie bei jeder abweisenden Schleife entscheidet auch bei der Zählerschleife eine Bedingung in Form eines booleschen Ausdrucks darüber, ob der zu wiederholende Programmabschnitt ausgeführt wird oder die Schleife verlassen wird. Bei der Zählerschleife ist der boolesche Ausdruck so gestaltet, dass er den Wert true ergibt, wenn die Zählervariable die vorgegebene Bedingung erfüllt.

Häufig wird i als Zählervariable verwendet, mit einem Startwert von 1 initialisiert und ihr Wert nach jeder Wiederholung um 1 erhöht. Der boolesche Ausdruck prüft dann, ob der Wert der Zählervariable kleiner oder gleich der gewünschten Anzahl der Wiederholungen (i<=anzahl) ist.

Zählerschleife (Ablauf)

Zählerschleife (Struktogramm)

Zählerschleife (Java-Quellcode)

Aufgabe 1-12: Szenario – „Und noch eine Runde!“

Auf einem Spielbrett mit 3 mal 3 Wegfeldern startet der Roboter auf Feld (1;1).

Spielbrett 12

Das folgende Struktogramm beschreibt, was geschieht, wenn die Simulation gestartet wird:

  1. Analysieren Sie das Struktogramm. Was tut der Roboter, wenn die Simulation gestartet wird?
  2. Erstellen Sie auf Grundlage des Struktogramms den Quellcode.