Hello Dart: Einführung in die Programmierung (Deutsch)

Teil 2: Schleifen

Im letzten Teil haben wir gelernt, wie wir unserem Spieler eine Reihe von Anweisungen geben können. Anstatt jede Anweisung einzeln aufzuführen, können wir auch Anweisungen wiederholen lassen. Beim Programmieren nennt man solche Wiederholungen Schleifen.

Als erstes Beispiel für eine Schleife möchten wir Folgendes tun:

AUFGABE 2.01: Loop

Schleife

Der Spieler soll sich solange vorwärts bewegen, bis er nicht mehr weiter kann.

In Dart können wir das wie folgt ausdrücken:

while (canMove()) {
  move();
}

Mit while wird etwas solange wiederholt, wie die Bedingung in der Klammer zutrifft. Wenn eine Bedingung zutrifft, dann ist sie true (=wahr). Sobald der Spieler am Rand ankommt, dann meldet die Sensor-Funktion canMove() den Wert false (=falsch) zurück und der Spieler hört auf, sich zu bewegen.

Testen Sie dieses Programm, indem Sie die while-Schleife in die start()-Funktion von scenario2.01 hinein schreiben.

Logische Operatoren

Unsere Sensor-Funktionen (siehe Einleitung) antworten alle entweder mit true oder false, wenn man diese aufruft. Einen solchen Wert, der entweder wahr oder falsch sein kann, nennt man Boolean.

Boolesche Werte können mit Hilfe von logischen Operatoren auch kombiniert oder verändert werden. Die folgende Tabelle zeigt die drei wichtigsten logischen Operatoren in Dart:

Operator Beschreibung Beispiel
&& und treeFront() && onStar() Ist erfüllt (true), wenn beide Aussagen erfüllt sind, das heisst wenn der Spieler vor einem Baum und auf einem Stern steht.
|| oder treeFront() || onStar() Ist dann erfüllt (true), wenn entweder die eine oder die andere Aussage oder beide erfüllt sind.
! nicht !treeFront() Ändert einen Ausdruck von true in false und umgekehrt. Diese Aussage wäre also dann erfüllt (true), wenn der Spieler nicht vor einem Baum steht.

Ein Beispiel in Dart könnte wie folgt aussehen:

if (treeLeft() && onStar()) {
  // Mache etwas ...
}

oder auch kombiniert:

if (treeLeft() && !treeRight()) {
  // Mache etwas ...
}

AUFGABE 2.02: Loop Star

Schleife mit Stern

Öffnen Sie das scenario2.02 und programmieren Sie den Spieler mit einer Schleife so, dass er vorwärts läuft, bis er auf dem Stern steht.

AUFGABE 2.03: Leaving the Tunnel

Tunnel verlassen

Unser Spieler ist in einem Tunnel und möchte raus. Schreiben Sie ein Programm für scenario2.03, bei dem der Spieler aus dem Tunnel hinaus läuft und stehen bleibt, sobald auf einer der beiden Seiten kein Baum mehr steht.

Am Schluss soll er ausserdem einen Stern ablegen.

AUFGABE 2.04: Afraid of Tunnel

Angst vor dem Tunnel

Der Spieler hat Angst vor Tunneln. Er soll auf jedem Feld überprüfen, ob es ein Tunneleingang ist (das heisst, ob es auf beiden Seiten Bäumen hat). Ist dies der Fall, so soll er stehen bleiben und in einer Sprechblase sagen, dass er Angst hat.

AUFGABE 2.05: Climbing Up

Treppensteigen

Der Spieler soll eine beliebig lange Treppe hochlaufen.

Schreiben Sie eine Funktion oneStepUp(), wo Sie den Spieler eine einzelne Stufe hochsteigen lassen. Überlegen Sie sich, wie Sie erkennen können, ob der Spieler noch eine Stufe steigen muss oder ob er zuoberst angekommen ist.

For-Schleifen

Es gibt neben der while-Schleife eine weitere, sehr wichtige Art von Schleife: die for-Schleife.

for (var i = 0; i < 4; i++) {
  move();
}

Bei diesem Beispiel wird ein Zähler i verwendet. Der Zähler wird zuerst auf 0 gesetzt. Danach wird bei jedem Schleifendurchgang geprüft, ob i kleiner ist als 4 und schliesslich wird i um eins erhöht. Das bedeutet, dass die move()-Anweisung in dieser Schleife vier mal ausgeführt wird.

Sie werden der for-Schleife später immer wieder begegnen, auch zum Teil in etwas abgewandelter Form. Für den Moment reicht uns mal das Wissen, dass es sie gibt.

Wie weiter?

→ Im Teil 3 lernen wir mit bedingten Anweisungen eine weitere Art kennen, unsere Programme zu steuern.


Quellen
Planet Cute Bilder stammen von Daniel Cook (Lostgarden.com), veröffentlicht unter CC BY 3.0.
Oleg Yadrov hat die “Planet Cute” Bilder weiterentwickelt und mir zur Verfügung gestellt. Optimiert wurden sie mit dem grossartigen TexturePacker.
Einige Übungen in Hello Dart sind inspiriert von Kara. Kara wurde entwickelt von Jürg Nievergelt, Werner Hartmann, Raimond Reichert und anderen.