Creative Coding

btk

Till Nagel

Arrays – Woche 11

Aufgaben

K1: Einfaches Array

Lösung

Deklariere ein int-Array mit der Länge 4 und initialisiere dieses mit beliebigen Werten.

Verwende dann in draw() eine Schleife, und zeichne vier Rechtecke, wobei die x-Position aus dem Array gelesen werden soll.

K2: MultiBalls

Lösung

Erweitere Übung E3 so, dass zehn Kreise sich fortbewegen. Nutze dazu Arrays! Statt float x; also float[] x = new float[10];, und x = x + random(-5, 5); also x[i] = x[i] + random(-5, 5); verwenden.

Variante: Erweitere Übung F2 so, dass viele Bälle animiert werden.

Projekt 2: Superimposition

Erstelle einen Sketch zum Thema Überlagerung. Dabei sollen verschiedene Daten oder Informationen übereinander gelegt, und auf einer zweidimensionalen Fläche dargestellt werden. Diese Fläche soll kein klassischer Stadtplan/Landkarte werden; die Daten können zwar geometrischer Art sein, es können aber auch Daten ohne intrinsische Lokalität genutzt werden. Die zweite Datenschicht könnte auch erst durch Interaktion auftauchen.

  • Ein grafisches Beispiel: "Liebes-Räthsel"

    Aus: Katharine Harmon. You are here: Personal Geographies and Other Maps of the Imagination. Princeton Architectural Press, New York, 2004.
  • Ein interaktives Beispiel: "We feel fine"
    We feel fine
    Dies ist zur Inspiration, natürlich sollen eure Projekte nicht so umfangreich sein.
  • Dokumentation

    • Projektname und Kurzbeschreibung als Kommentar in den Code.
    • Vollständige Namen aller Gruppenmitglieder.
    • Projektbeschreibung als eigene Datei (Text, PDF, Word):
      Was ist die Idee/der Hintergrund?
      Was macht das Programm?
      Eventuelle Schwierigkeiten, bzw. Unvollständigkeiten in der Umsetzung
    • Macht drei Screenshots (als JPEG, max. 250x250 Pixel groß)

    Style

    Achtet darauf, dass ihr den Code formattiert, sinnvolle, aussagekräftige Variablennamen verwendet und – vor allem – gut kommentiert. (Siehe auch den Style Guide)

    Abgabe

    Die Projekte müssen im Intranet der BTK eingereicht werden. Archiviert euren Sketch (Processing Menü > Tools > Archive Sketch) und ladet diese Zip-Datei bei der entsprechenden Aufgabe hoch. Dabei die drei Screenshots nicht vergessen.

    Letzter Abgabetermin ist Mittwoch, 16.07.08.

    Am Donnerstag, 17.07., werden die Projekte dann in der letzten Stunde präsentiert.

Arrays

Mit Hilfe von Variablen können wir Informationen an einem Schritt im Programm speichern, um diese an einem späteren wieder zu benutzen. Wir speichern pro Variable einen einzelnen Wert. Mit Arrays können wir nun mehrere Werte auf einmal zwischen speichern. Ein Array ist eine Liste von Variablen, bei der jedes Element den gleichen Datentyp hat. Ein Array ist eine Datenstruktur.

(Ich hatte Variablen als Schubladen bezeichnet, und um in diesem Bild zu bleiben, kann man ein Array als mehrere Schubladen oder als einen Schubladenschrank sehen.)

Deklaration eines Arrays

Arrays müssen vor Benutzung wie Variablen deklariert werden, nur dass hinter dem Datentyp noch eckige Klammern stehen:

Um ein Array zu initialisieren, müssen wir die Länge des Arrays definieren. Die Länge bestimmt, wieviele Elemente in dem Array gespeichert werden können. Im folgenden Beispiel definieren wir unser Array zahlen so, dass fünf Elemente (vom Typ int) darin gespeichert werden können, und das andere Array positionen so, dass wir darin 30 Elemente, d.h. 30 float-Werte speichern können.

Ein Array wird demnach so initialisiert: new datentyp[länge]; also beispielsweise new float[4];

Zugriff auf einzelne Elemente

Wir können auf die einzelnen Elemente über einen Index zugreifen. Dieser Index ist immer ganzzahlig und beginnt mit 0. Jedes Element ist dabei vom gleichen Datentyp, und kann wie eine normale Variable verwendet werden. Wenn wir auf ein einzelnes Element des Arrays zugreifen, können wir dessen Wert lesen und schreiben.

Hier sehen wir, wie man den Elementen eines Arrays neue Werte zuweist (siehe Zuweisung).

Wir können die einzelnen Elemente ebenso wie Variablen verwenden:

Und natürlich können wir auch für den Index eine Variable oder Ausdrücke einsetzen:

Links

Arrays & Schleifen

Werden viele ähnliche Daten verwenden oder berechnet, sind Arrays sehr nützlich.
Wenn wir beispielsweise einen Ball animieren wollen (siehe Übung F2), so mussten wir die Position und die Geschwindigkeit in Variablen speichern: x, y, vx, vy. Sollen nun nicht nur ein sondern mehrere Bälle dargestellt werden, müsste man pro Ball vier Variablen einsetzen (x2, y2, vx2, vy2, x3, y3, ...), was sehr mühsam wäre. Statt dessen können wir Arrays verwenden.
Der Zweck von Arrays ist also, dass wir viele gleichartige Variablen gemeinsam speichern können — und uns dadurch viel unnötige Tipp- und Programmierarbeit erspart bleibt.

Verwendung

Um nun auf jedes Element zuzugreifen, können wir entweder jede Position einzeln angeben (zahlen[3]), oder mittels einer for-Schleifen auf alle zugreifen. Die Zählervariable einer for-Schleife können wir dann direkt als Index verwenden:

Dank Einsatz solch einer Schleife durchläuft Processing alle Elemente. Arrays und Schleifen harmonieren besonders gut zusammen. Die Verwendung von Arrays kommt sehr häufig in Kombination mit Schleifen vor.

Im folgenden Beispiel werden zehn Kreise gezeichnet, wobei als Positionen die Werte zweier Arrays verwendet werden.

Beispiel: Mehrere bewegte Kreise

To view this content, you need to install Java from java.com

Hierfür wurde die Übung F2 so erweitert, dass durch Einsatz von Arrays mehrere Kreise animiert werden.

[]

Bei Einsatz von Arrays ist zu beachten, dass die eckigen Klammern verschieden verwendet werden und verschiedene Bedeutungen haben:

  • Zur Deklaration eines Arrays: int[] arrayName;
  • Zur Definition der Länge: int[] arrayName = new int[10];
  • Zum Zugriff auf einzelne Elemente: arrayName[4] = 15;