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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 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 / Primitive Datentypen byte, char, short, int, long, float, double, boolean Referenzdatentypen kann man auch selber definieren Harald Räcke 66/656

2 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 / Primitive Datentypen byte, char, short, int, long, float, double, boolean Referenzdatentypen kann man auch selber definieren 5 Mehr Java Harald Räcke 66/656

3 Beispiel Statische Typisierung a = 5 a = a + 1 a = "Hello World." # a is now a string a = a + 1 # runtime error Python int a; a = 5; a = "Hello World." // will not compile Java 5 Mehr Java Harald Räcke 67/656

4 5.1 Basistypen Primitive Datentypen Zu jedem Basistypen gibt es eine Menge möglicher Werte. Jeder Wert eines Basistyps benötigt den gleichen Platz, um ihn im Rechner zu repräsentieren. Der Platz wird in Bit gemessen. Wie viele Werte kann man mit n Bit darstellen? 5.1 Basistypen Harald Räcke 68/656

5 Primitive Datentypen Ganze Zahlen Es gibt vier Sorten ganzer Zahlen: Typ Platz kleinster Wert größter Wert byte short int long Die Benutzung kleinerer Typen wie byte oder short spart Platz. 5.1 Basistypen Harald Räcke 69/656

6 Primitive Datentypen Ganze Zahlen Literale: dezimale Notation hexadezimale Notation (Präfix 0x oder 0X) oktale Notation (Präfix 0) binäre Notation (Präfix 0b oder 0B) Suffix l oder L für long _ um Ziffern zu gruppieren Beispiele 192, 0b , 0xC0, 0300 sind alle gleich 20_000L, 0xABFF_0078L 09, 0x_FF sind ungültig 5.1 Basistypen Harald Räcke 70/656

7 Primitive Datentypen Ganze Zahlen Literale: dezimale Notation hexadezimale Notation (Präfix 0x oder 0X) oktale Notation (Präfix 0) binäre Notation (Präfix 0b oder 0B) Suffix l oder L für long _ um Ziffern zu gruppieren Beispiele 192, 0b , 0xC0, 0300 sind alle gleich 20_000L, 0xABFF_0078L 09, 0x_FF sind ungültig 5.1 Basistypen Harald Räcke 70/656

8 Primitive Datentypen Ganze Zahlen Achtung: Java warnt nicht vor Überlauf/Unterlauf!!! Beispiel: 1 int x = ; // groesstes int 2 x = x + 1; 3 write(x); liefert:

9 Primitive Datentypen Gleitkommazahlen Es gibt zwei Sorten von Gleitkommazahlen: Typ Platz kleinster Wert größter Wert signifikante Stellen float 32 ca ca ca. 7 double 64 ca ca ca. 15 x = s m 2 e mit 1 m < 2 Vorzeichen s: 1 bit reduzierte Mantisse m 1: 23 bit (float), 52 bit (double) Exponent e: 8 bit (float), 11 bit (double) 5.1 Basistypen Harald Räcke 72/656

10 Primitive Datentypen Gleitkommazahlen Literale: dezimale Notation. dezimale Exponentialschreibweise (e, E für Exponent) hexadeximale Exponentialschreibweise. (Präfix 0x oder 0X, p oder P für Exponent) Suffix f oder F für float, Suffix d oder D für double (default is double) Beispiele 640.5F == 0x50.1p3f == E-2 0x1e3_dp0, 1e3d 0x1e3d, 1e3_d

11 Primitive Datentypen Gleitkommazahlen Überlauf/Unterlauf bei Berechnungen liefert Infinity, bzw. -Infinity Division Null durch Null, Wurzel aus einer negativen Zahl etc. liefert NaN

12 Weitere Basistypen Typ Platz Werte boolean 1 true,false char 16 all Unicode-Zeichen Unicode ist ein Zeichensatz, der alle irgendwo auf der Welt gängigen Alphabete umfasst, also zum Beispiel: die Zeichen unserer Tastatur (inklusive Umlaute); die chinesischen Schriftzeichen; die ägyptischen Hieroglyphen... Literale: char-literale schreibt man in Hochkommas: A, \u00ed, ;, \n. boolean-literale sind true und false.

13 5.2 Strings Der Datentyp String für Wörter ist ein Referenzdatentyp (genauer eine Klasse (dazu kommen wir später)). Hier nur drei Eigenschaften: Literale vom Typ String haben die Form "Hello World!"; Man kann Wörter in Variablen vom Typ String abspeichern; Man kann Wörter mithilfe des Operators + konkatenieren. 5.2 Strings Harald Räcke 76/656

14 Beispiel String s0 = " " ; String s1 = " Hel " ; String s2 = " lo Wo" ; String s3 = " rld! " ; write ( s0 + s1 + s2 + s3 ) ;... liefert: Hello World! 5.2 Strings Harald Räcke 77/656

15 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) 5.3 Auswertung von Ausdrücken Harald Räcke 78/656

16 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

17 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

18 Achtung 5.3 Auswertung von Ausdrücken Harald Räcke 81/656

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

33 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

34 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

35 Beispiel: 2 + x * (z - d) 2 + x * ( z d )

36 Beispiel: 2 + x * (z - d) 2 + x * ( z d )

37 Beispiel: 2 + x * (z - d) 2 + x * ( z d )

38 Beispiel: 2 + x * (z - d) 2 + x * ( ) z d

39 Beispiel: 2 + x * (z - d) 2 + x * ( ) z d

40 Beispiel: 2 + x * (z - d) 2 + * x ( ) z d

41 Beispiel: 2 + x * (z - d) 2 + * x ( ) z d

42 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d

43 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d

44 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d

45 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d x -3 d 7 z 5

46 Beispiel: 2 + x * (z - d) + 2 * x ( ) z d x -3 d 7 z 5

47 Beispiel: 2 + x * (z - d) 2, int + 2 * x ( ) z d x -3 d 7 z 5

48 Beispiel: 2 + x * (z - d) 2, int + 2 * x ( ) z d x -3 d 7 z 5

49 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) z d x -3 d 7 z 5

50 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) z d x -3 d 7 z 5

51 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z d x -3 d 7 z 5

52 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z d x -3 d 7 z 5

53 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z 7, int d x -3 d 7 z 5

54 Beispiel: 2 + x * (z - d) 2, int + 2 * -3, int x ( ) 5, int z 7, int d x -3 d 7 z 5

55 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

56 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

57 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

58 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

59 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

60 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

61 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

62 Beispiel: a = b = c = d = 0 a = b = c = d = 0

63 Beispiel: a = b = c = d = 0 a = b = c = d = 0

64 Beispiel: a = b = c = d = 0 a = b = c = d = 0

65 Beispiel: a = b = c = d = 0 a = b = c = = d 0

66 Beispiel: a = b = c = d = 0 a = b = c = = d 0

67 Beispiel: a = b = c = d = 0 a = b = = c = d 0

68 Beispiel: a = b = c = d = 0 a = b = = c = d 0

69 Beispiel: a = b = c = d = 0 a = = b = c = d 0

70 Beispiel: a = b = c = d = 0 a = = b = c = d 0

71 Beispiel: a = b = c = d = 0 = a = b = c = d 0

72 Beispiel: a = b = c = d = 0 = a = b = c = d 0 a -3 b 7 c 5 d 2

73 Beispiel: a = b = c = d = 0 = a = b = c = d 0 a -3 b 7 c 5 d 2

74 Beispiel: a = b = c = d = 0-3, int = a = b = c = d 0 a -3 b 7 c 5 d 2

75 Beispiel: a = b = c = d = 0-3, int = a = b = c = d 0 a -3 b 7 c 5 d 2

76 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = c = d 0 a -3 b 7 c 5 d 2

77 Beispiel: a = b = c = d = 0-3, int = a = 7, int b = c = d 0 a -3 b 7 c 5 d 2

78 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

79 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

80 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

81 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

82 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

83 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

84 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

85 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

86 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

87 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

88 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

89 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

90 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

91 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10

92 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10

93 Beispiel: a!= 0 && b/a < 10 a!= 0 && b / a < 10

94 Beispiel: a!= 0 && b/a < 10 a!= 0 && / < 10 b a

95 Beispiel: a!= 0 && b/a < 10 a!= 0 && / < 10 b a

96 Beispiel: a!= 0 && b/a < 10 a!= 0 && < / 10 b a

97 Beispiel: a!= 0 && b/a < 10 a!= 0 && < / 10 b a

98 Beispiel: a!= 0 && b/a < 10!= && < a 0 / 10 b a

99 Beispiel: a!= 0 && b/a < 10!= && < a 0 / 10 b a

100 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a

101 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a a 0 b 4

102 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 / 10 b a a 0 b 4

103 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int b / a 10 a 0 b 4

104 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int b / a 10 a 0 b 4

105 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int 0, int b / a 10 a 0 b 4

106 Beispiel: a!= 0 && b/a < 10 &&!= < a 0 0, int 0, int b / a 10 a 0 b 4

107 Beispiel: a!= 0 && b/a < 10 false, boolean!= && < a 0 0, int 0, int b / a 10 a 0 b 4

108 Beispiel: a!= 0 && b/a < 10 false, boolean!= && < a 0 0, int 0, int b / a 10 a 0 b 4

109 Beispiel: a!= 0 && b/a < 10 false, boolean!= false, boolean && < a 0 0, int 0, int b / a 10 a 0 b 4

110 Beispiel: y = x + ++x y = x + ++ x

111 Beispiel: y = x + ++x y = x + ++ x

112 Beispiel: y = x + ++x y = x + ++ x

113 Beispiel: y = x + ++x y = x + ++ x

114 Beispiel: y = x + ++x y = x + ++ x

115 Beispiel: y = x + ++x y = + x ++ x

116 Beispiel: y = x + ++x y = + x ++ x

117 Beispiel: y = x + ++x = y + x ++ x

118 Beispiel: y = x + ++x = y + x ++ x x 4 y 0

119 Beispiel: y = x + ++x = y + x ++ x x 4 y 0

120 Beispiel: y = x + ++x = y + 0, int x ++ x x 4 y 0

121 Beispiel: y = x + ++x = y + 0, int x ++ x x 4 y 0

122 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x x 4 y 0

123 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x x 4 y 0

124 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x 4, int x 4 y 0

125 Beispiel: y = x + ++x = y + 0, int x ++ 4, int x 4, int x 4 y 0

126 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 5, int x 4, int x 5 y 0

127 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 5, int x 4, int x 5 y 0

128 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 9, int 5, int x 4, int x 5 y 0

129 Beispiel: y = x + ++x = y + 0, int x ++ 4, int 9, int 5, int x 4, int x 5 y 0

130 Beispiel: y = x + ++x = y + 0, int 9, int x ++ 4, int 9, int 5, int x 4, int x 5 y 9

131 Beispiel: y = x++ + x y = x ++ + x

132 Beispiel: y = x++ + x y = x ++ + x

133 Beispiel: y = x++ + x y = x ++ + x

134 Beispiel: y = x++ + x y = ++ + x x

135 Beispiel: y = x++ + x y = ++ + x x

136 Beispiel: y = x++ + x y = + ++ x x

137 Beispiel: y = x++ + x y = + ++ x x

138 Beispiel: y = x++ + x = y + ++ x x

139 Beispiel: y = x++ + x = y + ++ x x x 4 y 0

140 Beispiel: y = x++ + x = y + ++ x x x 4 y 0

141 Beispiel: y = x++ + x = y + 0, int ++ x x x 4 y 0

142 Beispiel: y = x++ + x = y + 0, int ++ x x x 4 y 0

143 Beispiel: y = x++ + x = y + 0, int ++ x x 4, int x 4 y 0

144 Beispiel: y = x++ + x = y + 0, int ++ x x 4, int x 4 y 0

145 Beispiel: y = x++ + x = y + 0, int 4, int ++ x x 4, int x 5 y 0

146 Beispiel: y = x++ + x = y + 0, int 4, int ++ x x 4, int x 5 y 0

147 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ x 5, int x 5 y 0

148 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ x 5, int x 5 y 0

149 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ 9, int x 5, int x 5 y 0

150 Beispiel: y = x++ + x = y + 0, int x 4, int 4, int ++ 9, int x 5, int x 5 y 0

151 Beispiel: y = x++ + x = y + 0, int 9, int x 4, int 4, int ++ 9, int x 5, int x 5 y 9

152 Beispiel: y = x++ + x = y + 0, int 9, int x 4, int 4, int ++ 9, int x 5, int x 5 y 9

153 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

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

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

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

157 Speziellste Signatur 5.3 Auswertung von Ausdrücken Harald Räcke 101/656

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

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

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

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

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

163 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

164 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

165 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

166 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )

167 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )

168 Beispiel: x = min(a, min(a,b) + 4L) x = min ( a, min ( a, b ) + 4L )

169 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a min ( a, b ) + 4L

170 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a min ( a, b ) + 4L

171 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a ( ) + 4L min a b

172 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a ( ) + 4L min a b

173 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a + ( ) 4L min a b

174 Beispiel: x = min(a, min(a,b) + 4L) x = ( ) min a + ( ) 4L min a b

175 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

176 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

177 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

178 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

179 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

180 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

181 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

182 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

183 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

184 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

185 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

186 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

187 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

188 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

189 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

190 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

191 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

192 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

193 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

194 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

195 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

196 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

197 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

198 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

199 Beispiel: s = a + b s = a + b

200 Beispiel: s = a + b s = a + b

201 Beispiel: s = a + b s = a + b

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 + a b String s "Hallo" a 2 b 6

206 Beispiel: s = a + b = s + a b String s "Hallo" a 2 b 6

207 Beispiel: s = a + b = s + "Hallo", String a b String s "Hallo" a 2 b 6

208 Beispiel: s = a + b = s + "Hallo", String a b String s "Hallo" a 2 b 6

209 Beispiel: s = a + b = s + "Hallo", String a 2, int b String s "Hallo" a 2 b 6

210 Beispiel: s = a + b = s + "Hallo", String a 2, int b String s "Hallo" a 2 b 6

211 Beispiel: s = a + b = s + "Hallo", String a 2, int b 6, int String s "Hallo" a 2 b 6

212 Beispiel: s = a + b = s + "Hallo", String a 2, int b 6, int String s "Hallo" a 2 b 6

213 Beispiel: s = a + b = s + "Hallo", String a 2, int 8, int b 6, int String s "Hallo" a 2 b 6

214 Beispiel: s = a + b = s + "Hallo", String a 2, int 8, int b 6, int String s "Hallo" a 2 b 6

215 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

216 Beispiel: s = "" + a + b s = "" + a + b

217 Beispiel: s = "" + a + b s = "" + a + b

218 Beispiel: s = "" + a + b s = "" + a + b

219 Beispiel: s = "" + a + b s = + + b "" a

220 Beispiel: s = "" + a + b s = + + b "" a

221 Beispiel: s = "" + a + b s = + + b "" a

222 Beispiel: s = "" + a + b s = + + b "" a

223 Beispiel: s = "" + a + b = s + + b "" a String s "Hallo" a 2 b 6

224 Beispiel: s = "" + a + b = s + + b "" a String s "Hallo" a 2 b 6

225 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a String s "Hallo" a 2 b 6

226 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a String s "Hallo" a 2 b 6

227 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String String s "Hallo" a 2 b 6

228 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String String s "Hallo" a 2 b 6

229 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String 2, int String s "Hallo" a 2 b 6

230 Beispiel: s = "" + a + b = s + "Hallo", String + b "" a "", String 2, int String s "Hallo" a 2 b 6

231 Beispiel: s = "" + a + b = s + "Hallo", String "2", String + String b "" a "", String 2, int String s "Hallo" a 2 b 6

232 Beispiel: s = "" + a + b = s + "Hallo", String "2", String + String b "" a "", String 2, int String s "Hallo" a 2 b 6

233 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String 2, int b 6, int String s "Hallo" a 2 b 6

234 Beispiel: s = "" + a + b = s + "Hallo", String + "" a "", String "2", String String 2, int b 6, int String s "Hallo" a 2 b 6

235 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

236 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

237 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

238 Beispiel: s = s + 1 s = s + 1

239 Beispiel: s = s + 1 s = s + 1

240 Beispiel: s = s + 1 s = s + 1

241 Beispiel: s = s + 1 s = + s 1

242 Beispiel: s = s + 1 s = + s 1

243 Beispiel: s = s + 1 = s + s 1

244 Beispiel: s = s + 1 = s + s 1 short s 4

245 Beispiel: s = s + 1 = s + s 1 short s 4

246 Beispiel: s = s + 1 = s + 4, short s 1 short s 4

247 Beispiel: s = s + 1 = s + 4, short s 1 short s 4

248 Beispiel: s = s + 1 = s + 4, short s 1 4, short short s 4

249 Beispiel: s = s + 1 = s + 4, short s 1 4, short short s 4

250 Beispiel: s = s + 1 = s + 4, short s 1 4, short 1, int short s 4

251 Beispiel: s = s + 1 = s + 4, short s 1 4, short 1, int short s 4

252 Beispiel: s = s + 1 = s + 4, short int s 1 4, short 5, int 1, int short s 4

253 Beispiel: s = s + 1 = s + 4, short int s 1 4, short 5, int 1, int short s 4

254 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

255 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

256 Beispiel: s = s = 7 + 1

257 Beispiel: s = s = 7 + 1

258 Beispiel: s = s = 7 + 1

259 Beispiel: s = s = + 7 1

260 Beispiel: s = s = + 7 1

261 Beispiel: s = = s + 7 1

262 Beispiel: s = = s short s 4

263 Beispiel: s = = s short s 4

264 Beispiel: s = = s + 4, short 7 1 short s 4

265 Beispiel: s = = s + 4, short 7 1 short s 4

266 Beispiel: s = = s + 4, short 7 1 7, int short s 4

267 Beispiel: s = = s + 4, short 7 1 7, int short s 4

268 Beispiel: s = = s + 4, short 7 1 7, int 1, int short s 4

269 Beispiel: s = = s + 4, short 7 1 7, int 1, int short s 4

270 Beispiel: s = = s + 4, short 7 1 7, int 8, int 1, int short s 4

271 Beispiel: s = = s + 4, short 7 1 7, int 8, int 1, int short s 4

272 Beispiel: s = = s + 4, short 8, short 7 1 7, int 8, int 1, int short s 8

273 Beispiel: s = = s + 4, short 8, short 7 1 7, int 8, int compile-time constant expression 1, int short s 8

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

275 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: Arrays Harald Räcke 114/656

276 Beispiel 1 i n t [ ] a ; // Deklaration 2 i n t n = read ( ) ; 3 4 a = new i n t [ n ] ; // Anlegen des Felds 5 i n t i = 0; 6 while ( i < n ) { 7 a [ i ] = read ( ) ; 8 i = i +1; 9 } Einlesen eines Feldes 5.4 Arrays Harald Räcke 115/656

277 Beispiel type[] name; deklariert eine Variable für ein Feld (array), dessen Elemente vom Typ type sind. Alternative Schreibweise: type name[]; Das Kommando new legt ein Feld einer gegebenen Größe an und liefert einen Verweis darauf zurück: a a = new int[6]; a Arrays Harald Räcke 116/656

278 Was ist eine Referenz? Eine Referenziable speichert eine Adresse; an dieser Adresse liegt der eigentliche Inhalt der Variablen. a: Adresse Inhalt C a A Wir können die Referenz nicht direkt manipulieren (nur über den new-operator, oder indem wir eine andere Referenz zuweisen) B C D E F

279 5.4 Arrays Der Wert einer Feld-Variable ist also ein Verweis!!! int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a int[] b = a; a b Alle nichtprimitive Datentypen sind Referenzentypen, d.h., die zugehörige Variable speichert einen Verweis!!! 5.4 Arrays Harald Räcke 118/656

280 5.4 Arrays Die Elemente eines Feldes sind von 0 an durchnummeriert. Die Anzahl der Elemente des Feldes name ist name.length. Auf das i-te Element greift man mit name[i] zu. Bei jedem Zugriff wird überprüft, ob der Index erlaubt ist, d.h. im Interl {0,..., name.length-1} liegt. Liegt der Index außerhalb des Interls, wird eine ArrayIndexOutOfBoundException ausgelöst ( Exceptions). 5.4 Arrays Harald Räcke 119/656

281 Mehrdimensionale Felder Java unterstützt direkt nur eindimensionale Felder. ein zweidimensionales Feld ist ein Feld von Feldern... a a = new int[5][6]; a

282 Der new-operator symbol name types L/R level new new Typ, Konstruktor links 1 Erzeugt ein Objekt/Array und liefert eine Referenz darauf zurück. 1. Version: Erzeugung eines Arrays (Typ ist Arraytyp) new int[3][7]; oder auch new int[3][]; (ein Array, das 3 Verweise auf int enthält) new String[10]; new int[]{1,2,3,}; (ein Array mit den ints 1, 2, 3) 2. Version: Erzeugung eines Objekts durch Aufruf eines Konstruktors String s = new String("Hello World!");

283 Der Index-Operator symbol name types L/R level [] index array, int links 1 Zugriff auf ein Arrayelement. 5.4 Arrays Harald Räcke 122/656

284 Beispiel: x = a[3][2] x = a [ 3 ] [ 2 ]

285 Beispiel: x = a[3][2] x = a [ 3 ] [ 2 ]

286 Beispiel: x = a[3][2] x = a [ 3 ] [ 2 ]

287 Beispiel: x = a[3][2] x = [ ] [ 2 ] a 3

288 Beispiel: x = a[3][2] x = [ ] [ 2 ] a 3

289 Beispiel: x = a[3][2] x = [ ] [ ] 2 a 3

290 Beispiel: x = a[3][2] x = [ ] [ ] 2 a 3

291 Beispiel: x = a[3][2] = x [ ] [ ] 2 a 3

292 Beispiel: x = a[3][2] = x [ ] [ ] 2 a 3 x 2 a

293 Beispiel: x = a[3][2] = x [ ] [ ] 2 a 3 x 2 a

294 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3 x 2 a

295 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3 x 2 a

296 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3, int[][] x 2 a

297 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3, int[][] x 2 a

298 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3, int[][] 3, int x 2 a

299 Beispiel: x = a[3][2] = x [ ] 2, int [ ] 2 a 3, int[][] 3, int x 2 a

300 Beispiel: x = a[3][2] = x [ ] 2, int, int[] [ ] 2 a 3, int[][] 3, int x 2 a

301 Beispiel: x = a[3][2] = x [ ] 2, int, int[] [ ] 2 a 3, int[][] 3, int x 2 a

302 Beispiel: x = a[3][2] = x [ ] 2, int [ ] a 3, int[][], int[] 3, int 2 2, int x 2 a

303 Beispiel: x = a[3][2] = x [ ] 2, int [ ] a 3, int[][], int[] 3, int 2 2, int x 2 a

304 Beispiel: x = a[3][2] = x [ ] 2, int [ ] a 3, int[][], int[] 3, int 6, int 2 2, int x 2 a

305 Beispiel: x = a[3][2] = x [ ] 2, int [ ] a 3, int[][], int[] 3, int 6, int 2 2, int x 2 a

306 Beispiel: x = a[3][2] = x [ ] 2, int [ ] a 3, int[][] 6, int, int[] 3, int 6, int 2 2, int x 6 a

307 Der. -Operator symbol name types L/R level. member access Array/Objekt/Class, Member links 1 Zugriff auf Member. Beispiel: x = new int[2][4].length x hat dann den Wert Arrays Harald Räcke 124/656

308 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema: new int [ 2 ] [ 4 ]. length

309 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema: new int [ 2 ] [ 4 ]. length

310 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema: new int [ 2 ] [ 4 ]. length

311 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema: new. length int int[2][4] [ 2 ] [ 4 ]

312 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema: new. length int int[2][4] [ 2 ] [ 4 ]

313 Beispiel: new int[2][4].length Das Parsing für den new-operator passt nicht in das Schema:. new length int int[2][4] [ 2 ] [ 4 ]

314 Arrayinitialisierung 1. int[] a = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3; 2. int[] a = new int[]{ 1, 2, 3}; 3. int[] a = new int[3]{ 1, 2, 3}; 4. int[] a = { 1, 2, 3}; 5. char[][] b = { { a, b }, new char[3], {} }; 6. char[][] b; b = new char[][]{ { a, b }, new char[3], {} }; 7. char[][] b; b = { { a, b }, new char[3], {} }; 5.4 Arrays Harald Räcke 126/656

315 5.5 Mehr Kontrollstrukturen Typische Form der Iteration über Felder: Initialisierung des Laufindex; while-schleife mit Eintrittsbedingung für den Rumpf; Modifizierung des Laufindex am Ende des Rumpfs. 5.5 Mehr Kontrollstrukturen Harald Räcke 127/656

316 Beispiel 1 i n t result = a [ 0 ] ; 2 i n t i = 1; // I n i t i a l i s i e r u n g 3 while ( i < a. length ) { 4 i f ( a [ i ] < result ) 5 result = a [ i ] ; 6 i = i +1; // Modifizierung 7 } 8 write ( result ) ; Bestimmung des Minimums 5.5 Mehr Kontrollstrukturen Harald Räcke 128/656

317 Das For-Statement 1 i n t result = a [ 0 ] ; 2 for ( i n t i = 1; i < a. length ; ++ i ) 3 i f ( a [ i ] < result ) 4 result = a [ i ] ; 5 write ( result ) ; Bestimmung des Minimums 5.5 Mehr Kontrollstrukturen Harald Räcke 129/656

318 Das For-Statement for ( i n i t, cond, modify ) stmt entspricht: { i n i t ; while ( cond ) { stmt modify ; } } Erläuterungen: ++i; ist äquient zu i = i + 1; die while-schleife steht innerhalb eines Blocks ({...}) die Variable i ist außerhalb dieses Blocks nicht sichtbar/zugreifbar 5.5 Mehr Kontrollstrukturen Harald Räcke 130/656

319 5.6 Funktionen und Prozeduren Oft möchte man: Teilprobleme separat lösen; und dann die Lösung mehrfach verwenden. 5.6 Funktionen und Prozeduren Harald Räcke 131/656

320 Beispiel public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes

321 Beispiel Type des Rückgabewertes public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes

322 Beispiel Funktionsname Type des Rückgabewertes public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes

323 Beispiel Funktionsname Type des Rückgabewertes Liste der formalen Parameter public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes

324 Beispiel Funktionsname Type des Rückgabewertes Liste der formalen Parameter public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes Funktionsrumpf

325 Beispiel Funktionsname Type des Rückgabewertes Liste der formalen Parameter public s t a t i c i n t [ ] readarray ( i n t number) { // number = Anzahl zu lesender Elemente i n t [ ] result = new i n t [number ] ; // Feld anlegen for ( i n t i = 0; i < number; ++ i ) { result [ i ] = read ( ) ; } return result ; } Einlesen eines Feldes Rückgabe des Ergebnisses + Beenden der Funktion Funktionsrumpf

326 5.6 Funktionen und Prozeduren Erläuterungen: Die erste Zeile ist der Header der Funktion. public, und static komen später int[] gibt den Typ des Rückgabe-Werts an. readarray ist der Name, mit dem die Funktion aufgerufen wird. Dann folgt (in runden Klammern und komma-separiert) die Liste der formalen Parameter, hier: (int number). Der Rumpf der Funktion steht in geschweiften Klammern. return expr; beendet die Ausführung der Funktion und liefert den Wert von expr zurück. 5.6 Funktionen und Prozeduren Harald Räcke 133/656

327 5.6 Funktionen und Prozeduren Erläuterungen: Die Variablen, die innerhalb eines Blocks angelegt werden, d.h. innerhalb von { und }, sind nur innerhalb dieses Blocks sichtbar, d.h. benutzbar (lokale Variablen). Der Rumpf einer Funktion ist ein Block. Die formalen Parameter können auch als lokale Variablen aufgefasst werden. Bei dem Aufruf readarray(7) erhält der formale Parameter number den Wert 7 (aktueller Parameter). 5.6 Funktionen und Prozeduren Harald Räcke 134/656

328 Beispiel public s t a t i c i n t min ( i n t [ ] b) { i n t result = b [ 0 ] ; for ( i n t i = 1; i < b. length ; ++ i ) { i f (b[ i ] < result ) result = b[ i ] ; } return result ; } Bestimmung des Minimums 5.6 Funktionen und Prozeduren Harald Räcke 135/656

329 Beispiel public class Min extends MiniJava { public s t a t i c i n t [ ] readarray ( i n t number) {... } public s t a t i c i n t min ( i n t [ ] b) {... } // J e t z t kommt das Hauptprogramm public s t a t i c void main ( String [ ] args ) { i n t n = read ( ) ; i n t [ ] a = readarray ( n ) ; i n t result = min ( a ) ; write ( result ) ; } // end of main ( ) } // end of class Min Programm zur Minimumsberechnung 5.6 Funktionen und Prozeduren Harald Räcke 136/656

330 Beispiel Erläuterungen: Manche Funktionen, deren Ergebnistyp void ist, geben gar keine Werte zurück im Beispiel: write() und main(). Diese Funktionen heißen Prozeduren. Das Hauptprogramm hat immer als Parameter ein Feld args von String-Elementen. In diesem Argument-Feld werden dem Programm Kommandozeilen-Argumente verfügbar gemacht. public class Test extends MiniJava { public s t a t i c void main ( String [ ] args ) { write ( args [0]+ args [ 1 ] ) ; } } // end of class Test 5.6 Funktionen und Prozeduren Harald Räcke 137/656

331 Beispiel Der Aufruf java Test "Hel" "lo World!" liefert: Hello World! 5.6 Funktionen und Prozeduren Harald Räcke 138/656

332 5.6 Funktionen und Prozeduren Um die Arbeitsweise von Funktionen zu veranschaulichen erweitern/modifizieren wir die Kontrollflussdiagramme f(x,y) x=f(7,z) return 42 Startknoten der Funktion f Funktionsaufruf Endknoten Für jede Funktion wird ein eigenes Teildiagramm erstellt. Ein Aufrufknoten repäsentiert eine Teilberechnung der aufgerufenen Funktion. 5.6 Funktionen und Prozeduren Harald Räcke 139/656

333 5.6 Funktionen und Prozeduren Teildiagramm der Funktion min(): min(b) result=b[0] i=1 no i<b.length yes return result no b[i]<result yes result=b[i] i=i+1

334 5.6 Funktionen und Prozeduren min(b) readarray(number) main(args) n=read() return result; return result; a=readarray(n) result=min(a) write(result) return 5.6 Funktionen und Prozeduren Harald Räcke 141/656

335 5.6 Funktionen und Prozeduren Aufruf min(b) readarray(number) main(args) n=read() return result; return result; Rückkehr a=readarray(n) result=min(a) write(result) return 5.6 Funktionen und Prozeduren Harald Räcke 141/656

336 5.6 Funktionen und Prozeduren Aufruf min(b) readarray(number) main(args) n=read() return result; return result; a=readarray(n) result=min(a) write(result) Rückkehr return 5.6 Funktionen und Prozeduren Harald Räcke 141/656

4 Kontrollfluss-Diagramme

4 Kontrollfluss-Diagramme 4 Kontrollfluss-Diagramme In welcher Weise die Operationen eines Programms nacheinander ausgeführt werden, läßt sich anschaulich mithilfe von Kontrollfluss-Diagrammen darstellen. Ingredienzien: Start Stop

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

Beispiel: Start. Stop

Beispiel: Start. Stop Achtung: Zu jedem MiniJava-Programm lässt sich ein Kontrollfluss-Diagramm konstruieren :-) die umgekehrte Richtung gilt zwar ebenfalls, liegt aber nicht so auf der Hand. 107 Beispiel: Start no yes no yes

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 Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2016ws/info1/ Wintersemester 2016/17 Harald Räcke 1 Diese Vorlesungsfolien basieren

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

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

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

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

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

1 Programmiersprachen

1 Programmiersprachen 1 Programmiersprachen Um einen Algorithmus in einer von einer Maschine ausführbaren Form beschreiben zu können, verwenden wir eine formale Sprache. formale Beschreibung des Aufbaus der Worte und Sätze,

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

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

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Schleifen und Arrays Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 06.10.2016 Technische Universität Braunschweig, IPS Überblick Kommentare Typen Kontrollstrukturen Arrays 06.10.2016 Dr. Werner

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

Scala: Klassen, Methoden und Objekte. von Simon Lerch

Scala: Klassen, Methoden und Objekte. von Simon Lerch Scala: Klassen, Methoden und Objekte von Simon Lerch Überblick Methoden Klassen Objekte Basis Typen Prefixes Java's == vs. Scala's == Assoziativität von Operatoren Rich Wrapper 30.03.10 Klassen, Methoden

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

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 - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Die einfachsten Anweisungen

Die einfachsten Anweisungen 2 Die einfachsten Anweisungen 2-1 Inhalt Die einfachsten Anweisungen Einführung Datentypen Arithmetische Operatoren Mathematische Funktionen Mehrfache Zuweisungen Übungsaufgaben Einführung Wir wollen unser

Mehr

3.4 Struktur von Programmen

3.4 Struktur von Programmen 3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

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

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Primitive Datentypen und Felder (Arrays)

Primitive Datentypen und Felder (Arrays) Primitive Datentypen und Felder (rrays) Primitive Datentypen Java stellt (genau wie Haskell) primitive Datentypen für Boolesche Werte, Zeichen, ganze Zahlen und Gleitkommazahlen zur Verfügung. Der wichtigste

Mehr

2.5 Primitive Datentypen

2.5 Primitive Datentypen 2.5 Primitive Datentypen Wir unterscheiden 5 primitive Datentypen: ganze Zahlen -2, -1, -0, -1, -2,... reelle Zahlen 0.3, 0.3333..., π, 2.7 10 4 Zeichen a, b, c,... Zeichenreihen "Hello World", "TIFI",

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf

Mehr

Wie entwerfe ich ein Programm?

Wie entwerfe ich ein Programm? Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java 4 Datenfelder, Parameterübergabe, Casting Objektorientierte Programmierung OOP Programmieren mit Java 4 Datenfelder, Parameterübergabe, Casting 4 Datenfelder, Parameterübergabe, Casting 4.1 Datenfelder

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

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte 4. Datentypen Einleitung Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Konversion / Type-Cast Datentyp von Literalen Operatoren Ausdrücke Allgemeine Informatik 2 SS09

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 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

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

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Prinzipielle Ausführungsvarianten I

Prinzipielle Ausführungsvarianten I Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Unser erstes Java Programm AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 39 Hello World!

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

Ein erstes Java-Programm

Ein erstes Java-Programm Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 2. Typen und Variablen 27.10./03.11.2014 Prof. Dr. Ralf H. Reussner Version 1.2 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010 Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den

Mehr

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt? Bei

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

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

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 16. Mai 2009 Inhaltsverzeichnis

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

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

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Lösung der Aufgaben (1/2) Lösung Aufgabe

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität IT Services Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt?

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Informatik I - Einstiegskurs

Informatik I - Einstiegskurs Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1 Imperative Programmierung in Java Algorithmen und Datenstrukturen II 1 Mini-Java Ein Mini-Java Programm besteht aus genau einer Klasse. In dieser Klasse gibt es genau eine main-methode. Folgende Konstrukte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 Aufgaben 1.1 Objektorientiert: (extended-hamster) Sammel-Hamster 1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:

Mehr

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Grundlagen der Objektorientierten Programmierung - Statische Arrays Statische Arrays Ein Array ist ein Behälter für Datenelemente desselben Typs. Arrays können beliebig viele Dimensionen haben. Die Standardform ist das eindimensionale Array, das man sich in Zeilenform

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

String-Konkatenation

String-Konkatenation YOU ARE HERE Ausdrücke und Anweisungen Einführung Objektorientierte Modellierung Java-Sprachkonstrukte Pakete und Zugriffskontrolle Deklaration von Methoden, Attributen, Variablen Ausdrücke und Anweisungen

Mehr

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Klausur Fachprüfung Wirtschaftsinformatik. Name: Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden Datum: 02.10.2003 Name: Punkte True-or-False: von 15 Punkte Multiple Choice: von 15 Punkte Quickies: von 30 Punkte Shorties: von 20 Punkte Longies:

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts

Mehr