Arrays

Wie wäre es mit einem Theremin, das weniger nach Science Fiction klingt, sondern nur Töne einer Tonleiter spielt – so wie du das vom Klavier oder von der Gitarre kennst? Kein Problem, allerdings musst du dich hierfür kurz noch mit einem weiteren wichtigen Programmierbaustein vertraut machen: Arrays.

Ein Array ist nichts anderes als eine Sammlung von Variablen oder Werten. Das können z.B. die Frequenzen von Tönen einer Tonleiter sein, aber auch jede andere Kette von Werten, die zusammengehören – also z.B. Werte für die Helligkeit einer LED, Messergebnisse des Lügendetektors usw.

Bisher hast du einer Variablen einen einzelnen Wert zugeschrieben, z.B.

int var = 10;

Ein Array hingegen kann mehrere dieser Werte beinhalten. Du deklarierst es wie folgt:

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

Beachte hier bitte die eckigen Klammern hinter dem Namen des Arrays. Die Werte im Array stehen mit Kommas getrennt innerhalb geschweifter Klammern.

___STEADY_PAYWALL___

Auf Werte in einem Array zugreifen

Wie kannst du nun die Werte im obigen Array lesen? Das ist ganz einfach, jeder Wert im Array hat einen Index, also eine Zahl, die die Stelle des Werts im Array festlegt. So wie der Ton C der erste Ton in der C-Dur-Tonleiter ist und ein D, der zweite. Das ist einleuchtend, allerdings musst du in C++ (und vielen anderen Sprachen) eine Sache beachten: Arrays sind nullindiziert, was nichts anderes bedeutet als dass der erste Wert nicht an der 1. Stelle im Array steht, sondern an der Nullten.

Wenn du im Array meinArray[] also auf den Wert 1 zugreifen möchtest, tust du das mit dem Index 0:

int ersterWert = meinArray[0];

Auf den zweiten Wert (also die 2) greifst du mit meinArray[1] zu – und so weiter. Der letzte Wert im obigen Array ist die Zahl 5 mit dem Index 4.

Aber was passiert, wenn du auf einen Wert zugreifen möchtest, der im Array nicht existiert? Wenn du also in meinArray[] auf den Index 5 zugreifst? Hier ist dein Sketch dann etwas verloren und wird keine sinnvollen Daten liefern – und im schlimmsten Fall abstürzen.

Werte mit einem FOR-Loop auslesen

Wenn du alle Werte des Arrays hintereinander ausgeben möchtest, ist das ganz einfach mit einem FOR-Loop:

for (byte i = 0; i < 5; i = i + 1) {
  Serial.println(meinArray[i]);
}

Hier steht der Zähler i zunächst auf 0 und sorgt entsprechend in meinArray[0] dafür, dass der erste Wert im Seriellen Monitor erscheint. Anschließend wird i um 1 erhöht – meinArray[1] gibt also den zweiten Wert aus usw.

Neue Werte hinzufügen

Noch hat meinArray[] also noch keinen Index 5 – aber das kannst du ändern. Neue Werte ergänzt du einfach folgendermaßen:

meinArray[5] = 6;

Du kannst aber natürlich nicht nur neue Werte ans Ende eines Arrays setzen, sondern auch bestehende Werte ersetzen. Wähle hierfür einfach den Index der Zahl, die du ersetzen möchtest und weise ihm einen neuen Wert zu.

In der nächsten Lektion verwendest du ein Array, um darin verschiedene Töne zu speichern – auf die dann dein Theremin zugreifen kann.