5.3 Auswertung von Ausdrücken
|
|
- Wilhelm Kramer
- vor 5 Jahren
- Abrufe
Transkript
1 5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n t a, i n t b) implementieren, die das Minimum ihrer Argumente zurückliefert. Operatoren sind spezielle vordefinierte Funktionen, die in Infix-Notation geschrieben werden (wenn sie binär sind): a + b = +(a, b) Harald Räcke 78/656
2 5.3 Auswertung von Ausdrücken Ein Ausdruck ist eine Kombination von Literalen, Operatoren, Funktionen, Variablen und Klammern, die verwendet wird, um einen Wert zu berechnen. Beispiele: (x z.b. vom Typ int) 3 / min(3,x) + 20 x = 7 x *= Auswertung von Ausdrücken Harald Räcke 79/656
3 Operatoren Unäre Operatoren: symbol name types L/R level ++ Post-increment () zahl, char links 2 -- Post-decrement () zahl, char links 2 ++ Pre-increment () zahl, char rechts 3 -- Pre-decrement () zahl, char rechts 3 + unäres Plus zahl, char rechts 3 - unäres Minus zahl, char rechts 3! Negation boolean rechts Auswertung von Ausdrücken Harald Räcke 80/656
4 Achtung 5.3 Auswertung von Ausdrücken Harald Räcke 81/656
5 Prefix- und Postfixoperator Die Operatoranwendungen ++x und x++ inkrementieren beide den Wert der Variablen x (als Seiteneffekt). ++x tut das, bevor der Wert des Ausdrucks ermittelt wird (Pre-Increment). x++ tut das, nachdem der Wert ermittelt wurde (Post-Increment). b = x++; entspricht: b = ++x; entspricht: b = x ; x = x + 1; x = x + 1; b = x ; 5.3 Auswertung von Ausdrücken Harald Räcke 82/656
6 Operatoren Binäre arithmetische Operatoren: byte, short, char werden nach int konvertiert symbol name types L/R level * Multiplikation zahl, char links 4 / Division zahl, char links 4 % Modulo zahl, char links 4 + Addition zahl, char links 5 - Subtraktion zahl, char links 5 Konkatenation symbol name types L/R level + Konkatenation string links Auswertung von Ausdrücken Harald Räcke 83/656
7 Operatoren Vergleichsoperatoren: symbol name types L/R level > größer zahl, char links? 7 >= größergleich zahl, char links? 7 < kleiner zahl, char links? 7 <= kleinergleich zahl, char links? 7 == gleich primitiv links 8!= ungleich primitiv links Auswertung von Ausdrücken Harald Räcke 84/656
8 Operatoren Boolsche Operatoren: symbol name types L/R level && Und-Bedingung boolean links 12 Oder-Bedingung boolean links Auswertung von Ausdrücken Harald Räcke 85/656
9 Operatoren Zuweisungsoperatoren: symbol name types L/R level = Zuweisung, wert rechts 15 *=,/=, %=, +=, -= Zuweisung, wert rechts 15 Für die letzte Form gilt: v = a v = (type(v)) (v a) 5.3 Auswertung von Ausdrücken Harald Räcke 86/656
10 Operatoren Warnung: Eine Zuweisung x = y; ist in Wahrheit ein Ausdruck. Der Wert ist der Wert der rechten Seite. Die Modifizierung der Variablen x erfolgt als Seiteneffekt. Das Semikolon ; hinter einem Ausdruck wirft nur den Wert weg. Fatal für Fehler in Bedingungen: boolean x = false ; i f ( x = true ) write ( " Sorry! This must be an error... " ) ; 5.3 Auswertung von Ausdrücken Harald Räcke 87/656
11 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
12 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
13 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
14 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
15 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
16 5.3 Auswertung von Ausdrücken Assoziativität Die Assoziativität entscheidet über die Reihenfolge bei Operatoren gleicher Priorität. (links = der linkeste Operator wird zuerst ausgeführt) Alle Operatoren einer Prioritätsgruppe haben dieselbe Assoziativität. Bis auf Zuweisungsoperatoren (=, +=, etc.) sind alle binären Operatoren linksassoziativ. unäre Operatoren, die ihr Argument rechts erwarten sind rechtsassoziativ unäre Operatoren, die ihr Argument links erwarten (postfix-operatoren ++, --) sind linksassoziativ Der ternäre Bedingungsoperator (später) ist rechtsassoziativ
17 5.3 Auswertung von Ausdrücken Die Auswertung eines Ausdrucks liefert eine Variable (), einen reinen Wert () oder void (void) In den ersten beiden Fällen hat der Ausdruck dann einen Typ, z.b.: int, und einen Wert, z.b.: 42 Für z.b. Zuweisungen muss die Auswertung des Ausdrucks auf der linken Seite eine Variable ergeben!!! 5.3 Auswertung von Ausdrücken Harald Räcke 89/656
18 5.3 Auswertung von Ausdrücken In Java werden Unterausdrücke von links nach rechts ausgewertet. D.h. um den Wert einer Operation zu berechnen: werte (rekursiv) alle Operanden von links nach rechts aus führe die Operation auf den Resultaten aus Ausnahmen:, &&, und der ternäre Bedingungsoperator :?, werten nicht all Operanden aus (Kurzschlussauswertung). Man sollte nie Ausdrücke formulieren, deren Ergebnis von der Auswertungsreihenfolge abhängt!!! 5.3 Auswertung von Ausdrücken Harald Räcke 90/656
19 5.3 Auswertung von Ausdrücken In Java werden Unterausdrücke von links nach rechts ausgewertet. D.h. um den Wert einer Operation zu berechnen: werte (rekursiv) alle Operanden von links nach rechts aus führe die Operation auf den Resultaten aus Ausnahmen:, &&, und der ternäre Bedingungsoperator :?, werten nicht all Operanden aus (Kurzschlussauswertung). Man sollte nie Ausdrücke formulieren, deren Ergebnis von der Auswertungsreihenfolge abhängt!!! 5.3 Auswertung von Ausdrücken Harald Räcke 90/656
20 5.3 Auswertung von Ausdrücken Im folgenden betrachten wir Klammern als einen Operator der nichts tut: symbol name types L/R level ( ) Klammerung * links Auswertung von Ausdrücken Harald Räcke 91/656
21 Beispiel: 2 + x * (z - d) 2 + x * ( z d )
22 Beispiel: 2 + x * (z - d) 2 + x * ( z d )
23 Beispiel: 2 + x * (z - d) 2 + x * ( z d )
24 Beispiel: 2 + x * (z - d) 2 + x * ( ) z d
25 Beispiel: 2 + x * (z - d) 2 + x * ( ) z d
26 Beispiel: 2 + x * (z - d) 2 + * x ( ) z d
27 Beispiel: 2 + x * (z - d) 2 + * x ( ) z d
28 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d
29 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d
30 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d
31 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d x -3 d 7 z 5
32 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d x -3 d 7 z 5
33 Beispiel: 2 + x * (z - d) 2, int + 2 * x ( ) z d x -3 d 7 z 5
34 Beispiel: 2 + x * (z - d) 2, int + 2 * x ( ) z d x -3 d 7 z 5
35 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) z d x -3 d 7 z 5
36 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) z d x -3 d 7 z 5
37 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z d x -3 d 7 z 5
38 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z d x -3 d 7 z 5
39 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z 7, int d x -3 d 7 z 5
40 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z 7, int d x -3 d 7 z 5
41 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
42 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
43 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int -2, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
44 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int -2, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
45 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int 6, int -2, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
46 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int 6, int -2, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
47 Beispiel: 2 + x * (z - d) 2, int 8, int + 2 * -3, int 6, int -2, int x ( ) 5, int z -2, int 7, int d x -3 d 7 z 5
48 Beispiel: a = b = c = d = 0 a = b = c = d = 0
49 Beispiel: a = b = c = d = 0 a = b = c = d = 0
50 Beispiel: a = b = c = d = 0 a = b = c = d = 0
51 Beispiel: a = b = c = d = 0 a = b = c = = d 0
52 Beispiel: a = b = c = d = 0 a = b = c = = d 0
53 Beispiel: a = b = c = d = 0 a = b = = c = d 0
54 Beispiel: a = b = c = d = 0 a = b = = c = d 0
55 Beispiel: a = b = c = d = 0 a = = b = c = d 0
56 Beispiel: a = b = c = d = 0 a = = b = c = d 0
57 Beispiel: a = b = c = d = 0 = a = b = c = d 0
58 Beispiel: a = b = c = d = 0 = a = b = c = d 0 a -3 b 7 c 5 d 2
59 Beispiel: a = b = c = d = 0 = a = b = c = d 0 a -3 b 7 c 5 d 2
60 Beispiel: a = b = c = d = 0-3, int = a = b = c = d 0 a -3 b 7 c 5 d 2
61 Beispiel: a = b = c = d = 0-3, int = a = b = c = d 0 a -3 b 7 c 5 d 2
62 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = c = d 0 a -3 b 7 c 5 d 2
63 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = c = d 0 a -3 b 7 c 5 d 2
64 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = d 0 a -3 b 7 c 5 d 2
65 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = d 0 a -3 b 7 c 5 d 2
66 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int d 0 a -3 b 7 c 5 d 2
67 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int d 0 a -3 b 7 c 5 d 2
68 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int 0, int d 0 a -3 b 7 c 5 d 2
69 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int 0, int d 0 a -3 b 7 c 5 d 2
70 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int 0, int 0, int d 0 a -3 b 7 c 5 d 0
71 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int c = 2, int 0, int 0, int d 0 a -3 b 7 c 5 d 0
72 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int 0, int c = 2, int 0, int 0, int d 0 a -3 b 7 c 0 d 0
73 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = 5, int 0, int c = 2, int 0, int 0, int d 0 a -3 b 7 c 0 d 0
74 Beispiel: a = b = c = d = 0-3, int = a = 7, int 0, int b = 5, int 0, int c = 2, int 0, int 0, int d 0 a -3 b 0 c 0 d 0
75 Beispiel: a = b = c = d = 0-3, int = a = 7, int 0, int b = 5, int 0, int c = 2, int 0, int 0, int d 0 a -3 b 0 c 0 d 0
76 Beispiel: a = b = c = d = 0-3, int 0, int = a = 7, int 0, int b = 5, int 0, int c = 2, int 0, int 0, int d 0 a 0 b 0 c 0 d 0
77 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10
78 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10
79 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10
80 Beispiel: a!= 0 && b/a < 10 a!= 0 && / < 10 b a
81 Beispiel: a!= 0 && b/a < 10 a!= 0 && / < 10 b a
82 Beispiel: a!= 0 && b/a < 10 a!= 0 && < / 10 b a
83 Beispiel: a!= 0 && b/a < 10 a!= 0 && < / 10 b a
84 Beispiel: a!= 0 && b/a < 10!= && < a 0 / 10 b a
85 Beispiel: a!= 0 && b/a < 10!= && < a 0 / 10 b a
86 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a
87 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a a 0 b 4
88 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a a 0 b 4
89 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int b / a 10 a 0 b 4
90 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int b / a 10 a 0 b 4
91 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int 0, int b / a 10 a 0 b 4
92 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int 0, int b / a 10 a 0 b 4
93 Beispiel: a!= 0 && b/a < 10 false, boolean!= && < a 0 0, int 0, int b / a 10 a 0 b 4
94 Beispiel: a!= 0 && b/a < 10 false, boolean!= && < a 0 0, int 0, int b / a 10 a 0 b 4
95 Beispiel: a!= 0 && b/a < 10 false, boolean!= false, boolean && < a 0 0, int 0, int b / a 10 a 0 b 4
96 Beispiel: y = x + ++x y = x + ++ x
97 Beispiel: y = x + ++x y = x + ++ x
98 Beispiel: y = x + ++x y = x + ++ x
99 Beispiel: y = x + ++x y = x + ++ x
100 Beispiel: y = x + ++x y = x + ++ x
101 Beispiel: y = x + ++x y = + x ++ x
102 Beispiel: y = x + ++x y = + x ++ x
103 Beispiel: y = x + ++x = y + x ++ x
104 Beispiel: y = x + ++x = y + x ++ x x 4 y 0
105 Beispiel: y = x + ++x = y + x ++ x x 4 y 0
106 Beispiel: y = x + ++x = y + 0, int x ++ x x 4 y 0
107 Beispiel: y = x + ++x = y + 0, int x ++ x x 4 y 0
108 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x x 4 y 0
109 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x x 4 y 0
110 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x 4, int x 4 y 0
111 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x 4, int x 4 y 0
112 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 5, int x 4, int x 5 y 0
113 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 5, int x 4, int x 5 y 0
114 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 9, int 5, int x 4, int x 5 y 0
115 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 9, int 5, int x 4, int x 5 y 0
116 Beispiel: y = x + ++x = y + 0, int 9, int x ++ 4, int 9, int 5, int x 4, int x 5 y 9
117 Beispiel: y = x++ + x y = x ++ + x
118 Beispiel: y = x++ + x y = x ++ + x
119 Beispiel: y = x++ + x y = x ++ + x
120 Beispiel: y = x++ + x y = ++ + x x
121 Beispiel: y = x++ + x y = ++ + x x
122 Beispiel: y = x++ + x y = + ++ x x
123 Beispiel: y = x++ + x y = + ++ x x
124 Beispiel: y = x++ + x = y + ++ x x
125 Beispiel: y = x++ + x = y + ++ x x x 4 y 0
126 Beispiel: y = x++ + x = y + ++ x x x 4 y 0
127 Beispiel: y = x++ + x = y + 0, int ++ x x x 4 y 0
128 Beispiel: y = x++ + x = y + 0, int ++ x x x 4 y 0
129 Beispiel: y = x++ + x = y + 0, int ++ x x 4, int x 4 y 0
130 Beispiel: y = x++ + x = y + 0, int ++ x x 4, int x 4 y 0
131 Beispiel: y = x++ + x = y + 0, int 4, int ++ x x 4, int x 5 y 0
132 Beispiel: y = x++ + x = y + 0, int 4, int ++ x x 4, int x 5 y 0
133 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ x 5, int x 5 y 0
134 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ x 5, int x 5 y 0
135 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ 9, int x 5, int x 5 y 0
136 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ 9, int x 5, int x 5 y 0
137 Beispiel: y = x++ + x = y + 0, int 9, int x 4, int 4, int ++ 9, int x 5, int x 5 y 9
138 Beispiel: y = x++ + x = y + 0, int 9, int x 4, int 4, int ++ 9, int x 5, int x 5 y 9
139 Impliziter Typecast Wenn ein Ausdruck vom TypA an einer Stelle verwendet wird, wo ein Ausdruck vom TypB erforderlich ist, wird entweder der Ausdruck vom TypA in einen Ausdruck vom TypB gecasted (impliziter Typecast), oder ein Compilerfehler erzeugt, falls dieser Cast nicht (automatisch) erlaubt ist. Beispiel: Zuweisung long x = 5; i n t y = 3; x = y ; // impliziter Cast von i n t nach long
140 Erlaubte Implizite Typecasts Numerische Typen double float Gleitkommazahlen long short int char ganze Zahlen byte Konvertierung von long nach double oder von int nach float kann Information verlieren wird aber automatisch durchgeführt.
141 Welcher Typ wird benötigt? Operatoren sind üblicherweise überladen, d.h. ein Symbol (+, -,... ) steht in Abhängigkeit der Parameter (Argumente) für unterschiedliche Funktionen. + : int int + : long long + : float float + : double double + : int int int + : long long long + : float float float + : double double double + : String String String Der Compiler muss in der Lage sein während der Compilierung die richtige Funktion zu bestimmen.
142 Impliziter Typecast Der Compiler wertet nur die Typen des Ausdrucksbaums aus. Für jeden inneren Knoten wählt er dann die geeignete Funktion (z.b. + : long long long) falls ein +-Knoten zwei long-argumente erhält. Falls keine passende Funktion gefunden wird, versucht der Compiler durch implizite Typecasts die Operanden an eine Funktion anzupassen. Dies geschieht auch für selbstgeschriebene Funktionen (z.b. min(int a, int b) und min(long a, long b)). Der Compiler nimmt die Funktion mit der speziellsten Signatur.
143 Speziellste Signatur 5.3 Auswertung von Ausdrücken Harald Räcke 101/656
144 Ordnungsrelationen Relation : TypA TypB falls TypA nach TypB (implizit) gecasted werden kann: reflexiv: T T transitiv: T 1 T 2 T 2 T 3 T 1 T 3 antisymmetrisch: T 1 T 2 T 2 T 1 T 1 = T 2 d.h., definiert Halbordnung auf der Menge der Typen. Relation k : (T 1,..., T k ) k (T 1,..., T k ) falls T i T i i {1,..., k}. reflexiv: T k T für alle transitiv: T 1 k T 2 T 2 k T 3 T 1 k T 3 antisymmetrisch: T 1 k T 2 T 2 k T 1 T 1 = T 2 d.h., k definiert Halbordnung auf der Menge der k-tupel von Typen.
145 Ordnungsrelationen Relation : TypA TypB falls TypA nach TypB (implizit) gecasted werden kann: reflexiv: T T transitiv: T 1 T 2 T 2 T 3 T 1 T 3 antisymmetrisch: T 1 T 2 T 2 T 1 T 1 = T 2 d.h., definiert Halbordnung auf der Menge der Typen. Relation k : (T 1,..., T k ) k (T 1,..., T k ) falls T i T i i {1,..., k}. reflexiv: T k T für alle transitiv: T 1 k T 2 T 2 k T 3 T 1 k T 3 antisymmetrisch: T 1 k T 2 T 2 k T 1 T 1 = T 2 d.h., k definiert Halbordnung auf der Menge der k-tupel von Typen.
146 R 1 f (T 1 ) R 2 f (T 2 ). R l f (T l ) f T 1 T 2... T k 1 T k T 1,..., T l sind k-tupel von Typen für die eine Definition von f existiert. T = (T 1,..., T k ) ist das k-tupel von Typen mit dem f aufgerufen wird. Menge aller möglichen Funktionen/Tupel: M := {T i T k T i }. Wähle kleinstes Element aus M falls M ein eindeutig kleinstes Element besitzt (sonst Compilerfehler).
147 R 1 f (T 1 ) R 2 f (T 2 ). R l f (T l ) f T 1 T 2... T k 1 T k T 1,..., T l sind k-tupel von Typen für die eine Definition von f existiert. T = (T 1,..., T k ) ist das k-tupel von Typen mit dem f aufgerufen wird. Menge aller möglichen Funktionen/Tupel: M := {T i T k T i }. Wähle kleinstes Element aus M falls M ein eindeutig kleinstes Element besitzt (sonst Compilerfehler).
148 R 1 f (T 1 ) R 2 f (T 2 ). R l f (T l ) f T 1 T 2... T k 1 T k T 1,..., T l sind k-tupel von Typen für die eine Definition von f existiert. T = (T 1,..., T k ) ist das k-tupel von Typen mit dem f aufgerufen wird. Menge aller möglichen Funktionen/Tupel: M := {T i T k T i }. Wähle kleinstes Element aus M falls M ein eindeutig kleinstes Element besitzt (sonst Compilerfehler).
149 Impliziter Typecast Numerische Typen Angenommen wir haben Funktionen int min(int a, int b) float min(float a, float b) double min(double a, double b) definiert. 1 long a = 7, b = 3; 2 double d = min(a, b); würde die Funktion float min(float a, float b) aufrufen. 5.3 Auswertung von Ausdrücken Harald Räcke 104/656
150 Impliziter Typecast Bei Ausdrücken mit Seiteneffekten (Zuweisungen, ++, - -) gelten andere Regeln: Beispiel: Zuweisungen = : byte byte byte = : char char char = : short short short = : int int int = : long long long = : float float float = : double double double Es wird nur der Parameter konvertiert, der nicht dem Seiteneffekt unterliegt. 5.3 Auswertung von Ausdrücken Harald Räcke 105/656
151 5.3 Auswertung von Ausdrücken Der Funktionsaufrufoperator: symbol name types L/R level ( ) Funktionsaufruf Funktionsname, * links Auswertung von Ausdrücken Harald Räcke 106/656
152 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )
153 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )
154 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )
155 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a min ( a, b ) + 4L
156 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a min ( a, b ) + 4L
157 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a ( ) + 4L min a b
158 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a ( ) + 4L min a b
159 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a + ( ) 4L min a b
160 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a + ( ) 4L min a b
161 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) min a + ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
162 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) min a + ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
163 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a + ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
164 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a + ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
165 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
166 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
167 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
168 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
169 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
170 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
171 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list 3, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
172 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list 3, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
173 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list 3, int 5, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
174 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) 4L min a b, function list 3, int 5, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
175 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int 3, int ( ) 4L min a b, function list 3, int 5, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
176 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int 3, int ( ) 4L min a b, function list 3, int 5, int int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
177 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) min a b, function list 3, int 3, int 5, int 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
178 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) min a b, function list 3, int 3, int 5, int 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
179 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) min a b, function list 3, int 3, int long 5, int 7, long 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
180 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int ( ) min a b, function list 3, int 3, int long 5, int 7, long 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
181 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int float 3.0, float ( ) min a b, function list 3, int 3, int float long 5, int 7, long 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
182 Beispiel: x = min(a, min(a,b) + 4L) = x ( ) 7, long min a +, function list 3, int float 3.0, float ( ) min a b, function list 3, int 3, int float long 5, int 7, long 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
183 Beispiel: x = min(a, min(a,b) + 4L) float is not casted to long ERROR = x ( ) 7, long min a +, function list 3, int float 3.0, float ( ) min a b, function list 3, int 3, int float long 5, int 7, long 4L 4, long int min(int,int) float min(float,float) double min(double,double) long x 7 int a 3 int b 5
184 Impliziter Typecast Strings Spezialfall Falls beim Operator + ein Typ vom Typ String ist, wird der andere auch in einen String umgewandelt. Stringkonkatenation. Jeder Typ in Java besitzt eine Stringrepresentation. Funktioniert nicht bei selbstgeschriebenen Funktionen. 5.3 Auswertung von Ausdrücken Harald Räcke 108/656
185 Beispiel: s = a + b s = a + b
186 Beispiel: s = a + b s = a + b
187 Beispiel: s = a + b s = a + b
188 Beispiel: s = a + b s = + a b
189 Beispiel: s = a + b s = + a b
190 Beispiel: s = a + b = s + a b
191 Beispiel: s = a + b = s + a b String s "Hallo" a 2 b 6
192 Beispiel: s = a + b = s + a b String s "Hallo" a 2 b 6
193 Beispiel: s = a + b = s + "Hallo", String a b String s "Hallo" a 2 b 6
194 Beispiel: s = a + b = s + "Hallo", String a b String s "Hallo" a 2 b 6
195 Beispiel: s = a + b = s + "Hallo", String a 2, int b String s "Hallo" a 2 b 6
196 Beispiel: s = a + b = s + "Hallo", String a 2, int b String s "Hallo" a 2 b 6
197 Beispiel: s = a + b = s + "Hallo", String a 2, int b 6, int String s "Hallo" a 2 b 6
198 Beispiel: s = a + b = s + "Hallo", String a 2, int b 6, int String s "Hallo" a 2 b 6
199 Beispiel: s = a + b = s + "Hallo", String a 2, int 8, int b 6, int String s "Hallo" a 2 b 6
200 Beispiel: s = a + b = s + "Hallo", String a 2, int 8, int b 6, int String s "Hallo" a 2 b 6
201 Beispiel: s = a + b int is not casted to String ERROR = s + "Hallo", String a 2, int 8, int b 6, int String s "Hallo" a 2 b 6
202 Beispiel: s = "" + a + b s = "" + a + b
203 Beispiel: s = "" + a + b s = "" + a + b
204 Beispiel: s = "" + a + b s = "" + a + b
205 Beispiel: s = "" + a + b s = + + b "" a
206 Beispiel: s = "" + a + b s = + + b "" a
207 Beispiel: s = "" + a + b s = + + b "" a
208 Beispiel: s = "" + a + b s = + + b "" a
209 Beispiel: s = "" + a + b = s + + b "" a String s "Hallo" a 2 b 6
210 Beispiel: s = "" + a + b = s + + b "" a String s "Hallo" a 2 b 6
211 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a String s "Hallo" a 2 b 6
212 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a String s "Hallo" a 2 b 6
213 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String String s "Hallo" a 2 b 6
214 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String String s "Hallo" a 2 b 6
215 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String 2, int String s "Hallo" a 2 b 6
216 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String 2, int String s "Hallo" a 2 b 6
217 Beispiel: s = "" + a + b = s + "Hallo", String "2", String + String b "" a "", String 2, int String s "Hallo" a 2 b 6
218 Beispiel: s = "" + a + b = s + "Hallo", String "2", String + String b "" a "", String 2, int String s "Hallo" a 2 b 6
219 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String 2, int b 6, int String s "Hallo" a 2 b 6
220 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String 2, int b 6, int String s "Hallo" a 2 b 6
221 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String "26", String 2, int String b 6, int String s "Hallo" a 2 b 6
222 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String "26", String 2, int String b 6, int String s "Hallo" a 2 b 6
223 Beispiel: s = "" + a + b = s + "Hallo", String "26" "26", String + "" a "", String "2", String String "26", String 2, int String b 6, int String s "Hallo" a 2 b 6
224 Beispiel: s = s + 1 s = s + 1
225 Beispiel: s = s + 1 s = s + 1
226 Beispiel: s = s + 1 s = s + 1
227 Beispiel: s = s + 1 s = + s 1
228 Beispiel: s = s + 1 s = + s 1
229 Beispiel: s = s + 1 = s + s 1
230 Beispiel: s = s + 1 = s + s 1 short s 4
231 Beispiel: s = s + 1 = s + s 1 short s 4
232 Beispiel: s = s + 1 = s + 4, short s 1 short s 4
233 Beispiel: s = s + 1 = s + 4, short s 1 short s 4
234 Beispiel: s = s + 1 = s + 4, short s 1 4, short short s 4
235 Beispiel: s = s + 1 = s + 4, short s 1 4, short short s 4
236 Beispiel: s = s + 1 = s + 4, short s 1 4, short 1, int short s 4
237 Beispiel: s = s + 1 = s + 4, short s 1 4, short 1, int short s 4
238 Beispiel: s = s + 1 = s + 4, short int s 1 4, short 5, int 1, int short s 4
239 Beispiel: s = s + 1 = s + 4, short int s 1 4, short 5, int 1, int short s 4
240 Beispiel: s = s + 1 int is not casted to short ERROR = s + 4, short int s 1 4, short 5, int 1, int short s 4
241 Beispiel: s = s + 1 int is not casted to short ERROR = s + 4, short int s 1 4, short 5, int 1, int short s 4
242 Beispiel: s = s = 7 + 1
243 Beispiel: s = s = 7 + 1
244 Beispiel: s = s = 7 + 1
245 Beispiel: s = s = + 7 1
246 Beispiel: s = s = + 7 1
247 Beispiel: s = = s + 7 1
248 Beispiel: s = = s short s 4
249 Beispiel: s = = s short s 4
250 Beispiel: s = = s + 4, short 7 1 short s 4
251 Beispiel: s = = s + 4, short 7 1 short s 4
252 Beispiel: s = = s + 4, short 7 1 7, int short s 4
253 Beispiel: s = = s + 4, short 7 1 7, int short s 4
254 Beispiel: s = = s + 4, short 7 1 7, int 1, int short s 4
255 Beispiel: s = = s + 4, short 7 1 7, int 1, int short s 4
256 Beispiel: s = = s + 4, short 7 1 7, int 8, int 1, int short s 4
257 Beispiel: s = = s + 4, short 7 1 7, int 8, int 1, int short s 4
258 Beispiel: s = = s + 4, short 8, short 7 1 7, int 8, int 1, int short s 8
259 Beispiel: s = = s + 4, short 8, short 7 1 7, int 8, int compile-time constant expression 1, int short s 8
260 Expliziter Typecast symbol name type L/R level (type) typecast zahl, char rechts 3 Beispiele mit Datenverlust short s = ( short ) ; Die obersten bits werden einfach weggeworfen... double d = 1. 5; short s = ( short ) d ; d hat danach den Wert 1....ohne Datenverlust: i n t x = 5; short s = ( short ) x ;
5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion int min(int a, int
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen: Basistypen
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen: Basistypen
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen:
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen: Basistypen
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen:
MehrBeispiel Statische Typisierung. 5 Mehr Java. Primitive Datentypen Ganze Zahlen. 5.1 Basistypen
5 Mehr Java Beispiel Statische Typisierung Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet
MehrBeispiel Statische Typisierung. 5 Mehr Java. Primitive Datentypen Ganze Zahlen. 5.1 Basistypen
5 Mehr Java Beispiel Statische Typisierung Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet
MehrEinstieg in die Informatik mit Java
Vorlesung vom 5.11.07, Weitere Ausdrücke Übersicht 1 Vergleichsoperatoren 2 Kombinierte Zuweisungsoperatoren 3 Logische Operatoren 4 Weitere Operatoren 5 Klassifizierung von Operatoren 6 Typumwandlungen
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Was sind Operatoren Ein Operator ist eine in die Programmiersprache eingebaute Funktion, die
MehrEinstieg in die Informatik mit Java
1 / 29 Einstieg in die Informatik mit Java Weitere Ausdrücke Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 29 1 Überblick 2 Kombinierte Zuweisungsoperatoren 3 Vergleichsoperatoren
MehrAlgorithmen & Programmierung. Ausdrücke & Operatoren (1)
Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck
MehrVariablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15
Variablen CoMa-Übung VIII TU Berlin 4.12.2013 CoMa-Übung VIII (TU Berlin) Variablen 4.12.2013 1 / 15 Themen der Übung 1 Typanpassungen 2 Operatoren 3 Variablen-Gültigkeit CoMa-Übung VIII (TU Berlin) Variablen
MehrSchwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme
Schwerpunkte Vollständige und unvollständige Auswertung 8. Ausdrücke, Operatoren (einfache Typen) Teil 1 Seiteneffekte Overloading: Überladung von Operatoren Implizite und explizite (cast) Typumwandlung
MehrNino Simunic M.A. Computerlinguistik, Campus DU
Vorlesung 3. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 Ausdrücke, Operatoren
MehrVorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
MehrOperatoren in C/C++ und Java:
Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)
Mehr3. Java - Sprachkonstrukte I
84 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 85 Ein Programm (also Klasse)
Mehr3. Java - Sprachkonstrukte I
Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,
MehrGrundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke
Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke 1 Links Stellenwertsysteme mit Links zu Zahlensysteme: http://de.wikipedia.org/wiki/stellenwertsystem ASCII-Code: http://de.wikipedia.org/wiki/ascii
MehrEinstieg in die Informatik mit Java
Vorlesung vom 25.4.07, Ausdrücke Übersicht 1 Die wichtigsten arithmetischen Ausdrücke Arithmetische Operatoren Inkrement und Dekrementoperatoren Zuweisungsoperator Mathematische Standardfunktionen Vergleichsoperatoren
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
Mehr3. Java - Sprachkonstrukte I
Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression) Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (boole'sche)
MehrProgrammieren 1 C Überblick
Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression) Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (boole'sche)
MehrEinführung in die Informatik 1
Plagiatsstatistik 2016/17 WS 2017/18 Einführung in die Informatik 1 Felix Brandt, Harald Räcke Bachelor Informatik 482 17 3.5 % Bachelor Games Engineering 172 15 8.7 % Bachelor Wirtschaftsinformatik 186
MehrGanze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit.
MehrEinführung in die Informatik 1
WS 2016/17 Einführung in die Informatik 1 Harald Räcke Diese Vorlesungsfolien basieren zum Grossteil auf der Einführungsvorlesung von Prof. Helmut Seidl (WS 2012/13). Fakultät für Informatik TU München
MehrGrundlagen der Informatik 2. Operatoren
2. Operatoren Referenzen Typumwandlungen Vorrangregeln Kommentare Grundlagen der Informatik (Alex Rempel) 1 Ausdruck (z.b. "x = 34 + y;") Folge von Operatoren und Operanden Operatoren Arithmetische Operatoren
MehrProgrammiertechnik Operatoren, Kommentare, Ein-/Ausgabe
Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,
MehrGanze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit.
MehrVorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen } } Beispiele für Anweisungen Wiederholung Ausgabe
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression): Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (Boole'sche)
MehrEinführung in die Programmierung
Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf
Mehr2. Ganze Zahlen int unsigned int
99 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrProgrammieren I. Operatoren und Ausdrücke Heusch 6.2 Ratz Institut für Angewandte Informatik
Programmieren I Operatoren und Ausdrücke Heusch 6.2 Ratz 4.4.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Ausdrücke, Arten von Operatoren Ein Ausdruck ist eine Folge von Operatoren
MehrSoftwareentwicklung Ausdrücke und Typkonversionen
Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Ausdrücke und Typkonversionen E-Mail: sonntag@fim.uni-linz.ac.at http://www.fim.uni-linz.ac.at/staff/sonntag.htm Institut für Informationsverarbeitung
Mehr1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.
Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten
Mehr2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int
74 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit 75 // Program: fahrenheit.cpp
MehrC-Programmierung: Ausdrücke und Operatoren#Division.2F
C-Programmierung: Ausdrücke und Operatoren#Division.2F http://de.wikibooks.org/wiki/c-programmierung:_ausdrücke_und_operatoren#division_.2f This Book Is Generated By Wb2PDF using RenderX XEP, XML to PDF
MehrOperatoren in C. Gastvorlesung Andreas Textor
Operatoren in C Gastvorlesung - 11.01.10 Andreas Textor andreas.textor@hs-rm.de Terminologie Operand 4 + 2 Operand Operator Unterscheidung nach Anzahl Operanden Unäre, Binäre und Ternäre Operatoren Z.B.:!x;
Mehr3. Ganze Zahlen int unsigned int
110 3. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
Mehr2. Ganze Zahlen int unsigned int
88 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
Mehr1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32
1. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int 1 Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Vordefinierte Datentypen Übersicht 1 Ganzzahlige Typen 2 Boolscher Typ 3 Gleitkommatypen 4 Referenztypen 5 void Typ 6 Implizite und explizite Typumwandlungen Ganzzahlige Typen Die
MehrAusdrücke (1) Grundlegende Eigenschaften
Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable
1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem
MehrSprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Sprachkonstrukte Einführung in Java Folie 1 von 20 12. Mai 2011 Ivo Kronenberg Inhalt Kommentare Identifier (Bezeichner) Variablen Numerische Ausdrücke und Typen Kontrollstrukturen Verzweigungen Bedingungen
MehrKapitel 4: Elementare Konzepte von Programmiersprachen. Variablen Referenzen Zuweisungen
Variablen Referenzen Zuweisungen Variablen Variablen dienen der Speicherung von Werten Name (name) bezeichnet die Variable im Programm Wert (value) ist das Datenelement, dass in der Variablen gespeichert
MehrJava Einführung Operatoren Kapitel 2 und 3
Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig
MehrJava I Vorlesung Imperatives Programmieren
Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.
MehrOperatoren und Ausdrücke
Operatoren und Ausdrücke Thomas Röfer Operatoren Schreibweisen von Operatoren Arten von Operatoren Vorrang von Operatoren Typanalyse von Ausdrücken Rückblick Variablen, Konstanten und Referenzen Variablen/Konstanten
MehrRechnungen, wo kein sinnvoller Wert rauskommt Bsp.: 1/0, *0, sqrt(-1.0) Beispiel: Quadratische Gleichungen
Float-Arithmetik Implementiert IEEE 754-1985 Standard Überlauf ("overflow"): Zahl wird zu groß / zu klein Beispiel: max.float * 2 Resultat = + bzw. - Underflow: Zahlen liegen zu dicht an der 0 Resultat
Mehr8. Ausdrücke, Operatoren (einfache Typen)
8. Ausdrücke, Operatoren (einfache Typen) Typumwandlung Cast-Operator Teil 2 Java-Beispiel: Unicode.java Version: 16. Nov. 2015 Unterschiedliche Typen Typumwandlung: Übersicht Zuweisung x = y; Ausdruck
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrOperatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen
Mehr8. Ausdrücke, Operatoren (einfache Typen)
8. Ausdrücke, Operatoren (einfache Typen) Teil 2 Java-Beispiel: Unicode.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 16. Nov. 2015 2 Typumwandlung Cast-Operator 3 Unterschiedliche
Mehr2. Ganze Zahlen. Beispiel: power8.cpp. Terminologie: L-Werte und R-Werte. Terminologie: L-Werte und R-Werte
90 Beispiel: power8.cpp 91 2. Ganze Zahlen int a; // Input int r; // Result std::cout > a; Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische
MehrInformatik Vorkurs - Vorlesung 2
Informatik Vorkurs - Vorlesung 2 Variablen, Arrays, Zahlensysteme Torben Achilles, 9. Oktober 2018 Inhalt Variablen & Datentypen Arrays Zahlensysteme 9. Oktober 2018 Torben Achilles Informatik Vorkurs
Mehr2. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32
Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz,
Mehr3. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32
3. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int 110 Celsius to Fahrenheit // Program: fahrenheit.cpp
MehrSemantik von Ausdrücken
Ausdrücke Semantik von Ausdrücken Da nun die Syntax von Ausdrücken eindeutig definiert ist, widmen wir uns nun (zunächst wieder informell) deren Semantik. Um die Bedeutung (Semantik) eines Ausdrucks festzulegen,
MehrInformatik I Übung, Woche 38
Giuseppe Accaputo 18. September, 2014 Plan für heute 1. Wer bin ich 2. Allgemeines 3. Zusammenfassung der bisherigen Vorlesungsslides 4. Kurze Vorbesprechung zur Übung 1 Informatik 1 (D-BAUG) Giuseppe
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Unser erstes Java Programm Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 39 Hello World!
MehrVorlesung 6: Operatoren, Logische Ausdrücke
Vorlesung 6: Operatoren, Logische Ausdrücke Inhalt Organisatorisches Offene Übungen Operatoren Logische Ausdrücke Dr. J. Raimann 1 Offene Übungen (durch Tutoren betreut) montags 1. und 2. Block (8.15 Uhr
MehrKapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 05 Datentypen Inhalt des 5. Kapitels Datentypen 5.1 Einleitung 5.2 Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Operatoren Konversion / Type-Cast Datentyp
Mehr4. Zahlendarstellungen
121 4. Zahlendarstellungen Wertebereich der Typen int, float und double Gemischte Ausdrücke und Konversionen; Löcher im Wertebereich; Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik;
MehrProgrammieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner
Übung Altersberechner Dennis Komm Programmieren und Problemlösen public class AgeCalc { public static void main(string[] args) { Out.print("Enter your year of birth: ")... } } Ausgabe: "In 2020, you will
MehrHello World! Eine Einführung in das Programmieren Variablen
Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?
MehrProgrammiervorkurs Einführung in Java Tag 1
Programmiervorkurs Einführung in Java Tag 1 Sebastian Glutsch SS 2018 namen Inhaltsübersicht Vorkurs Tag 1:,, en,, Einführung Tag 2: Boolesche Ausdrücke,, If-Abfragen, Switch-Case Tag 3: Arrays, (Do-)While-Schleife,
MehrGrundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 6: Ausdrücke und Typumwandlung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung vom
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir
MehrAusdrücke der Programmiersprache Java
Ausdrücke der Programmiersprache Java Hamburg 1 Ablauf des Vortrags 01. Eigenschaften von Ausdrücken 02. Arithmetische Operatoren 03. Relationale Operatoren 04. Logische Operatoren 05. Bitweise Operatoren
MehrKapitel 4. Programmierung. Skript zur Vorlesung Einführung in die Programmierung. im Wintersemester 2012/13 Ludwig-Maximilians-Universität München
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Kapitel 4 Grundlagen der funktionale und imperativen Programmierung Skript zur Vorlesung Einführung in die Programmierung g im
MehrKapitel 2: Ausdrücke. 1. Sorten und abstrakte Datentypen. 2. Ausdrücke 2.1 Syntax 2.2 Semantik 2.3 Ausdrücke in Java. 3. Funktionale Algorithmen
Kapitel 2: Ausdrücke 1. Sorten und abstrakte Datentypen 2. Ausdrücke 2.1 Syntax 2.2 Semantik 2.3 Ausdrücke in Java 3. Funktionale Algorithmen 4. Variablen, Anweisungen, Prozeduren 5. Prozeduraufrufe 54
MehrKapitel 3. Grunddatentypen, Ausdrücke und Variable
Kapitel 3 Grunddatentypen, Ausdrücke und Variable Grunddatentypen, Ausdrücke und Variable 1 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen
MehrDie Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java
Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
MehrProgrammierpraktikum
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 04 (17.11.2016) Stefan Berktold s.berktold@tum.de PRÄSENZAUFGABEN Heutige Übersicht
MehrInformatik 1 ( ) D-MAVT F2011. Operatoren, Auswertungsreihenfolge, Fliesskommazahlen. Yves Brise Übungsstunde 2
Informatik 1 (251-0832-00) D-MAVT F2011 Operatoren, Auswertungsreihenfolge, Fliesskommazahlen Inhalt Ziele: Casting, Typenkonvertierung Mehr Operatoren Fliesskommazahlen Heute nicht (siehe Vorlesung):
MehrObjektorientierte Programmierung. Kapitel 6: Wertausdrücke (Expressions)
6. Expressions 1/98 Objektorientierte Programmierung Kapitel 6: Wertausdrücke (Expressions) Prof. Dr. Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2018/19 http://www.informatik.uni-halle.de/
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrProgrammieren in C / C++ Grundlagen C 2
Programmieren in C / C++ Grundlagen C 2 Hochschule Fulda FB AI Wintersemester 2016/17 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, FB AI Anweisung / Ausdruck 1 Programm setzt sich aus vielen Anweisungen
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
Mehr