sin-retorno

Führen Sie die Order 66 aus….

Heute lernen wir alles über die FunktionsBlöcke. Worum handelt es sich? Wozu dienen sie? Warum enthalten sie so viele seltsame Wörter? Hier erhältst du Antworten auf diese Fragen:

Bloques funciones

Stellt euch vor, dass unser Programm einen Schritt viele Male hintereinander ausführen muss. Das könnte beispielsweise sein, zwei LEDs bei verschiedenen Gelegenheiten blinken zu lassen oder eine Melodie erklingen zu lassen, die aus mehr als 25 Blöcken besteht. Wenn wir die Melodie jedes Mal neu erstellen müssten wenn wir sie hören wollen, hätten wir bald viereckige Augen von so vielen Blöcken!

Wäre es nicht toll, wenn wir diese Melodie nur ein einziges Mal erstellen müssten, diesem Schritt einen Namen geben (wie zum Beispiel „Die Melodie erklingen lassen“) und sie anschließend mit nur einem Block abspielen könnten?
Genau darin bestehen die Funktionen! Sie dienen dazu, uns Zeit und Blöcke einzusparen. Wenn wir es mit einer Handlung zu tun haben, die sich häufig wiederholt oder wenn wir unsere Projekte besser organisieren möchten, erstellen wir eine Funktion, die etwas immer dann ausführt wenn wir sie dazu auffordern.
Damit ihr lernt, mit den Funktionen Kopfschmerzen zu vermeiden anstatt Kopfschmerzen zu bekommen, solltet ihr jetzt gut aufpassen. Und los geht´s:
Für die Durchführung der heutigen Beispiele benötigst du:

  • 1 x ZumBloq LED
  • 1 x ZumBloq Summer
  • 1 x ZumBloq Taster
  • 1 x ZumBloq Servo mit kontinuierlicher Rotation
  • Eine Steuerplatine ZUM BT 328 oder eine, die mit Arduino UNO kompatibel ist
  • Ein USB-Kabel

Ich bin gleich wieder da…

Zunächst einmal müssen wir zwei Arten von Funktionen unterscheiden: Funktionen ohne Ausgabe und Funktionen mit Ausgabe. „Ohne Ausgabe“ bedeutet, dass die Funktionen am Ende ihrer Ausführung keinen Wert ausgeben.

Wenn wir eine Funktion erstellen wollen, die viele mathematische Operationen durchführt (addieren, subtrahieren, erneut addieren, multiplizieren, wieder subtrahieren und multiplizieren zum Beispiel), interessiert uns, dass uns die Funktion am Ende ein Ergebnis ausgibt. Deshalb verwenden wir in diesem Fall eine Funktion mit Ausgabe, denn sie gibt uns das Endergebnis der Operation aus.

Wenn wir hingegen erreichen wollen, dass unsere Funktion eine Reihe von Anweisungen ausführt, die nichts mit einem Ergebnis zu tun haben, wie zum Beispiel diese lange Melodie erklingen zu lassen, verwenden wir eine Funktion ohne Ausgabe.

Der Block „Funktion ohne Ausgabe“ oder der Block „ Funktion ohne Ausgabe aufrufen“

Bloques funciones sin retorno

Wie wir gerade erklärt haben dient uns der Block Funktion ohne Ausgabe (oben links) dazu, eine Reihe von Blöcken zusammenzufassen, die ausgeführt werden, wenn wir die Funktion aufrufen.

Wir könnten also sagen, dass wir mit dem Erstellen einer Funktion gleichzeitig ein Mini-Programm erstellen. Wir geben ihm einen Namen, um es aufrufen zu können. Dann kann das „Hauptprogramm“ in die Funktion eintreten, sie komplett durchlaufen, aus der Funktion austreten und wieder mit dem Hauptprogramm fortfahren (in diesem Fall ohne einen Wert auszugeben).
Ejemplo funciones flujo programa flechas -Aber was ist das denn? Zwei Reihen mit Blöcken die nicht verbunden sind? Hatten wir nicht gesagt, dass sie alle verbunden sein müssen, um korrekt funktionieren zu können?

Das ist vollkommen richtig, alle Blöcke in unserem Hauptprogramm müssen verbunden sein. Wenn wir einen Block auswählen um eine Funktion zu erstellen, errichten wir ein kleines Programm neben dem Hauptprogramm, das in diesem aber enthalten ist.

Anhand des folgenden Beispiels ist es besser zu verstehen.

Beispiel mit den Funktions-Blöcken ohne Ausgabe.

Wir erstellen ein Programm mit dem wir bei Tastendruck einen Servo bewegen können, der mit Blinken und einem Ton avisiert.

Ejemplo funciones sin retorno

Mittlerweile müsstet ihr bereits Experten im Umgang mit dem Block “Wenn…ausführen” sein. Das Beispiel, einen Schritt auf Knopfdruck auszuführen und einen anderen Schritt auszuführen wenn wir ihn nicht drücken, werdet ihr mehr als einmal durchgeführt haben. Ich bin mir sicher, dass es euch leicht fallen wird, das Programm zu verstehen, wenn wir die rosafarbigen Blöcke mit der Bezeichnung „Blinken_mit_Ton“ und die rechten Blöcke entfernen.

Sehen wir uns zunächst den rechten Teil des Programms an. Als erstes haben wir den Block „Funktion ohne Ausgabe“. Dieser Block ist dafür zuständig, eine Funktion ohne Ausgabe zu erstellen. Wenn wir ihn in unsere Arbeitsumgebung integrieren wollen, müssen wir ihm einen Namen zuweisen (wie wir es auch mit den Variablen gemacht haben). Das ist dann die Bezeichnung unserer Funktion und unter diesem Namen rufen wir sie mit dem Block „Funktion ohne Ausgabe aufrufen“ auf (wie wir auf der rechten Seite des Programmes sehen).

Wir können innerhalb des Blocks „Funktion ohne Ausgabe“ ein Programm erstellen, von dem wir wissen, dass wir es mehrmals wiederholen werden. Der Block kann stetig wachsen, so dass du alle Blöcke, die notwendig sind, in die Funktion einfügen kannst.

Wenn wir möchten, dass unser Hauptprogramm die Schritte ausführt, die wir in der Funktion programmiert haben (egal wie lang sie ist), müssen wir den Block „Funktion ohne Ausgabe aufrufen“ einsetzen und den Namen ändern, so wie wir auch bei den Variablen verfahren sind.

Wie wir in dem Beispiel sehen können wird in jedem Programmzyklus überprüft, ob der Taster gedrückt ist oder nicht und entsprechend, ob der Servo bewegt oder angehalten wird. Außerdem rufen wir vor dem Servo-Block die Funktion auf, so dass jedes Mal wenn wir zum rosafarbigen Block mit der Bezeichnung „Blinken_mit_Ton“ kommen, alle Blöcke der Funktion von oben nach unten ausgeführt werden.

Besser zwei als einer

Wir können auch Programme mit mehr als einer Funktion erstellen. Gefällt euch dieses Hauptprogramm nicht auch viel besser?

Ejemplo varias funciones

Beim Drücken des Tasters wird die Funktion Blinken, anschließend die Funktion Melodie und schließlich erneut die Funktion Blinken ausgeführt.

Wie es weitergeht…

Wir müssen uns noch einen Funktionstyp ansehen, der uns am Ende der Ausführung der Blöcke eine Variable ausgibt. Wozu uns diese dienen kann, sehen wir später. Das sind die „Funktionen mit Ausgabe“. Um die Funktionen zu beherrschen setzen wir den Kurs in der nächsten Lektion fort.