Arrays – Woche 11
Aufgaben
K1: Einfaches Array
LösungDeklariere 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. - 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ß)
Dokumentation
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
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;