Tag 1 8.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

Beispiel 1-9 Logische Operationen


float speedX = random(4,8);
float speedY = random(4,8);
float size = 200;
float posX, posY;

void setup(){
   size(690,400); 
   frameRate(60);
   posX = width/2;
   posY = height/2;
   background(255);
   ellipseMode(CENTER);
   fill(0);
}


void draw(){
  background(255);
  if(posX > width-(size/2.) || posX < 0+(size/2.)){
   speedX = -speedX;
  }
  if(posY > height-(size/2.) || posY < 0+(size/2.)){
    speedY = -speedY;
  }
  posX += speedX;
  posY += speedY;
  
  
  ellipse(posX, posY, size, size);
  
  
}