Lernpfad:Einführung in Processing/10

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Icon Chalk board.png
Was du in diesem Schritt lernst
  • Strukturierte Zerlegung.
  • Eigene Methoden programmieren.
  • Parametervariablen nutzen.


Programme zur Lösung komplexerer Probleme können sehr lang werden. Um den Überblick zu behalten macht es daher Sinn, das Programm in kleinere Teile zu zerlegen. Diese kannst Du unabhängig voneinander programmieren und auf Fehler überprüfen, bevor Du sie zur Gesamtlösung zusammensetzt.

Du kennst mittlerweile schon ein Beispiel dazu: Im aktiven Modus gibt es verschiedene Programmblöcke, die bestimmte Teile des Programms zusammenfassen. setup() und draw() sind Methoden, die festgelegte Programmteile darstellen. mousePressed() ist ein anderes Beispiel.

Eigene Befehle programmieren

Das praktische ist, dass wir Methoden sehr einfach selber programmieren können:

void blauerKreis() {
   fill(0, 150, 255);
   stroke(0, 98, 195);
   strokeWeight(2);
   circle(mouseX, mouseY, 10);
}

Hier wird ein neuer Befehl stempeln() definiert, der einen blauen Kreis an der Mausposition zeichnet. Sobald dieser neue Befehl definiert ist, kann er im Programm benutzt werden:

void setup() {
   size(400, 400);
}

void draw() {
}

void mousePressed() {
   blauerKreis();
}

void blauerKreis() {
   fill(0, 150, 255);
   stroke(0, 98, 195);
   strokeWeight(2);
   circle(mouseX, mouseY, 10);
}

Das ist praktisch, da wir nun alle Befehle, die zum Zeichnen eines blauen Kreises notwendig sind, in einem Block zusammengefasst haben und immer wieder benutzen können. Möchten wir nun ein rotes Quadrat "stempeln", statt eines blauen Kreises, können wir einfach eine neue Methode schreiben und diese benutzen:

void rotesQuadrat() {
   fill(255, 126, 125);
   stroke(148, 17, 0);
   strokeWeight(1);
   rectMode(CENTER);
   rect(mouseX, mouseY, 10, 10);
}
Icon Heft.png
Arbeitsauftrag
  1. Schreibe das Programm oben so um, dass das rote Quadrat anstatt des blauen Kreises "gestempelt" wird.
  2. Schreibe das Programm dann so um, dass beide Figuren gleichzeitig gestempelt werden.
    Klicken, um das Programm zu starten.


Befehle mit Eingaben programmieren

Eine Methode für sich ist nichts anderes als ein Algorithmus, wie wir sie schon die ganze Zeit programmieren. In Schritt 3 haben wir die ersten Algorithmen über ihre Eingabe und erwartete Ausgabe definiert. Zum, Beispiel

Eingabe: drei Zahlen x, y und size
Ausgabe: Zeichne ein Quadrat mit Kantenlänge size um den Mittelpunkt (x, y)

Methoden können auch Eingaben empfangen und damit arbeiten. Du kennst das schon von Befehlen wie line(), der vier Zahlen als Eingabe bekommt und diese als Koordinaten für den Start- und Endpunkt einer Linie benutzt.

Den Algorithmus oben können wir so programmieren:

void quadrat( float x, float y, float size ) {
  float r = size/2;
  rect(x-r, y-r, size, size);
}

Beachte hier die verschiedenen Variablen:

  • float r ist eine lokale Variable, die nur innerhalb des Blocks gültig ist.
  • float x, float y und float size sind Parametervariablen. Sie sind auch im Block gültig und repräsentieren die Eingabe der Methode.

Der Aufruf dieser neuen Methode erfolgt dann zum Beispiel so:

void draw() {
  background(200);
  quadrat(50, 100, 30);
  quadrat(random(200), random(200), random(20));
}
Icon Heft.png
Arbeitsauftrag

Programmiere Methoden zu folgenden Definitionen:

Eingabe: zwei Zahlen w und h
Ausgabe: eine Ellipse in der Mitte des Fensters mit der Breite w und Höhe h

Ergänze die Ellipse oben um einen zufällige Farbe.

Eingabe: zwei ganze Zahlen a und b
Ausgabe: gib die Summe, Differenz, das Produkt und den Quotienten der Zahlen im Textfenster unten aus

Ändere die Rechenfunktion oben so um, dass sie auch mit Kommazahlen funktioniert.


Icon Heft.png
Arbeitsauftrag
  1. Programmiere eine Methode greet mit zwei Eingaben vom Typ String. Beim Aufrif greet("Hallo", "Hans"); soll die Ausgabe Hallo, Hans! auf die Zeichenfläche geschrieben werden.
  2. Programmiere zwei Methoden hallo(String name) und servus(String name), die unter Verwendung von greet jeweils die Ausgaben Hallo, Hans! und Servus, Hans! ausgibt.


Befehle mit Ausgabe programmieren