Mupples bringt Vorübungen und Buchauszüge von J. Anton Illik: “Erfolgreich programmieren mit Java – vom Einsteiger zum Könner“, wenn Sie für die HFU-Vorlesung und Übung hilfreich sind. Ziel dabei ist es auch, Ihre konstruktive Kritik in den Kommentaren abzuholen. Gerne können wir in der Vorlesung und Übung auch darüber diskutieren. In diesem Post geht es um das Array in Java.
Neben den skalaren Datentypen (sicherheitshalber nochmal nachlesen) gibt es im Sprachkern von Java auch einen strukturierten Datentyp: das Array.
Strukturierte Datentypen werden auch als zusammengesetzte Datentypen bezeichnet, weil sie sich tatsächlich aus mehreren Einzeldaten zusammensetzen, bzw. mehrere Einzelobjekte und skalare Daten aufnehmen können. Das hat im Video zur Vorübung 5.1 zum Vergleich mit dem Eierkarton geführt.
Hier einige Beispiele für Array-Deklarationen:
// A) eindimensionales Array für 10 Integer-Zahlen int numbers[] =new int[10]; // oder alternativ: int[] numbers = new int[10]; // B) zweidimensionales 5x10-Array von 50 Integer-Zahlen // angeordnet in 5 Zeilen und 10 Spalten int matrix[][] = new int[5][10]; // oder alternativ: int[][] matrix = new int[5][10]; // C) explizite Initialisierung eines eindimensionalen Arrays // für 4 Integer-Zahlen: int numbers[] = new int [] {0, 1, 2, 3}; // D) explizite Initialisierung eines zweidimensionalen Arrays // mit 2 Zeilen und 2, bzw. 3 Spalten: int matrix[][] = new int [][] {{0,1},{0,1,2}};
Wenn wir die formalen Java-Deklarationen uns etwas plastischer als (Eierkarton-)Skizze vorstellen, sehen die Arrays folgendermassen aus:
Das eindimensionale Array – ein Vektor
Also hier nochmals Deklaration A): ein eindimensionales int-Array namens numbers mit 10 Elementen
// A) eindimensionales Array für 10 Integer-Zahlen int numbers[] =new int[10]; // oder alternativ: int[] numbers = new int[10];
Das zweidimensionale Array – die Matrix
Hier nochmals die Deklaration B): ein zweidimensionales int-Array namens matrix mit 5 Zeilen uns 10 Spalten
// B) zweidimensionales 5x10-Array von 50 Integer-Zahlen // angeordnet in 5 Zeilen und 10 Spalten int matrix[][] = new int[5][10]; // oder alternativ: int[][] matrix = new int[5][10];
Der Vektor statisch initialisiert
Hier nochmals die Deklaration C): Ein eindimensionales int-Array mit dem Namen numbers mit 4 Elementen wird gleich bei der Deklaration statisch initialisiert mit den int-Werten 0, 1, 2, und 3.
// C) explizite Initialisierung eines eindimensionalen Arrays // für 4 Integer-Zahlen: int numbers[] = int [] {0,1,2,3};
Die Matrix statisch initialisiert
Hier nochmals die Deklaration D): Ein zweidimensionales int-Array (eine Matrix) namens matrix mit zwei Zeilen und zwei / bzw. drei Spalten. Alle Marix-Felder werden gleich bei der Deklaration statisch initialisiert mit den int-Werten 0 und 1 für die erste Zeile [0] und den int-Werten 0,1 und 2 für die zweite Zeile [1].
//D) explizite Initialisierung eines zweidimensionalen Arrays // mit 2 Zeilen und 2, bzw. 3 Spalten: int matrix[][] = int [][] {{0,1},{0,1,2}};
Ab in die unendlichen Dimensionen
Zu guter Letzt soll hier noch erwähnt werden, dass Java-Arrays mehr als zwei Dimensionen schaffen.
Weil bis zur dritten Dimension unsere Vorstellungskraft in aller Regel reich, hier zum Schluß noch ein dreidimensionales char-Array. Dreidimensionale Arrays werden landläufig als der “Würfel” (auch “Quader” u. “Kubus“, “Cube“) bezeichnet. Etwas wisssnschaftlicher heißt das 3-dimensionale Array (in der Mathematik) Tensor 3ter Ordnung.
Was mit dem Datentyp char geht, geht natürlich auch mit anderen Datentypen.
Zum Schluß noch die Codesequenz, um den Tensor 3. Grades statisch zu initialisieren:
/** * Demo-Programm für einen statisch initalisierten * Tensor 3. Ordnung * BEACHTE Zusammenhang zwischen Datenstruktur und * Algorithmus: zum Tensor 3. Ordnung passen * die 3 inneinander geschachtelten for-Schleifen */ /** * @author J. Anton Illik * */ public class Cube { /** * @param args */ public static void main(String[] args) { char cube [][][] = new char[][][]{ { //erste Ebene {'a','b','c'}, {'d','e','f'}, {'g','h','i'} }, { //zweite Ebene {'j','k','l'}, {'m','n','o'}, {'p','q','r'} }, { //dritte Ebene {'s','t','u'}, {'v','w','x'}, {'y','z','!'} } }; for (int i = 0;i<3;i++) for (int j = 0;j<3;j++) for (int k = 0;k<3;k++) System.out.println(cube[i][j][k]); } // end of main() } // end of class Cube
Zum Schluß die Frage an die Profis
In welcher Reihenfolge wird der in der Zeichnung oben dargestellte Cube mit den Buchstaben initialisiert? Zeichnen Sie die Lösung in den Cube ein und senden Sie das eingecannte Lösungsblatt per eMail an den Autor.
Die ersten drei Einsendungen des korrekt gelösten und eingescannten Lösungsblatts per eMail an den Autor erhalten jeweils eine Anerkennung. Die eMail mit der Lösung muss das Subject “Cube” enthalten.
Einsendeschluss per eMail ist der 24.11.2016, 24:00Uhr. Der Rechtsweg ist ausgeschlossen.
Teilnahmeberechtigt sind ausschließlich an der HFU eingeschriebene WIB-Erst-Semester-Studierende aus der WIB Pflichtveranstaltung “Programmieren 1” bei Prof. J. Anton Illik.
Ein Gedanke zu „Zusammengesetzte Datentypen: das Array“