Schlagwort-Archive: Bedingung

Bedingungen mit Switch – Case


Processing 2.0

Mit switch / case kann man wie mit if / else Bedingungen programmieren. Während bei Verzweigungen mit weniger als 3 Möglichkeiten if / else die richtige Wahl ist, verwendet man bei Verzweigungen mit vielem Möglichkeiten besser switch / case.

switch (Variable) {
case Wert der Variable:
Anweisung1;
break; //notwendig, sonst würde auch die Anweisung 2 ausgeführt!
case Wert der Variable:
Anweisung2;
break;
case Wert der Variable:
Anweisung3;
break;
default:
Anweisung4;

}

Interessant ist dabei, dass die Ausführung der Anweisungen separat mit dem Befehl break abgebrochen werden muss. Andernfalls werden alle weiteren Anweisungen ausgeführt, selbst wenn die Bedingungen dafür nicht erfüllt sind.

Die default: Anweisung kann optional verwendet werden, falls man eine Anweisung ausführen will, wenn alle anderen Bedingungen nicht erfüllt werden. Entspricht somit der else – Funktion.

Beispiel Mausposition 1: starte Applet

void setup() {
 size(500, 200);
}
void draw() {
 // Nicht im Android Modus
 //cursor(ARROW); //macht den Auszeiger in Form eines Pfeils sichtbar
 background(200);
 switch (round(mouseX/100)) {
 case 0:
 rect(0, 0, 100, 200);
 break;
 case 1:
 rect(100, 0, 100, 200);
 break;
 case 2:
 rect(200, 0, 100, 200);
 break;
 case 3:
 rect(300, 0, 100, 200);
 break;
 case 4:
 rect(400, 0, 100, 200);
 break;
 }
}

Beispiel Mausposition 2: starte Applet


void setup() {
  size(500, 200);
}
void draw() {
 // Nicht im Android Modus
 //cursor(ARROW);//macht den Auszeiger in Form eines Pfeils sichtbar
 background(200);
 switch (round(mouseX/100)) {
 case 0:
 rect(0, 0, 100, 200);
 case 1:
 rect(100, 0, 100, 200);
 case 2:
 rect(200, 0, 100, 200);
 case 3:
 rect(300, 0, 100, 200);
 case 4:
 rect(400, 0, 100, 200);
 } case
}

Um die Elementfolge von links nach rechts wachsen zu lassen, müsste man nur die case – Anweisungen in umgekehrter Reihenfolge platzieren.

if – Anweisung


Processing 2.0

Bis jetzt sind unsere Programme immer von vorne nach hinten durchgelaufen, ohne auf irgend etwas zu reagieren.

Die if – Anweisung gibt uns die Möglichkeit Bedingungen für den weiteren Verlauf des Programms zu setzen. Das können true/false -Abfragen oder der Vergleich zweier Zahlen sein. Es sollten bei Zahlen immer nur Ganzzahlen (int) miteinander verglichen werden.

Vergleichsoperatoren:

>      größer als
<      kleiner als
>=   größer oder gleich
<=   kleiner oder gleich
==   ist gleich (als Vergleich, einfaches = ist ein Zuweisungsoperator!!!)
!=    ist nicht gleich
||     logisches oder
&&  logisches und
!      logisches nicht.

Für Anweisungen, die nur ausgeführt werden sollen, wenn bestimmte Bedingungen erfüllt sind, empfiehlt sich folgende Schreibweise:

if (test) {
Anweisungen
}

Wobei test für die Bedingung steht.

Beispiel: starte Applet

void setup(){
size(300,300);
}
void draw(){
background(200);
stroke(5);
fill(150);
if (mouseX<150 && mouseY<150){
rect(0,0,150,150);
}
else if (mouseX>150 && mouseY<150){
rect(150,0,150,150);
}
else if (mouseX<150 && mouseY>150){
rect(0,150,150,150);
}
else if (mouseX>150 && mouseY>150){
rect(150,150,150,150);
}
}

Als Struktogramm sieht das Programm so aus:

Viele Möglichkeiten ergeben sich dann,wenn man versucht mehrere Bedingungen ineinander zu verschachteln.

Logische Operationen

In Processing kann man 3 logische Operationen verwenden (&& logisches UND, || logisches ODER und ! logisches NICHT).

Diese Operationen kann man nun beliebig miteinander verknüpfen. Man nennt dies die Boolsche Algebra.