Zählschleifen programmieren

Lauflichter findet man inzwischen überall in unserer Welt: An den Rändern von Landebahnen an Flughäfen, an Spieleautomaten, aufdringlichen Werbeschildern, als Blinker von modernen Autos und vieles mehr. Wenn man diese programmieren will, eignen sich dazu am besten Zählschleifen.

Zählschleifen verstehen

Beispiel einer Zählschleife
Beispiel einer Zählschleife.

Das oben abgebildete Programm enthält zwei selbst definierte Blöcke, mit denen sich eine LED an einem beliebigen Pin zwischen 2 und 13 anstellen bzw. ausschalten lässt. In der Endlosschleife wird dann eine Zählschleife genutzt.

Stelle eine Vermutung an, was die Zählschleife bewirkt.

Überprüfe deine Vermutung mit Hilfe einer Trace-Tabelle (siehe unten).

Trace-Tabellen

Trace-Tabellen stellen den Wert von Variablen beim Durchlaufen des Programms dar. Auf diese Art und Weise kann man sich zum Beispiel genau veranschaulichen, wann Schleifen abgebrochen werden.

Zeile i
5 2
6 2
5 3
6 3

Auto-Blinker

An dieser Stelle ist ein Video von Youtube eingebettet. Mit deiner Erlaubnis willigst du ein, dass deine Daten an YouTube in den USA übermittelt werden. Weitere Informationen zur Datenverarbeitung von YouTube findest du in der Datenschutzerklärung von YouTube.

Programmiere ein Lauflicht so, wie es auch als Blinker in modernen Autos genutzt wird. Nutze zunächst nur 5 LEDs (mit Vorwiderstand!).

Hinweis: Du kannst das folgende Programm als Vorlage nutzen, damit du auch über die selbst definierten Blöcke zum Anstellen bzw. Ausstellen einer LED an einem beliebigen Pin zwischen 2 und 13 verfügst. Speichere das Programm als blinker.xml und importiere es in Open Roberta Lab: blinker-start.xml.

La - o - La

Programmiere ein Lauflicht, das hin- und zurückläuft.

Steuerung von Schleifen

Unten siehst du zwei Programme, für die jeweils fünf LEDs mit Vorwiderstand an Pin 2 bis 6 angeschlossen wurden. Darunter siehst du die Wirkung der Programme in einem kurzen Video.

Beschreibe die Wirkung von Die Schleife abbrechen und mit der nächsten Iteration der Schleife fortfahren.

Beispiel für 'break'.
Schleife abbrechen.

Programmdownload: schleife-abbrechen.xml

Beispiel für 'continue'.
Schleife fortfahren.


Programmdownload: schleife-fortfuehren.xml

In Nepo wie in anderen Programmiersprachen gibt es verschiedene Arten von Schleifen. Bisher wurde in Nepo die einfache Zählschleife wiederhole x mal, die bedingungsgesteuerte Wiederholschleife wiederhole bis / solange und die Zählschleife mit Zählervariable genutzt. Tatsächlich lässt sich das gleiche Verhalten aber mit allen drei Schleifenvarianten erreichen.

Vergleich von Schleifen

Betrachte noch einmal das Programm schleife-abbrechen.xml (siehe oben). Implementiere das gleiche Verhalten mit …

  1. …einer wiederhole x mal Schleife,
  2. …einer wiederhole bis Schleife,
  3. …einer wiederhole solange Schleife.

Erkläre, welche Schleifenvariante sich als “Grundschleife” eignet, die die anderen Varianten immer ersetzen kann.

Sichtbarkeit: Lokale und globale Variablen

Ein Unterschied zwischen den Schleifenimplementierungen bleibt bestehen: Die Zählvariable i wird bei einer Zählschleife als lokale Variable angelegt, das heißt, man kann die Zählvariable nur innerhalb der Schleife nutzen. Dafür benötigt sie auch nur innerhalb der Schleife Speicherplatz.

Im Gegensatz dazu sind die unter Start angelegten Variablen überall im Programm bzw. global verfügbar und heißen deshalb globale Variablen. Für diese Variablen muss während der ganzen Zeit Speicherplatz bereitgehalten werden, auch wenn sie vielleicht nur an einer Stelle wirklich benötigt werden.

Zusammenfassung: Schleifen

Bei der Programmierung werden häufig Schleifen genutzt, die die Anweisungen in ihrem Rumpf (oder Körper) solange wiederholen, bis eine gewisse Abbruchbedingung eintritt.

  • wiederhole x mal: Einfache Zählschleife, die die Anweisungen im Rumpf für eine festgelegte Anzahl wiederholt.
  • wiederhole, bis: Bedingungsgesteuerte Schleife, die die Anweisungen im Rumpf wiederholt, bis die Bedingung wahr ergibt.
  • wiederhole, solange: Bedingungsgesteuerte Schleife, die die Anweisungen im Rumpf wiederholt, solange die Bedingung wahr ergibt.
  • zähle i von … solange Zähler … mit Schrittweite …: Zählergesteuerte Schleife, die die Anweisungen im Rumpf wiederholt, solange der Zähler kleiner als eine vorgegebene Zahl ist und die Zählervariable nach jedem Durchlauf um eine angegebene Zahl erhöht.

Die Überprüfung, ob die Bedingung wahr ist, erfolgt hier vor der Ausführung der Anweisungen im Rumpf. Daher nennt man die Schleifen auch kopfgesteuert.