Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:processing:p6-methoden

Methoden & Funktionen

Aufgabe 1: Fachkonzepte
Aufgabe 2: Übung

Aus der letzten Lektion wisst ihr, wie man mit verschachtelten Schleifen z.B. das folgende Bild erzeugt.

Beide Sketche unten erzeugen die gleiche Ausgabe. Vergleicht die beiden Sketche und überlegt, wieso es hier sinnvoll ist, Methoden zu verwenden. Passt dann das zweite Programm so an, dass die Punkte auch die korrekte Größe haben.

void setup() {
  size(200, 200);
}
 
void draw() {
  background(200);
  stroke(255, 0, 0);
  strokeWeight(5);
 
  for (int x = 20; x < width; x += 20) {
    for (int y = 20; y < height; y += 20) {
      point(x, y);
    }    
  }
}
void setup() {
  size(200, 200);
}
 
void draw() {
  background(200);
  stroke(255, 0, 0);
  strokeWeight(5);
 
  for (int x = 20; x < width; x += 20) {
    spalte(x); 
  }
}
 
void spalte(int x) {
  for (int y = 20; y < height; y += 20) {
    punkt(x, y);
  }  
}
 
void punkt(int x, int y) {
  point(x, y);
}

Passt nun das folgende Programm aus der vorherigen Lektion so an, dass auch Methoden verwendet werden:

void setup() {
  size(200, 200);
}
 
void draw() { 
  background(255);
  stroke(255, 0, 0);
  strokeWeight(1);
  rectMode(CENTER);
 
  for (int y = 9; y < height; y += 20) {
    for (int x = 9; x < width; x += 20) {
      for (int d = 18; d > 0; d -= 4) {
        rect(x, y, d, d); 
      }
    }    
  }
}
Aufgabe 3: Eigenes Bild

Programmiert dieses Bild unter der Verwendung von Methoden:

Aufgabe 4: Weiteres Fachkonzept
Aufgabe 5:

Funktionen können nicht nur Zahlen als Datentypen haben, sondern z.B. auch Farben. Versuche, das folgende Programm nachzuvollziehen:

void setup() {
  size(300, 300);
}
 
void draw() {
  int bereiche = 3;
  int bereichsGroesse = width / bereiche;
 
  noStroke();
 
  for (int bereich = 0; bereich < bereiche; bereich++) {
    fill(bereichsFarbe(bereich));
 
    rect(bereich * bereichsGroesse, 0, bereichsGroesse, height);
  }
}
 
color bereichsFarbe(int bereich) {
  if (bereich == 0) return #FF0000;
  else if (bereich == 1) return #00FF00;
  else if (bereich == 2) return #0000FF;
 
  return #FFFFFF;
}
  • Ändere nun das Programm: int bereiche = 5; Was passiert?
  • Sorge dafür, dass die beiden anderen Bereiche auch eine Farbe bekommen.
  • Ändere nun das Programm erneut: rect(bereich * bereichsGroesse, 0, bereichsGroesse, bereichsHoehe(bereich));.
    • Erstelle eine neue Funktion bereichsHoehe(…), die die Höhe des angegebenen Bereichs ermittelt. Am Ende soll es so aussehen:
Aufgabe 6: Funktionsplotter

Betrachten wir das folgende Programm, dass einfache Funktionen zeichnen soll:

void setup() {
  size(500, 500);
}
 
void draw() {
  background(255);
 
  // Koordinaten-Ursprung zur Mitte des Fensters verschieben
  translate(width / 2, height / 2);
 
  zeichneKoordinatenGitter();
 
  strokeWeight(4);
 
  for (int x = -width / 2; x <= width / 2; x++) {
    stroke(255, 0, 0);
    point(x, -f(x));
 
    stroke(0, 255, 0);
    point(x, -g(x));
 
    stroke(0, 0, 255);
    point(x, -h(x));
  }
}

Wie wir sehen, gibt es eine Methode, die ein Koordinatengitter zeichnet. Außerdem werden die drei Funktionen $f(x)$, $g(x)$ und $h(x)$ gezeichnet. Diese sind mathematisch wie folgt definiert:

  • $f(x)=100\cdot sin(\frac{x-25}{25})+50$
  • $g(x)=75\cdot cos(\frac{x+25}{50})-25$
  • $h(x)=0.0003x^3+0.05x^2$

Wichtig! Da Processing positive Werte "nach unten" zeichnet, müssen die Funktionswerte negiert werden, um die Funktionen auf die für uns aus der Mathematik gewöhnliche Art und Weise zu zeichnen. Deswegen das Minus in point(x, -f(x));.

Erweitere den Funktionsplotter, indem du die folgenden Funktionen passend zu den mathematischen Definitionen oben ergänzt. Nutze dazu die folgende Vorlage:

float f(float x) {
  return 0 * x;
}
Aufgabe 7: Erweitere den Funktionsplotter

Erweitere den Funktionsplotter aus Aufgabe 6:

  • Der Plotter soll standardmäßig ein leeres Koordinatensystem anzeigen
  • Wenn man die Taste f drückt, soll die Funktion $f(x)$ angezeigt werden, wenn man g drückt, dann $g(x)$ und wenn man h drückt, dann $h(x)$.
  • Füge mindestens 2 eigene Funktionen $i(x),k(x),\ldots$ hinzu. Schau dir dazu z.B. die folgenden Funktionen aus Processing an: exp(x), log(x), pow(a, x), sqrt(n), sin(x), cos(n), tan(n)
  • Wenn man die Taste a drückt, sollen alle Funktionen gleichzeitig angezeigt werden.

info/sek-ii/e2/processing/p6-methoden.txt · Zuletzt geändert: 2023-04-25 13:54 von yannik.wehr