Title: Nachlese: Array
Course: PAC++ SchülerInnen > Section: UNIX

Einführung

Wir lernen nun eine Möglichkeit kennen, um mehrere Daten in einer Variablen zu speichern.

Bemerkung: Du kannst links oben mit einem Klick auf Einstellungen/Buch-Administration/Buch drucken die gesamte Nachlese ausdrucken.

Motivation

Das Array wird uns erleichtern, viele Datensätze zu speichern, zu manipulieren und auszugeben.

Berechnung

Aufbau eines Arrays

In einem Array werden mehrere Werte desselben Datentyps gespeichert.

Ein Array ist im Allgemeinen immer so aufgebaut:

arrayname[anzahl];

Initialisieren von Arrays

Einem Array muss immer ein Datentyp zugeordnet werden. Nur Einheiten dieses Datentypes können gespeichert werden. Allgemein sieht das so aus:

Datentyp arrayname[anzahl] = { wert, wert, wert };

Wir legen den Datentyp fest, danach geben wir dem Array einen Namen. In die eckige Klammer schreiben wir die Anzahl der speicherbaren Werte. In den geschwungenen Klammern werden die Werte, die sich im Array befinden sollen, gespeichert.

Hier ein Beispiel:

int nummern[3] = { 1, 2, 3 };

Bemerke: Wenn du keine Anzahl in den eckigen Klammern angibst, legt der Compiler fest, wie groß das Array ist.

Länge eines Arrays

Wir können beim Initiieren festlegen, wieviele Werte maximal in einem Array gespeichert werden sollen. Dies funktioniert so:

datentyp variablenname[10];

Wir haben nun ein Array mit Platz für 10 Werte erstellt. Also können wir Werte von 0-9 ansprechen.

Zugriff auf ein Array und dessen Werte

Einzel

Einzelne Werte können wie folgt ausgegeben werden. Wenn du Array[x] eingibst, dann wird der Wert an der Stelle x ausgegeben. Es wird bei der Stelle 0 angefangen zu zählen.

Ein Beispiel:

char buchstaben[] = { 'a', 'b', 'c' };
cout << buchstaben[2];


Am Bildschirm wird c ausgegeben.

ACHTUNG: Einzelne Zeichen müssen in C und C++ mit einem einfachen Anführungszeichen umgeben sein: 'a', "a". Ein doppeltes Anführungszeichen fügt automatisch einen "Nullterminator" hinzu, was dazu führt, dass der Wert zu einem String konvertiert wird und 2 Zeichen enthält. Siehe:

http://stackoverflow.com/questions/3683602/single-quotes-vs-double-quotes-in-c-or-c

Auslesen mit FOR

Ein gesamtes Array kann mit einer For Schleife ausgelesen werden.

Ein Beispiel:

char buchstaben[] = { 'a', 'b', 'c' };
for(int i = 0; i < 3; i++) {
      cout << buchstaben[i];
}


Hier wird eine Variable i vom Datentyp Integer mit 0 gestartet und nimmt den Wert 0,1,2 an. Dann werden die Werte Schritt für Schritt aus dem Array ausgegeben.

Achtung: Immer beim letzten Wert des Arrays stoppen! Versichere dich IMMER, dass deine Schleife nur bis zur letzten Stelle läuft und NICHT weiter!

Manipulation

Arrays können auch im Speicher verändert werden. Genauso wie ein einzelner Wert ausgelesen wird, kann auch ein einzelner überschrieben werden.

Ein Beispiel:

double doublezahlen[] = { 1.5, 23, 9 };
doublezahlen[1] = 2;


Hier wird dem ersten Platz des Arrays der Wert 2 anstelle des Werts 23 zugewiesen.

Auch können mehrere Werte mit einer FOR Schleife geändert werden.

Multidimensionale Arrays

Wir können auch zweidimensionale Arrays - wie ein Spielfeld - erstellen. Es ändert sich nicht viel, wir müssen nur jedes Feld mit 2 Werten ansprechen.

Initalisierung ein Beispiel:

Warum wird die Anzahl der maximal möglichen Elemente hier mit 2 und 3 (spielfeld[2][3]) definiert?

Anwort: Der erste Wert, 2, bezieht sich auf die Anzahl der im ersten Array enthaltenen Arrays. Das heißt, im obersten Array-Level befinden sich 2 Arrays und nicht 3 Arrays. Diese 2 Arrays enthalten jeweils 3 Zahlen.

int spielfeld[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};


Hinweis:
multarray[0] enthält das Array mit den Werten 1,2,3
multarray[1] enthält das Array mit den Werten 4,5,6

int spielfeld[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
cout << multarray[0][1];

Ausgabe: 2

Einlesen, auslesen und manipulieren können wir mit einer Doppel FOR Schleife.

Mit diesem Array können wir viele Spiele programmieren, die ein Spielbrett mit Feldern benötigen.

Ausblick

Du hast die Grundlagen der Programmiersprache C++ erlernt und trainiert. Vertiefe dein Wissen im Umgang mit Arrays und mache dich für den Endkampf bereit!