Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:processing:syn-funktion-return

Fachkonzepte: Funktion & Return

Funktion

Methoden habt ihr bereits kennen gelernt. Allgemeiner sind Funktionen. Diese werden in der Regel dazu genutzt, um bestimmte Berechnungnen anzustellen. Der Unterschied zu Methoden ist, dass sie einen Wert zurückgeben.

{Funktion=Datentyp Identifier "(" [Parameter {"," Parameter }] ")" "{" (Programm|Return) "}".Parameter = Datentyp Identifier. Return = "return" Ausdruck ";".}

Aus dem Syntax-Diagramm kann man entnehmen, dass Funktionen sehr ähnlich wie Methoden aufgebaut sind. Sie beginnen lediglich mit einem Datentypen anstatt void und haben dann genau wie Methoden einen Methodenkopf und einen Methodenkörper. Nur kommt hier beim Methodenkörper ein neues Sprachelement hinzu, die so genannte Return-Anweisung: Diese liefert einen Wert an den Aufrufer der Funktion zurück.

Betrachten wir ein einfaches Beispiel. Es soll eine Sinus-Kurve gezeichnet werden:

Das könnten wir z.B. durch folgenden Code bewerkstelligen:

void setup() {
  size(300, 150);
}
 
void draw() {
  background(255);
  strokeWeight(3);
  stroke(0);
  for (float i = 0; i < width; i += 5) {
    point(i, sin(i / 10) * 10 + height / 2);
  }
}

Die Frage ist nun, was gehört in der Zeile point(i, sin(i / 10) * 10 + height / 2); eigentlich alles zur mathematischen Funktion, was ist da, weil Processing es braucht? Klar, das height / 2 sorgt dafür, dass die Funktion mittig im Fenster angezeigt wird. Ist also die Funktion nun $f(x)=sin(\frac{x}{10})$ und die * 10 danach ist irgend eine magische Konstante? Oder ist die Funktion $f(x)=10\cdot sin(\frac{x}{10})$?

Um hier Klarheit zu schaffen, kann eine Funktion helfen:

void setup() {
  size(300, 150);
}
 
void draw() {
  background(255);
  strokeWeight(3);
  stroke(0);
  for (float i = 0; i < width; i += 5) {
    point(i, meinSinus(i) + height / 2);
  }
}
 
float meinSinus(float x) {
  return sin(x / 10) * 10;
}

Es wurde die Funktion meinSinus definiert, und nun ist klar ersichtlich, dass die zugrunde liegende mathematische Funktion $f(x)=10\cdot sin(\frac{x}{10})$ ist. Nur heißt sie nicht $f$, sondern eben meinSinus.

Return, Void und der Unterschied zwischen Methoden und Funktionen

Eigentlich gibt es gar keinen Unterschied zwischen Methoden und Funktionen. Denn es wird angenommen, dass void schlicht und ergreifend ein Platzhalter für "kein Datentyp" ist - die Funktion gibt also keinen Wert (also "leer", engl.: void) zurück. Da diese Funktionen nichts zurückgeben, benötigen sie auch kein return-Statement1). Funktionen mit "regulärem" Datentyp benötigen immer ein return-Statement.

1)
Korrekt gemerkt, hier steht benötigen! Methoden können trotzdem mit return; "abgebrochen" werden!
info/sek-ii/e2/processing/syn-funktion-return.txt · Zuletzt geändert: 2022-09-19 19:54 von christian.weber