====== For - Schleife : Wiederholtes Ausführen von Befehlen ====== Mit einer For-Schleife kann Code mehrere Male nacheinander ausgeführt werden. So kann man z.B. mehrere Messungen hintereinander durchführen, mehrere Pins an- oder ausschalten oder einen Roboter mehrere Schritte machen lassen. Eine schöne Erklärung findet ihr in der Arduino-Referenz: [[http://arduino.cc/de/Reference/For]] ===== Syntax: Was alles rein mus... ===== Den Grundsätzlichen Aufbau einer for-Schleife in C++ wollen wir an folgendem kleinen Beispielprogramm erklären, welches die Zahlen von 1 bis 5 auf dem Serial Monitor ausgibt: // dieser vordere Teil kontrolliert den Ablauf. for (int i=1; i<=5; i++) { //Alles, was hier drin steht, wird immer wieder ausgeführt, solange die Bedingung "i=5" erfüllt ist. Serial.println (i); //hier wird der Wert von i ausgegeben } ==== Der "Kontrollteil" der For-Schleife (in den Runden Klammern) ==== Wie ihr seht, stehen in den runden Klammern drei durch '';'' getrennte Teile: === 1. Der Initialisierungsteil 'int i=1' === Hier wird eine //Zählvariable// ''i'' eingerichtet, die in der Schleife benutzt wird, um die Anzahl der bereits erfolgten Durchläufe zu zählen. In unserem Fall starten wir bei ''1''. Zählvariablen dürfen einen beliebigen Namen haben und gelten nur innerhalb der Schleife. === 2. Die Bedingung 'i<=5' === Solange diese Bedingung erfüllt (''true'') ist, wird die Schleife ein weiteres Mal durchlaufen. Sonst macht das Programm dahinter weiter. Die Obergrenze (in diesem Fall ''5'') muss nicht unbedingt eine feste Zahl sein - indem ihr den Schleifenzähler mit einer Variable vergleicht (''i int balkenGesamt=20; // So lang soll unsere Anzeige insgesamt sein int maximalWert=1024; // Bei diesem Wert soll die Anzeige voll ausgesteuert sein int sensorWert=analogRead(A0); // Messe und merke dir das Ergebnis int balkenAktiv=sensorWert*balkenGesamt/maximalWert; // Errechne die Anzahl der "leuchtenden" Segmente for (int i=0;i=i){ // dieser Teil wird ausgeführt, wenn i "auf der linken Seite" der Grenze zwischen "an" und "aus" ist Serial.print("*"); //aktive Balkensegmente werden als ein "*" angezeigt }else{ // dieser Teil wird ausgeführt, wenn i "auf der rechten Seite" der Grenze zwischen "an" und "aus" ist Serial.print("-"); //inaktive Balkensegmente werden als ein "-" angezeigt } } ===== Geschachtelte Schleifen ===== Da der Teil in den geschweiften Klammern prinzipiell alles enthalten kann, was auch sonst irgendwo im Code steht, kann dort auch eine weitere For-Schleife stehen. So kann euer Programm z.B. bequem durch die Zeilen und Spalten eines Pixelbildes gehen und die Pixel eines nach dem anderen anschauen: for(int y=0;y In einem weiteren Beispiel erstellen wir eine Art Schachbrett: boolean isWhite = true; // gibt an, ob ein weisses Feld gezeichnet werden soll for (int j=0; j<8; j++) { for (int i = 0; i < 8; i++) { if (isWhite) { Serial.print("X "); } else { Serial.print("O "); } isWhite = !isWhite; // aendere die Farbe } Serial.println(); isWhite = !isWhite; // am Ende der Zeile, aendere die Farbe nochmal } ====== Im Netz ====== Eine schöne Erklärung findet ihr auch in der Arduino-Referenz: [[http://arduino.cc/de/Reference/For]]