Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2
Algorithmen und Datenstrukturen 02
Stefan Ploner
1. November 2011
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2
Inhaltsverzeichnis
1 Organisatorisches Allgemeine Hinweise Texteditoren
2 Besprechung Blatt 1 Erste Eindr¨ucke 3 Vorbereitung Blatt 2
Zahlensysteme, Datentypen und Ausdr¨ucke String-Operationen
Arrays und Matrizen
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Allgemeine Hinweise
Allgemeine Hinweise
• Bilden von Gruppen ist freiwillig aber w¨unschenswert
• Musterl¨osungen d¨urfen von uns nicht herausgegeben werden
• Privat vom Tutor angefertigte L¨osungen schon
→ ist aber nicht der Normalfall!
• Fragen zur Bewertung oder der L¨osung des letzten Blatts
→ nach der Tafel¨ubung oder per Mail
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Texteditoren
Texteditoren
• Eclipse (Windows, Linux, Mac OS) - installiert im CIP
→ nicht zu sehr an Autocomplete gew¨ohnen!
• ConTEXT (Windows)
• Notepad++ (Windows)
• Sublime Text 2 (Windows, Linux, Mac OS)
• gedit (Windows, Linux, Mac OS) - installiert im CIP
• Kate (Windows, Linux, Mac OS) - installiert im CIP
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Erste Eindr¨ucke
Wie waren eure ersten Erfahrungen?
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zahlensysteme
Bekannte Darstellung f¨ur positive Zahlen (4 Bit) Bin¨ar Dezimal
0011 3
0010 2
0001 1
0000 0
Zweierkomplementdarstellung f¨ur negative Zahlen (4 Bit) Bin¨ar Dezimal
1111 -1
1110 -2
1101 -3
1100 -4
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zahlensysteme
Bekannte Darstellung f¨ur positive Zahlen (4 Bit) Bin¨ar Dezimal
0011 3
0010 2
0001 1
0000 0
Zweierkomplementdarstellung f¨ur negative Zahlen (4 Bit) Bin¨ar Dezimal
1111 -1
1110 -2
1101 -3
1100 -4
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zahlensysteme
Bekannte Darstellung f¨ur positive Zahlen (4 Bit) Bin¨ar Dezimal
0011 3
0010 2
0001 1
0000 0
Zweierkomplementdarstellung f¨ur negative Zahlen (4 Bit) Bin¨ar Dezimal
1111 -1
1110 -2
1101 -3
1100 -4
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zweierkomplementdarstellung
Zweierkomplement im bin¨aren Zahlensystem
• negative Zahlen erh¨alt man durch Invertieren aller Bits des Betrags der Zahl und Addieren von 1
• am ersten Bit kann man das Vorzeichen erkennen
• addiert man 1 zur -1, erh¨alt man durch einen Overflow 0 (1111 + 0001 = 10000, die 1 f¨allt weg, daher 0000)
• intern sind keine extra Rechenregeln f¨ur negative Zahlen n¨otig!
Zweierkomplement im hexadezimalen Zahlensystem
• am besten ausgehend von Bin¨ardarstellung herleiten
• je 4 Bit eine Stelle im Hexadezimalsystem ben¨otigt (0-F)
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zahlensysteme
Beispiele (8 Bit)
Dezimal Bin¨ar Hexadezimal
1 0000 0001 01
-1 1111 1111 FF
93 0101 1101 5D
-93 1010 0011 A3
127 0111 1111 7F
-127 1000 0001 81
128 N/A N/A
-128 1000 0000 80
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Zahlensysteme
Beispiele (8 Bit)
Dezimal Bin¨ar Hexadezimal
1 0000 0001 01
-1 1111 1111 FF
93 0101 1101 5D
-93 1010 0011 A3
127 0111 1111 7F
-127 1000 0001 81
128 N/A N/A
-128 1000 0000 80
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Zahlensysteme, Datentypen und Ausdr¨ucke
Datentypen und Ausdr¨ ucke
int x = 4, y = 1;
double z = 4.0;
boolean a = (y > 5) && (5 != 4) || (x > -4); // true
int b = ++x * 4 + y++; // 21
double c = 6 / z; // 1.5
boolean d = (x == y) || (x > z++); // true
int e = x << 1; // 10
boolean f = !((x >> 2 < y) && (z++ == x)); // false
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 String-Operationen
String.charAt(int) und String.length()
String test = "hallo";
int length = test.length(); // length is now 5
System.out.println(String.charAt(0)); // h System.out.println(String.charAt(3)); // l System.out.println(String.charAt(length)); // error System.out.println(String.charAt(length-1)); // o System.out.println(String.charAt(-1)); // error
→nur diese beiden Funktionen sind in Aufgabe 2.3 erlaubt!
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 String-Operationen
String.charAt(int) und String.length()
String test = "hallo";
int length = test.length(); // length is now 5
System.out.println(String.charAt(0)); // h System.out.println(String.charAt(3)); // l System.out.println(String.charAt(length)); // error System.out.println(String.charAt(length-1)); // o System.out.println(String.charAt(-1)); // error
→nur diese beiden Funktionen sind in Aufgabe 2.3 erlaubt!
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 String-Operationen
String.charAt(int) und String.length()
String test = "hallo";
int length = test.length(); // length is now 5
System.out.println(String.charAt(0)); // h System.out.println(String.charAt(3)); // l System.out.println(String.charAt(length)); // error System.out.println(String.charAt(length-1)); // o System.out.println(String.charAt(-1)); // error
→nur diese beiden Funktionen sind in Aufgabe 2.3 erlaubt!
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Wiederholung zu Arrays
int[] a = { 0, 5, 8, 12, 2 }; int[] b = { 4, 7, 11, 0, 3 }; int[] c = new int[5];
for (int i = 0; i < c.length; i++) { c[i] = a[i] + b[i];
}
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Wiederholung zu Arrays
int[] a = { 0, 5, 8, 12, 2 };
int[] b = { 4, 7, 11, 0, 3 };
int[] c = new int[5];
for (int i = 0; i < c.length; i++) { c[i] = a[i] + b[i];
}
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Matrix-Addition
int[][] a = { { 0, 5, 12 }, { 8, 12, 2 } }; int[][] b = { { 4, 7, 11 }, { 13, 0, 3 } }; int[][] c = new int[2][3];
// calculate c = a + b
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) { c[i][j] = a[i][j] + b[i][j];
} }
// c is now { { 4, 12, 23 }, { 21, 12, 5 } }
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Matrix-Addition
int[][] a = { { 0, 5, 12 }, { 8, 12, 2 } };
int[][] b = { { 4, 7, 11 }, { 13, 0, 3 } };
int[][] c = new int[2][3];
// calculate c = a + b
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) { c[i][j] = a[i][j] + b[i][j];
} }
// c is now { { 4, 12, 23 }, { 21, 12, 5 } }
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Theorie der Matrix-Multiplikation
5 4 3 2 1 0
·
0 1 2 3 4 5
=
20 32
2 5
Beispiel A·B =C
• A= (l×m),B = (m×n)⇒C = (l×n)
• A·B 6=B·A⇒nicht kommutativ!
→http://de.wikipedia.org/wiki/Matrix (Mathematik)
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Theorie der Matrix-Multiplikation
5 4 3 2 1 0
·
0 1 2 3 4 5
=
20 32
2 5
Beispiel A·B =C
• A= (l×m),B = (m×n)⇒C = (l×n)
• A·B 6=B·A⇒nicht kommutativ!
→http://de.wikipedia.org/wiki/Matrix (Mathematik)
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Theorie der Matrix-Multiplikation
5 4 3 2 1 0
·
0 1 2 3 4 5
=
20 32
2 5
Beispiel A·B =C
• A= (l×m),B = (m×n)⇒C = (l×n)
• A·B 6=B·A⇒nicht kommutativ!
→http://de.wikipedia.org/wiki/Matrix (Mathematik)
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen
Theorie der Matrix-Multiplikation
5 4 3 2 1 0
·
0 1 2 3 4 5
=
20 32
2 5
Beispiel A·B =C
• A= (l×m),B = (m×n)⇒C = (l×n)
• A·B 6=B·A⇒nicht kommutativ!
→http://de.wikipedia.org/wiki/Matrix (Mathematik)
Organisatorisches Besprechung Blatt 1 Vorbereitung Blatt 2 Arrays und Matrizen