1.7 Schleifen und Verzweigungen

Metaphysischer Grenzverkehr II (Eno Henze, 2007))

1.7.1 Iteration – Schleifen

Iteration bezeichnet den Vorgang, bestimmte Anweisungen immer wieder auszuführen. Die Parameter der Anweisungen können sich durch Veränderung von Variablenwerten bei jeder weiteren Ausführung ändern.

while Schleife

Die while-Schleife steuert einen Code-Block, der wiederholt ausgeführt wird. Er wird so lange ausgeführt, wie die angegebene Bedingung für seine Ausführung wahr ist, also zutrifft. Die Bedingung muss bei jeder Ausführung im Code-Block verändert werden, ansonsten würde die Schleife endlos wiederholt werden, was in den allermeisten Fällen nicht erwünscht ist.


while (Bedingung) {
  Anweisungen
}
    

Um die Bedingung zu fomulieren werden in der Regel zwei Werte miteinander verglichen. Oft ist einer der beiden Werte in einer Variablen (im folgenden Beispiel in „i“) abgelegt und wird im Code-Block verändert :


int i = 0;
while (i < 3){
  i = i + 1;
} 
	
    

Der Vergleich wird durch die zur Verfügung stehenden Vergleichsoperatoren durchgeführt:

  • == gleich
  • != ungleich
  • > größer als
  • >= größer gleich als
  • < kleiner als
  • <= kleiner gleich als

Beispiel 1-4


int counter = 200;

void setup(){
  size(800,600);
  background(255);
  fill(0,50);
  noStroke();
}

void draw(){
  while (counter < 700){  
    ellipse(counter,300,800,800);
    counter = counter + 100;
  }
}
    

for Schleife

Eine for-Schleife weist drei Teile auf: die Zählervariable wird initialisiert, sie wird durch einen Vergleichsoperator mit einem Wert verglichen und sie wird schließlich verändert. Die Teile sind jeweils durch ein Semikolon voneinander getrennt:


for (int i = 0; i < 10; i = i + 1){
    Code-Block
}
    

Die Schleife wird so lange durchlaufen und damit der Code-Block ausgeführt, bis der Vergleich der Variable nach boolscher Logik false ergibt.

Beispiel 1-5


void setup(){
  size(800,600);
  background(255);
  noFill();
  stroke(100);
}

void draw(){
  background(255);
  for(int k = 0; k < 60; k++){
    int radius = k * 20;
    ellipse(width/2,height/2, radius,radius);
  }
  for(int i = 0; i < 200; i++){
    int radius = i * 20;
    ellipse(mouseX,mouseY, radius,radius);
  }
}
    

1.7.2 Bedingungen – if-Abfrage

Programme sind in der Regel nicht eine ausschließlich lineare Abfolge von Anweisungen an den Computer. Neben Schleifen beinhalten mehr oder weniger viele Verzweigungen, die an bestimmte Bedingungen gekoppelt sind:

Wenn eine Taste gedrückt wurde… dann starte die Musik. Wenn die gemessene Temperatur eines Arduino-Sensors sinkt… dann starte PIN 3 Wenn die Anzahl der erstellten Kreise über 500 ist… dann stoppe die generative Grafik

Anstatt „wenn… dann“ wird der englische Ausdruck if…then verwendet. Eine Abfrage durch if…then erlaubt es, im Programm Verzweigungen anzulegen und bestimmte Teile des Codes auszuführen oder nicht auszuführen.


Syntax


if (test) {
   Befehle
}
    

Auch hier wird die Bedingung wieder durch den Vergleich von zwei Werten durch Vergleichsoperatoren (==, !=, <, >, …) formuliert.

Beispiel 1-6


void setup(){
   size (800,600);
   noStroke();
}

void draw(){
   background(255);
   if (mouseX > width/2){
        rect(width/2, 0, width, height);
   }
}
    

Beispiel 1-7 else


void setup(){
   size (800,600);
}

void draw(){
   background(255);
   if (mouseX < width/2){
        fill(0);
        rect(0,0, width/2, height);
   } else {
        fill(114);
        rect(width/2, 0, width, height);
   }
}
    

Beispiel 1-8 else if


void setup(){
   size (800,600);
   noStroke();
}

void draw(){
   background(80);
   if (mouseX < width/3){
        fill(0);
        rect(0,0, width/3, height);
   } else if (mouseX > width/3 && mouseX < width/3*2){
        fill(114);
        rect(width/3, 0, width/3, height);
   } else if (mouseX > width/3*2 && mouseX < width) {
        fill(255);
        rect(width/3*2, 0, width/3, height);
   }
}
    

7.3 Logische Operationen

Bedingungen lassen sich durch kogische Operatoren kombinieren (vgl. Beispiel-Code oben). Die Operatoren lauten wie folgt:
'&&' UND
'!' NICHT
'||' ODER