Diana Lange Grundlagen der Programmierung mit Processing 4 Operatoren Script zum Kurs Generative Gestaltung Versionsverlauf: 15.11.2014 - Prototyp 17.11.2014 - Allg. Ergänzungen 19.11.2014 - Allg. Ergänzungen 4 OP ERATO REN Operatoren sind Zeichen mit einer bestimmten Bedeutung. Mit Operatoren können beispielsweise Variablen (Konstanten) mit anderen Variablen verknüpft werden, so dass diese einen neuen Ausdruck bilden. In diesem Kapitel werden alle in Processing (Java) gültigen Operatoren vorgestellt. Einige von ihnen wurden schon in den vorherigen Kapiteln verwendet. 4.1 Rechenoperatoren Rechenoperatoren werden auch Arithmetische Operatoren genannt. Sie werden dazu verwendet um Rechenterme zu bilden. Folgende Operatoren sind für Datentypen gültig, die Zahlenwerte beinhalten (z. B. int, float): Zeichen Bedeutung + Plus / Addition - Minus / Subtraktion * Mal / Multiplikation / Geteilt / Division Gerechnet wird nach den regulären Rechenregeln: Punkt- vor Strichrechnung. Beispiel float zahl1 = 3.5; float zahl2 = -5.5; zahl 1 = zahl2 / 10; zahl 2 = zahl1 * 10; zahl2 = zahl1 - 4* zahl1; zahl1 = zahl1 * (zahl1 + 5); // Klammern können beliebig gesetzt werden Inkrementierungs- und Dekrementierungsoperatoren Häufig müssen Zahlenwerte um eins erhöht oder verringert werden. Zu diesem Zweck gibt es für beides eine verkürzte Schreibweise: Zeichen 1 Bedeutung Diana Lange Grundlagen der Programmierung mit Processing 4 Operatoren variable++ Plus / Addition von variable mit 1 (Anweisung ausführen > Addition) variable-- Minus / Subtraktion von variable mit 1 (Anweisung ausführen > Subtraktion) ++variable Plus / Addition von variable mit 1 (Addition > Anweisung ausführen) --variable Minus / Subtraktion von variable mit 1 (Subtraktion > Anweisung ausführen) Die Inkrementierungs- und Dekrementierungsoperatoren können vor oder nach der Variable eingefügt werden. Wenn der Operator als Postfix notiert wird, so wird zu erst die Anweisung ausgeführt, in der die Variable inkrementiert wurde, und erst im Anschluss wird die Variable verändert. Anders ist das bei einer Notation mit dem jeweiligen Präfix. Hier wird erst der Variablenwert verändert und dann wird die Anweisung ausgeführt. int i = 5; println(i++); // Konsolenausgabe ist 5 int i = 5; println(++i); // Konsolenausgabe ist 6 println(i); // Konsolenausgabe ist 6 println(i); // Konsolenausgabe ist 6 In dem linken Beispiel ist i mit der Postfix-Variante versehen. Es wird also erst die Anweisung println() mit dem aktuellen Wert von i ausgeführt und erst dann wird i um eins erhöht. Auch wenn die obigen Beispiele gültige Notationen sind, sollte es vermieden werden, die Inkrementierungs- und Dekrementierungsoperatoren direkt in Methoden oder anderen Anweisungen anzuwenden. Besser und eindeutiger Notation zu obigen Beispiel: int i = 5; i++; println (i); // Konsolenausgabe ist 6 Modulooperator Der Moduloperator gehört auch zu den Rechenoperatoren. Das Modulo dividiert zwei ganzen Zahlen (int) miteinander und berechnet den ganzzahligen Rest. Zeichen Bedeutung % Modulo / Berechnung des Restes Beispiel int zahl1 = 5; int zahl2 = 3; 2 Diana Lange Grundlagen der Programmierung mit Processing 4 Operatoren int zahl3 = zahl1 % zahl2; // gleich 2 // rechnet 5 durch 3 = 1 mit Rest 2 Notationsvarianten TO DO 4.2 Zuweisungsoperator Mit dem Zuweisungsoperator "=" wird einer Variable ein Wert zugewiesen. Zeichen Bedeutung = Wertzuweisung Links vom Istgleich-Zeichen steht immer die Variable (auch Felder, Listen); rechts steht immer das, was dieser Variable zugewiesen werden soll. int i = 0; float f = 5.1545; char letter = 'd'; String s = "hallo"; boolean foo = false; PVector pos = new PVector (10,50); Bei Berechnung von Termen gilt jeweils, dass zuerst der Term rechts vom Istgleich-Zeichen ausgeführt wird und das Ergebnis erst dann der Variable zugewiesen wird. int zahl1 = 1; // zahl1 hat den Wert 1 zahl1 = zahl1 + 4; // zahl1 hat den Wert 5 4.2 Vergleichsoperatoren Vergleichsoperatoren werden auch Relationale Operatoren genannt. Mit den Vergleichsoperatoren können zwei Werte / Variablen miteinander verglichen. Das Ergebnis wird immer als wahre oder falsche Aussage ausgewertet. Diese Aussage kann Variablen vom Datentyp boolean zugewiesen werden. Für alle Datentypen können folgende zwei Operatoren verwendet werden: Zeichen Bedeutung == gleich != ungleich 3 Diana Lange Grundlagen der Programmierung mit Processing 4 Operatoren Auswertungsschemata true == false true != false true == true false == false // // // // Auswertung: Auswertung: Auswertung: Auswertung: false true true true Vergleichsoperatoren werden i.d.R. im Kontext von if-Abfragen und Schleifenbedingungen verwendet. boolean bed1 = true; boolean bed2 = false; if (bed1 != bed2) { // Inhalt wird ausgeführt } Für den Vergleich von Zahlenwerten (z.B. int-Variablen und float-Variablen) stehen zusätzlich noch folgende Operatoren zur Verfügung: Zeichen Bedeutung > größer >= größer gleich < kleiner <= kleiner gleich int i = 1; float f = -5.2; if (i >= f) { // Inhalt wird ausgeführt } 4.3 Logische Operatoren Logische Operatoren dienen der Verknüpfung von Ausdrücken. Dabei können beliebig viele Wahrheitswerte (boolean) miteinander verbunden werden. Das finale Ergebnis wird auch hier immer als wahre oder falsche Aussage ausgewertet. Daher werden auch die logischen Operatoren meist in if-Abfragen und Schleifenbedingungen eingesetzt und die Werte können in booleanVariablen abgelegt werden. 4 Diana Lange Grundlagen der Programmierung mit Processing 4 Operatoren Doppelte logische Operatoren Zeichen Bedeutung && UND || ODER UND bedeutet, dass beide Bedingungen gleich sein müssen, damit der gesamte Ausdruck wahr wird. Die Bedingungen sind also entweder beide wahr, oder beide falsch. ODER bedeutet, das mindestens eine Bedingungen wahr sein muss, damit der gesamte Ausdruck wahr wird. boolean bed1 = false; boolean bed2 = 10 > 5 && 2.3 <= 3; // ergibt true if (bed1 || bed2) { // Inhalt wird ausgeführt } Einfache logische Operatoren TO DO 4.4 Ternärere Operatoren TO DO 4.5 Bitweise Operatoren TO DO 5