Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Überblick 1 2 / 11
Motivation Es gibt eine Reihe von Möglichkeiten, die in Variablen abgespeicherten Daten zu manipulieren. Einen solchen Operator haben wir bereits kennengelernt, als wir Variablen mit Werten initialisiert haben. zahl = 20; Der Zuweisungsoperator = verbindet die Operanden (in diesem Fall also zahl und 20) auf beiden Seiten miteinander zu einem Ausdruck. Es existieren zwei Arten von Operatoren: unär: nur ein Operand, entweder in der Form <operator> <operand> oder <operand> <operator> binär: zwei Operanden <operand1> <operator> <operand2> 3 / 11
Überblick 1 4 / 11
Am bekanntesten sind die arithmentischen Operatoren (+, -, *, /) aus dem Mathematikunterricht. Diese lassen sich wie gewohnt nutzen, um entsprechende Berechnungen durchzuführen: 1 # include <iostream > 2 using namespace std; 3 4 int main () { 5 int zahl1 = 6, zahl2 = 4, ergebnis ; 6 ergebnis = zahl1 + zahl2 ; 7 cout << " Ergebnis : " << ergebnis ; 8 return 0; 9 } In Zeile 6 werden die beiden R-Werte zahl1 und zahl2 über den Operator + verknüpft und das Ergebnis dem L-Wert (Variable ergebnis) zugewiesen. 5 / 11
-- der Modulo Operator % Als Teil der arithmetischen Operatoren ist der Modulo-Operator etwas speziell. Im Unterschied zum Divisions-Operator (/), gibt er den ganzzahligen Rest der Division zurück. Beispiele: 5 % 3 = 6 / 11
-- der Modulo Operator % Als Teil der arithmetischen Operatoren ist der Modulo-Operator etwas speziell. Im Unterschied zum Divisions-Operator (/), gibt er den ganzzahligen Rest der Division zurück. Beispiele: 5 % 3 = 1 Rest 2 8 % 2 = 6 / 11
-- der Modulo Operator % Als Teil der arithmetischen Operatoren ist der Modulo-Operator etwas speziell. Im Unterschied zum Divisions-Operator (/), gibt er den ganzzahligen Rest der Division zurück. Beispiele: 5 % 3 = 1 Rest 2 8 % 2 = 4 Rest 0 Das Ergebnis der Division wird nicht berücksichtigt, sondern nur der durch die Division entstehende Rest. Der Modulo-Operator wird sehr häufig eingesetzt, wenn es darum geht zu prüfen, ob eine ganzzahlige Division vorliegt. In der Kryptographie (Verschlüsselung) leistet er wichtige Dienste bei der Implementierung der dazugehörigen Algorithmen. 6 / 11
Überblick 1 7 / 11
Zu den unären Operatoren gehören Inkrement, der eine gegebene Zahl um eins erhöht und Dekrement, welcher eine Zahl um eins verringert. Diese beiden Operatoren werden wie folgt verwendet: int zahl = 5; zahl++; cout << zahl; zahl--; cout << zahl; Die Schreibweise zahl++ entspricht dem Ausdruck zahl = zahl + 1. Analog dazu entspricht zahl-- dem Ausdruck zahl = zahl - 1. 8 / 11
Präfix und Postfix bei Inkrement und Dekremenz Anhand der Position der beiden Operatoren ändert sich die Art und Weise, zu welchem Zeitpunkt die Erhöhung bzw. Verringerung um 1 durchgeführt wird. Angenommen, der Inkrement-Operator soll auf die Variable int x = 5; angewendet werden, so gibt es zwei Möglichkeiten: Präfix Der Operator steht vor der Variable: ++x. In diesem Fall wird zuerst der Wert erhöht und dann in x abgespeichert. Postfix Der Operator steht nach der Variable: x++. Hier wird zuerst die Zuweisung vorgenommen und anschliessend erhöht. Dies gilt analog auch für den Dekrement-Operator. 1 int x = 5, y = 5; 2 cout << "x: " << x << ", y: " << y << endl ; 3 cout << "x: " << --x << ", y: " << y-- << endl ; 4 cout << "x: " << x << ", y: " << y << endl ; 9 / 11
Zusammengesetzte Zuweisungen Es existieren eine Reihe von kompakten Schreibweisen, um Ausdrücke im Quellcode darzustellen. Ein Beispiel dafür sind der Inkrement und Dekrement-Operator, welche i = i + 1 zu i++ bzw. i = i - 1 zu i-- verkürzen. Der Code wird dadurch oft (aber nicht immer) übersichtlicher und erspart dem Programmierer etwas Tipparbeit. Operator Beispiel Äquivalent += i += 5 i = i + 5 -= i -= 3 i = i - 3 *= i *= 2 i = i * 2 /= i /= 4 i = i / 4 %= i %= 6 i = i % 6 10 / 11
Weitere Operatoren Es gibt in C++ noch weitere Operatoren, die aber im Kontext von anderen Sprachkonstrukten im weiteren Verlauf der Vorlesung behandelt werden. Zu diesen gehören: Vergleichsoperatoren Logische Operatoren Zugriffsoperatoren 11 / 11