Schleifen


Bastelseite Display + Antriebe Sensoren C++


for (...; ...; ...) { Anweisung }

Die wohl gebräuchliste Schleife ist die for-Schleife: for (int n = 1; n < 20; n++) {} .

Hierfür gilt:
for (Initialisierung; Bedingung; Schrittweite)
{
// Anweisung(en);
}

Bei der Initialisierung wird neben der Variable gleichzeitig der Startwert festgelegt: int n = 1;
Die Schleife läuft solange bis die Bedingung erreicht ist: n < 20; . Dies bedeutet, laufe solange n kleiner 20 ist.
Schrittweite ist auch das Inkrement (++) und das Dekrement (--). Für n = n+ 1 wird unter C+ geschrieben: n++ .
Nimmt man als Startwert z.B. "int n = 500" und setzt die Bedingung auf "n > 20" kann auch die Schrittweite "n = n-7" versucht werden.
So wird von 500 schrittweise um 7 vermindert, bis die Bedingung, "n" größer als 20, nicht mehr zutrifft.

Betrachten wir erst einmal unsere Schleife mit for (int n = 1; n < 20; n++) . Diese Schleife startet bei "1" und wird wiederholt bis "n < 20". Das heißt, also solange bis n nicht mehr kleiner als 20 ist. Dies trifft nach der 19.ten Schleife zu. Der Sketch verläßt die for-Schleife und startet erneut bei "loop".


Der Sketch dazu:


void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Start: ");
  for (int n = 1; n < 20; n++)
  {
    Serial.print("Schleife Nummer: ");
    Serial.println(n);
    delay(2000);
  }
}

Im Seriellen Monitor:

Start:
Schleife Nummer: 1
Schleife Nummer: 2
Schleife Nummer: 3
Schleife Nummer: 4
.....
Schleife Nummer: 16
Schleife Nummer: 17
Schleife Nummer: 18
Schleife Nummer: 19
Start:
Schleife Nummer: 1
Schleife Nummer: 2
...

Nach Start des Seriellen Monitors kann die Ausgabe wie rechts oben im Bild betrachtet werden. Nach jeder Schleife wird kurz (2 Sekunden) eine Pause eingelegt.
Bei jedem neuen Start von "loop" erscheint: "Start:" am nächsten Anfang zur Kontrolle.


while ( Bedingung ) { Anweisung }

Die while-Schleife birgt ebenso die Bedingung in sich. Die Anweisung wird neben der Schrittweite "n++;" sooft ausgeführt, bis die Bedingung nicht mehr zutrifft.

Der Sketch dazu:


int n = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {

  Serial.println("Start: ");
  while (n < 20)
  {
    Serial.print("while-Schleife Nummer: ");
    Serial.println(n);
    n++;
  }
}

Im Seriellen Monitor:

Start:
while-Schleife Nummer: 0
while-Schleife Nummer: 1
while-Schleife Nummer: 2
while-Schleife Nummer: 3
while-Schleife Nummer: 4
.....
while-Schleife Nummer: 16
while-Schleife Nummer: 17
while-Schleife Nummer: 18
while-Schleife Nummer: 19
Start:
Start:
Start:
Start:
Start:
Start:
...

Obiger Sketch läft sooft durch wie die Bedingung zutrifft: "n kleiner 20". Ist "n" gleich oder größer 20, trifft dies nicht mehr zu und wird ignoriert = übersprungen.

Unser Beispiel zeigt nun eine neue Eigenschaft: ist der Sketch einmal durchgelaufen, so veränderte sich mit jedem Durchlauf auch die Variable. Ist in unserem Beispiel "n" nicht mehr kleiner als "20", so wird die komplette Schleife übersprungen. Dies ist ersichtlich daran, dass nur noch die Zeile "Start:" wiederholt wird nach jedem neuen Start bei "loop".
WICHTIG: die Schrittweite "n++;" muß in der Schleife stehen, da sie sonst nicht weiter gezählt werden kann.



do { Anweisung } while ( Bedingung )

Diese Schleife hat eine besondere Eigenart: es wird erst etwas ausgeführt, und dann anschließend überprüft.

Hierfür gilt:
do
{
// Anweisung(en);
}
while( x < 25);

Die Anweisung(en) werden so oft durchgeführt, solange "x kleiner 25" ist


Betrachten wir erst einmal unsere Schleife mit for (int n = 1; n < 20; n++) . Diese Schleife startet bei "1" und wird wiederholt bis "n < 20". Das heißt, also solange bis n nicht mehr kleiner als 20 ist. Dies trifft nach der 19.ten Schleife zu. Der Sketch verläßt die for-Schleife und startet erneut bei "loop".

Der Sketch dazu:

int n = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {

  Serial.println("Start: ");
  do
  {
    Serial.print("do-Schleife Nummer: ");
    Serial.println(n);
    n++;
  }
  while (n < 25);

}

Im Seriellen Monitor:

Start:
do-Schleife Nummer: 1
do-Schleife Nummer: 2
do-Schleife Nummer: 3
do-Schleife Nummer: 4
.....
do-Schleife Nummer: 21
do-Schleife Nummer: 22
do-Schleife Nummer: 23
do-Schleife Nummer: 24
Start:
do-Schleife Nummer: 25
Start:
do-Schleife Nummer: 26
Start:
do-Schleife Nummer: 27
Start:
do-Schleife Nummer: 28
...

Nach Start des Seriellen Monitors kann die Ausgabe wie rechts oben im Bild betrachtet werden. Nach jeder Schleife wird kurz (2 Sekunden) eine Pause eingelegt.
Bei jedem neuen Start von "loop" erscheint: "Start:" am nächsten Anfang zur Kontrolle.







brixelweb.de