LBotics.at

Soll ein bestimmter Teil eines Programmcodes mehrere Male hintereinander ausgeführt werden, so werden dafür Schleifen verwendet. Wie oft eine Schleife durchlaufen wird, legt man meist mit Hilfe einer Zählvariable fest.

Programmbeispiel 1 - wiederholter Bewegungsablauf mit einer while-Schleife

In diesem Beispiel fährt ein Roboter vier Mal vorwärts und vier Mal rückwärts. Dazu werden die Funktionen zum Ansteuern der Motoren nicht vier Mal hintereinander im Code platziert, sondern nur ein einziges Mal innerhalb einer Schleife. Mit einer Variable wird mitgezählt, wie oft die festgelegte Bewegung bereits ausgeführt wurde.

#include "KeplerBRAIN_V4.h"
 
uint8_t Zaehler;
 
void setup()
{
KEPLERBRAIN_INIT();
Zaehler = 1;
while (Zaehler<=4)
{
WRITE_MOTOR(M1,60);
WRITE_MOTOR(M2,60);
SLEEP(2000);
WRITE_MOTOR(M1,-40);
WRITE_MOTOR(M2,-40);
SLEEP(1000);
Zaehler = Zaehler + 1;
}
}
 
void loop()
{
}
Erklärungen zu diesem Programmbeispiel

Zeile 3: uint8_t Zaehler;

Definition der Variable Zaehler vom Typ uint8_t. Diese wird in der while-Schleife verwendet um die Anzahl der Schleifendurchläufe mitzuzählen und das Verlassen der Schleife zu steuern.

Zeile 8: Zaehler = 1;

Der Zählvariable wird zunächst der Wert 1 zugewiesen.

Zeile 9: while (Zaehler<=4) { }

Diese Zeile beschreibt den Beginn der while-Schleife. Hinter dem Schlüsselwort while steht in Klammern eine Bedingung. Damit wird festgelegt, wie lange der Codeblock zwischen den beiden geschwungenen Klammern ausgeführt wird - in diesem Fall solange der Wert der Variable Zaehler kleiner oder gleich 4 ist.

Zeile 17: Zaehler = Zaehler + 1;

Nachdem alle Anweisungen innerhalb der Schleife einmal ausgeführt wurden, wird der Wert der Variable Zaehler um eins erhöht. Im Anschluss daran wird die Bedingung der while-Schleife überprüft und darüber entschieden, ob der Code innerhalb der Schleife erneut ausgeführt oder die Schleife verlassen wird.

Die while-Schleife

Die Anweisungen in einer while-Schleife werden ausgeführt, solange die Bedingung, die nach dem Schlüsselwort while steht, erfüllt ist. Für die Bedingung einer while-Schleife gelten die gleichen Festlegungen wie für die if-Abfrage, es sind die selben Vergleichs- und Verknüpfungsoperatoren zu verwenden.

Vor einer while-Schleife muss eine Zählvariable definiert und dieser ein Startwert zugewiesen werden. Als letzte Anweisungszeile in einer while-Schleife wird festgelegt, um welchen Wert die Zählvariable nach einem Schleifendruchlauf geändert werden soll. Alle Anweisungen, die wiederholt ausgeführt werden sollen, sind mit geschwungenen Klammern zusammengefasst.

Beispiel

uint8_t i=1;
while (i<=10)
{
Anweisung1;
Anweisung2;
...
i++;
}

1. Bei einer while-Schleife wird zunächst die Zählvariable definiert und dieser ein Startwert zugewiesen: uint_t i=1;

2. Die Laufzeitbedingung der while-Schleife gibt an, dass die Schleife läuft, solange diese Bedingung erfüllt ist: i<=10;

3. Zuletzt wird in der Schleife als letzte Anweisung festgelegt, wie sich der Wert der Zählvariable nach einem Schleifendurchlauf ändern soll: i++

i++ ist eine Kurzschreibweise für i = i + 1, was bedeutet, dass der Wert der Zählvariable um eins erhöht wird.

Programmbeispiel 2 - wiederholter Bewegungsablauf mit einer for-Schleife

In diesem Beispiel fährt ein Roboter wie im Programmbeispiel 1 vier Mal vorwärts und vier Mal rückwärts. Dazu kommt nun zur wiederholten Ausführung eine for-Schleife zum Einsatz.

#include "KeplerBRAIN_V4.h"
 
void setup()
{
KEPLERBRAIN_INIT();
for (uint8_t Zaehler=1; Zaehler<=4; Zaehler++)
{
WRITE_MOTOR(M1,60);
WRITE_MOTOR(M2,60);
SLEEP(2000);
WRITE_MOTOR(M1,-40);
WRITE_MOTOR(M2,-40);
SLEEP(1000);
}
}
 
void loop()
{
}
Erklärungen zu diesem Programmbeispiel

Zeile 7: for (uint8_t Zaehler=1; Zaehler<=4; Zaehler++) { }

In dieser Zeile wird eine for-Schleife festgelegt. Der Unterschied zur while-Schleife besteht darin, dass die Definition der Zählvariable, das Festlegen ihres Startwerts, die Bedingung für das wiederholte Ausführen und die Änderung der Zählvariable nach einem Schleifendurchlauf direkt hinter dem Schlüsselwort for in runden Klammern platziert werden.

Bei dieser for-Schleife wird zunächst die Variable Zaehler vom Typ uint8_t definiert und dieser der Wert 1 zugewiesen.

Die Bedingung im Anschluss gibt an, dass der Programmcode innerhalb der for-Schleife so oft wiederholt ausgeführt wird, solange der Wert der Variable Zaehler kleiner oder gleich 4 ist. Zuletzt wird festgelegt.

Zuletzt kommte die Vorgabe, dass der Wert der Zählvariable nach einem Schleifendurchlauf um eins erhöht wird.

Die for-Schleife

Eine for-Schleife wird eine eine Zählvariable verwendet, die ausschlaggebend für die Anzahl der Schleifendurchläufe ist. Für diese wird eine Bedingung festgelegt. Auf wird bereits zu Beginn im Code einer for-Schleife angegeben, wie sich der Wert der Zählvariable nach einem Schleifendurchlauf ändern soll. Alle Anweisungen, die wiederholt ausgeführt werden sollen, sind mit geschwungenen Klammern zusammengefasst.

Beispiel

for (uint8_t i=1; i<=10; i++)
{
Anweisung 1;
Anweisung 2;
  ...
}

1. Bei einer for-Schleife wird zunächst die Zählvariable definiert und dieser ein Startwert zugewiesen: uint_t i=1;

2. Die Laufzeitbedingung der for-Schleife gibt an, dass die Schleife läuft, solange diese Bedingung erfüllt ist: i<=10;

3. Zuletzt wird festgelegt, wie sich der Wert der Zählvariable nach einem Schleifendurchlauf ändern soll: i++

i++ ist eine Kurzschreibweise für i = i + 1, was bedeutet, dass der Wert der Zählvariable um eins erhöht wird.