Zusammengesetzte Datentypen: das Array

Array - aus dem Alltag

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 youtubeVideo 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];
arrayscan1
BILD A): 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];
arrayscan2
BILD B): 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};
arrayscan3
BILD C): int numbers[4] = 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}};
arrayscan4
BILD D): int matrix[2][3] = {{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.

arraycube-1
char cube [][][] = new char [3][3][3];
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“

Schreibe einen Kommentar