5.3 Auswertung von Ausdrücken

Größe: px
Ab Seite anzeigen:

Download "5.3 Auswertung von Ausdrücken"

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 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

Mehr

5.3 Auswertung von Ausdrücken

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 int min(int a, int

Mehr

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.

Java 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

Mehr

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.

Java 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

Mehr

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.

Java 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:

Mehr

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben ein Datentyp, der schon bei der Kompilierung festgelegt wird.

Java 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

Mehr

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.

Java 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:

Mehr

Beispiel Statische Typisierung. 5 Mehr Java. Primitive Datentypen Ganze Zahlen. 5.1 Basistypen

Beispiel 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

Mehr

Beispiel Statische Typisierung. 5 Mehr Java. Primitive Datentypen Ganze Zahlen. 5.1 Basistypen

Beispiel 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Prof. 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 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Algorithmen & 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

Mehr

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Variablen. 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

Mehr

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Schwerpunkte. 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

Mehr

Nino Simunic M.A. Computerlinguistik, Campus DU

Nino 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

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs 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

Mehr

Operatoren in C/C++ und Java:

Operatoren 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)

Mehr

3. Java - Sprachkonstrukte I

3. 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)

Mehr

3. Java - Sprachkonstrukte I

3. 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,

Mehr

Grundlagen 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 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 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

Mehr

3. Java - Sprachkonstrukte I

3. 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

Mehr

3. Operatoren und Ausdrücke

3. 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)

Mehr

Programmieren 1 C Überblick

Programmieren 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

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut 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

Mehr

3. Operatoren und Ausdrücke

3. 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)

Mehr

Einführung in die Informatik 1

Einfü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

Mehr

Ganze 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 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.

Mehr

Einführung in die Informatik 1

Einfü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

Mehr

Grundlagen der Informatik 2. Operatoren

Grundlagen 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

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik 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,

Mehr

Ganze 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 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.

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs 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

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin 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

Mehr

3. Operatoren und Ausdrücke

3. 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)

Mehr

Einführung in die Programmierung

Einfü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

Mehr

2. Ganze Zahlen int unsigned int

2. 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

Mehr

Programmieren I. Operatoren und Ausdrücke Heusch 6.2 Ratz Institut für Angewandte Informatik

Programmieren 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

Mehr

Softwareentwicklung Ausdrücke und Typkonversionen

Softwareentwicklung 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

Mehr

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

1 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

Mehr

2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int

2. 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

Mehr

C-Programmierung: Ausdrücke und Operatoren#Division.2F

C-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

Mehr

Operatoren in C. Gastvorlesung Andreas Textor

Operatoren 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;

Mehr

3. Ganze Zahlen int unsigned int

3. 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

Mehr

2. Ganze Zahlen int unsigned int

2. 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

Mehr

1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

1. 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Ausdrücke (1) Grundlegende Eigenschaften

Ausdrü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.

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Einfü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

Mehr

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Sprachkonstrukte. 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

Mehr

Kapitel 4: Elementare Konzepte von Programmiersprachen. Variablen Referenzen Zuweisungen

Kapitel 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

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java 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

Mehr

Java I Vorlesung Imperatives Programmieren

Java 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.

Mehr

Operatoren und Ausdrücke

Operatoren 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

Mehr

Rechnungen, wo kein sinnvoller Wert rauskommt Bsp.: 1/0, *0, sqrt(-1.0) Beispiel: Quadratische Gleichungen

Rechnungen, 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

Mehr

8. Ausdrücke, Operatoren (einfache Typen)

8. 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

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-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).

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Kapitel 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

Mehr

Repetitorium Programmieren I + II

Repetitorium 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

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren 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

Mehr

8. Ausdrücke, Operatoren (einfache Typen)

8. 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

Mehr

2. Ganze Zahlen. Beispiel: power8.cpp. Terminologie: L-Werte und R-Werte. Terminologie: L-Werte und R-Werte

2. 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

Mehr

Informatik Vorkurs - Vorlesung 2

Informatik 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

Mehr

2. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

2. 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,

Mehr

3. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

3. 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

Mehr

Semantik von Ausdrücken

Semantik 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,

Mehr

Informatik I Übung, Woche 38

Informatik 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

Mehr

Software Entwicklung 1

Software 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!

Mehr

Vorlesung 6: Operatoren, Logische Ausdrücke

Vorlesung 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

Mehr

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 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

Mehr

4. Zahlendarstellungen

4. 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;

Mehr

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Programmieren 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

Mehr

Hello World! Eine Einführung in das Programmieren Variablen

Hello 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?

Mehr

Programmiervorkurs Einführung in Java Tag 1

Programmiervorkurs 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,

Mehr

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen 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

Mehr

Modellierung und Programmierung 1

Modellierung 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

Mehr

Ausdrücke der Programmiersprache Java

Ausdrü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

Mehr

Kapitel 4. Programmierung. Skript zur Vorlesung Einführung in die Programmierung. im Wintersemester 2012/13 Ludwig-Maximilians-Universität München

Kapitel 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

Mehr

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

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 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

Mehr

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Kapitel 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

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die 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

Mehr

Angewandte Mathematik und Programmierung

Angewandte 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

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Einfü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

Mehr

Programmierpraktikum

Programmierpraktikum 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

Mehr

Informatik 1 ( ) D-MAVT F2011. Operatoren, Auswertungsreihenfolge, Fliesskommazahlen. Yves Brise Übungsstunde 2

Informatik 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):

Mehr

Objektorientierte Programmierung. Kapitel 6: Wertausdrücke (Expressions)

Objektorientierte 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/

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 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

Mehr

Programmieren in C / C++ Grundlagen C 2

Programmieren 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

Mehr

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Die 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