Diskrete Mathematik I Vorlesung 2 Arrays
Übersicht Arrays (am Beispiel von Java) 1 Übersicht Arrays (am Beispiel von Java) Unterschiede in der Verwendung primitiver Datentypen/Arrays Arrays - beachte Zugriff Beispiele Skalarprodukt Multiplikation von Matrizen Anwendungsbeispiel für Matrizen: Drehung eines Punktes um den Ursprung
Arrays (am Beispiel von Java) 2 Arrays (am Beispiel von Java) Unterscheidungen primitive Datentypen: boolean char byte short int long float 1 2 1 2 4 8 4 Byte Größe steht von vorneherein fest Referenztypen Arrays Strings Objekte Größe erst zur Laufzeit bekannt
Unterschiede in Verwendung primitiver Typen/Arrays 3 Unterschiede in Verwendung primitiver Typen/Arrays Primitive Typen int i, j; // Deklaration i = 0; // Initialisierung j = 1; oder: int i = 0, j = 1; /* Deklaration und Initialisierung gleichzeitig */ Arrays int a[], b[]; // int - Array float v[], w[]; // float- Array float m1[][]; // float – Matrix a = new int[5]; // Erzeugung w = new float[3]; m1 = new float[3][3]; oder: int b[] = {1,2,3,4,5}; /* Deklaration, Erzeugung und Initialisierung gleichzeitig */
Arrays - beachte: n -1 3 Schritte Deklarieren 4 Arrays - beachte: 3 Schritte Deklarieren Erzeugen (Instanz bilden, Instanziieren) Initialisierungen Im Unterschied zu Pascal die Größe n des Arrays wird erst zum Zeitpunkt der Erzeugung (new double[3]) festgelegt Die Indizierung läuft von 0 ... n - 1 n -1
Zugriff int a[][] = new int[2][3]; a[0][0] = 1; a[0][1] = 2; 5 Zugriff int a[][] = new int[2][3]; a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 4; a[1][1] = 5; a[1][2] = 6;
Beispiel: Skalarprodukt 6 Beispiel: Skalarprodukt int v[], w[]; v = {1,2,3}; w = {4,5,6}; int iprod = 0; for (int i = 0; i < 3; i++) iprod = iprod + v[i] * w[i]; for-Schleife for(init; test; update) i++ i = i + 1
c[0][1]= Sa[0][k]*b[k][1] 7 Beispiel: Multiplikation von Matrizen = c[0][1]= Sa[0][k]*b[k][1] Skalarprodukt A 14x
c[i][k]= Sa[i,k]*b[k,i] 7 Beispiel: Multiplikation von Matrizen = c[0,1]= Sa[0,k]*b[k,1] c[i][k]= Sa[i,k]*b[k,i] Skalarprodukt A 14x
c[i][k]= Sa[i,k]*b[k,i] 7 Beispiel: Multiplikation von Matrizen = for (int k = 0; k < 3; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; c[i][k]= Sa[i,k]*b[k,i] Skalarprodukt A 14x
= Beispiel: Multiplikation von Matrizen for (int k = 0; k < 3; k++) 7 Beispiel: Multiplikation von Matrizen = for (int k = 0; k < 3; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; A 14x
Beispiel: Multiplikation von Matrizen 8 Beispiel: Multiplikation von Matrizen for (int k = 0; k < 3; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; float a[][], b[][], c[][]; .. c[][] = {{0,0,0}, {0,0,0}, {0,0,0}}; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++)
Anwendungsbeispiel für Matrizenmultiplikation 9 Anwendungsbeispiel für Matrizenmultiplikation Drehung eines Punktes um den Ursprung
Drehung (um den Ursprung) 10 Drehung (um den Ursprung) y P´ = (x‘, y‘) P = (x, y) P´ a P x A 4x