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);
}