09 Processing – Arrays

Arrays sind durchnummerierte Listen von Objekten. Damit könnnen wir z.B. eine Liste von Zahlen oder Terminen verwalten (Arrays enthalten immer Objekte des gleichen Typs).

Um ein Array zu definieren, schreiben wir den Typ des Arrays gefolgt von eckigen Klammern und dem Variablennamen:

float[]    zahlen;
String[]   namen;

Wie schon bei Objekten, definieren wir damit lediglich die Variablen. Um sie tatsächlich verwenden zu können, müssen wir die Arrays erst erzeugen.
Das geschieht mit “new”, gefolgt vom Typ und der Anzahl der gewünschten Elemente in eckigen Klammern.

zahlen  = new float[100];
namen   = new String[20];

erzeugt ein Array mit 100 Kommazahlen und weist es der Variablen “numbers” zu.
Nun können wir auf jedes Element des Arrays über seine Nummer (en Index) zugreifen:

zahlen[10]  = 666;

Die Anzahl der Elemente kann über die Eigenschaft “length” abgefragt werden.
Wichtig ist dabei, dass die Nummerierung bei 0 beginnt und bis length – 1 geht, also im Falle von float[100] geht der Index von 0 bis 99:

namen[0]   = "Erstes Element";
namen[1]   = "Zweites Element";

namen[namen.length-1]  = "Letztes Element";

Wenn die Array-Elemente im voraus bekannt sind, kann das Array auch mittels Kurzschreibweise bestückt werden:

String[] namen  = { "Adam", "Berta", Cäsar", "Damien" };
int[]    zahlen = { 1, 2, 3, 4, 5 };

Interessant werden Arrays in Kombination mit for-Schleifen. Damit kann man ein Array “durchlaufen”:

for( int i = 0; i < zahlen.length; i++ ) {
    zahlen[i]  = i;  // setze i-tes Element auf i
}

Wichtig ist dabei, dass der Index, also die Zahl zwischen den eckigen Klammern vom Typ int, also eine ganze Zahl ist.

Beispiel

Im folgenden Beispiel benutzen wir 2 Arrays für die Positionen und die Farben von Rechtecken.

in der setup() Funktion erzeugen wir die beiden Arrays mit jeweils 30 Elementen und weisen ihnen Zufallswerte zu. Die Funktion random( min, max ) liefert eine zufällige Zahl zwischen den beiden Parametern zurück. Die Position liegt zwischen 0 und der Fensterbreite, die Farbe zwischen 0 und 1.

In der draw() Funktion durchlaufen wir das Array und setzen für jedes Element die Füllfarbe auf den Wert von colors[i] und zeichnen an Position positions[i] ein Rechteck.
Anschließend ändern wir den Wert der Position um eine kleine Zufallszahl.

float positions[];
float colors[];
int   anzahl    = 30;

void setup() {
    size( 400, 400 );
    colorMode( HSB, 1 );
    noStroke();

    positions    = new float[anzahl];
    colors       = new float[anzahl ];

    for( int i = 0; i<positions.length; i++ ) {
        fill( colors[i], 1, 1, 0.15 );
        rect( positions[i], 10, 3, 100 );

        positions[i]    += random( -1, 1 );
    }
}

void draw() {
    background( 0 );

    for( int i = 0; i<positions.length; i++ ) {
        fill( colors[i], 1, 1, 0.15 );
        rect( positions[i], 10, 3, 100 );

        positions[i]    += random( -1, 1 );
    }
}

Kommentare sind geschlossen.