Diese Seite ist auch in 2 anderen Sprachen verfügbar.
Sprache wechseln  

for

[Control Structure]

Beschreibung

Das for-Statement wiederholt die in Klammern nachfolgenden Anweisungen. Meistens wird eine Zählervariable verwendet, welche hochgezählt wird und die Schleife irgendwann beendet. Das for-Statement wird häufig zur Iteration über Arrays oder Listen von Daten oder Pins verwendet.

Syntax

for (initialization; condition; increment) {
	// Statement(s);
}

Parameter

initialization: Passiert genau einmal am Anfang der Schleife.
condition: Wird bei jedem Schleifendurchlauf getestet. Wenn sie true ist, werden alle Statements in den Klammern ausgeführt und increment hochgezählt. Wenn die condition false ist, wird die Schleife abgebrochen.
increment: Wird hochgezählt, wenn die condition true ist.

Rückgabewert

Nichts.

Beispielcode

Eine LED wird über einen PWM-Pin gedimmt.

int PWMpin = 10; // LED in Serie mit 470-Ohm-Widerstand auf Pin 10

void setup() {
  // Nichts
}

void loop() {
  // Wiederhole 255 Mal:
  for (int i=0; i <= 255; i++){
    // Schreibe den Wert von "i" auf den LED-Pin
    analogWrite(PWMpin, i);
    // Warte 10 Millisekunden
    delay(10);
  }
}

Anmerkungen und Warnungen

Die for-Schleife in C++ ist deutlich ausgeprägter als in anderen Sprachen wie z.B. BASIC. Einige oder sogar alle der 3 Parameter können weggelassen werden, allerdings sind die Strichpunkte immer nötig. Alle 3 Parameter können mit beliebigen Variablen belegt werden und jeden Datentyp inklusive float nutzen. Die Beispiele unten zeigen die Verwendung einiger Spezialformen der for-Schleife.

Eine Multiplikation im increment generiert ein logarithmisches Verhalten:

for(int x = 2; x < 100; x = x * 1.5) {
   println(x);
}

Gibt aus: 2,3,4,6,9,13,19,28,42,63,94

LED hoch- und runterdimmen in einer Schleife:

void loop() {
  // Globale Zählervariable "x"
  int x = 1;
  // Laufe über die Variable solange i größer -1 ist und zähle i um x hoch
  for (int i = 0; i > -1; i = i + x){
    // Schreibe auf den LED-Pin
    analogWrite(PWMpin, i);
    if (i == 255) {
	  x = -1; // Ändere die Richtung des Dimmens auf dem "Peek"
      // Warte 10 Millisekunden
      delay(10);
	}
  }
}

Siehe auch