Bisher hast du gelernt, wie man Konstanten und Variablen zum Speichern und Verwenden von Werten erstellt und wie man Entscheidungen im Code trifft, indem der if-Ausdruck und Entscheidungsoperatoren wie and und or verwendet werden.
Jetzt ist es an der Zeit zu lernen, wie du Code schreibst, den du einfach in deinem Programm wiederverwenden kannst.
Erinnerst du dich an Lektion 2? Darin hast du gelernt, dass ein Ausdruck die kleinste Codeeinheit ist, die ein Ergebnis erzeugt. Und wenn ein Ausdruck ausgeführt wird und einen Wert ausgibt, ist dieser Output-Wert das Ergebnis.
Dieses Wissen kannst du sinnvoll einsetzen, um deinen Code effizienter zu gestalten.
Ausdrücke können mit anderen Ausdrücken kombiniert werden, um Funktionen zu erstellen. Und Funktionen können immer wieder in deinem Code verwendet werden, ohne dass du das, was sie bewirken sollen, jedes Mal neu schreiben musst.
Verwendung von Ausdrücken in Funktionen
Eine Funktion (auch als Routine bezeichnet) ist wiederverwendbarer Code, der Befehle zum Ausführen einer Aktion oder zum Erstellen eines Outputs je nach Input bereitstellt.
Funktionen setzen sich aus kombinierten Ausdrücken zusammen.
Folgendes brauchst du zum Definieren einer Funktion:
- Einen einzigartigen Namen oder eine Kennung
- Den Typ der Informationen, die als Ergebnis herauskommen
- Die Wirkungsweise der Funktion bei ihrem Aufruf
Dies ist die grundlegende Syntax einer Funktion:
name() : type =
codeblock
In der nächsten Lektion erfährst du mehr über Codeblöcke. Vorerst brauchst du aber nur zu wissen, dass der Codeblock der Bestimmungsort für die Ausdrücke ist, mit denen du deine Funktion erstellst.
Funktionen und Funktionsaufrufe
Eine Funktion ist im Grunde eine Sequenz von Ausdrücken, die du benannt hast.
Programme verwenden eine Funktion, indem sie diese beim Namen aufrufen. Durch den Aufruf wird diese Funktion aktiviert. Das ist ein Funktionsaufruf.
Das bedeutet: Statt all die Ausdrücke, die du in eine Funktion steckst, ständig zu wiederholen, kannst du sie in der benannten Funktion zusammenfassen. Dann bezieht sich der Computer jedes Mal, wenn du diese Funktion im Programm aufrufst, auf diese Funktion zurück und führt die Ausdrücke darin aus.
Beispielsweise muss CoinsPerMousetrap nicht immer den Wert 100 haben – du könntest auch Code schreiben, der den Wert ändert, indem er bei jeder Ausführung einen zufälligen Wert wählt.
Im unten stehenden Beispiel wird der Ausdruck so gesetzt, dass eine zufällige Zahl von eins bis zehn generiert wird. Dabei wird der Ausdruck GetRandomInt(1, 10) verwendet.
Die Aufschlüsselung sieht wie folgt aus:
GetRandomInt() |
Dies ist eine eingebaute Funktion in Verse, die eine zufällige Ganzzahl generiert. |
1, 10 |
Das ist der Zahlenbereich, in dem die Generierung erfolgen kann. Würde man 20, 50 verwenden, würde die Funktion eine Zahl zwischen zwanzig und fünfzig generieren. Beachte, dass der Bereich in () einzuschließen ist und die Klammern zum Namen des Ausdrucks gehören. |
Dabei handelt es sich um einen Funktionsaufruf, weil dieser den Computer anweist, die Funktion aufzurufen, welche eine zufällige Ganzzahl im von dir gesetzten Bereich von 1 bis 10 holt.
Wenn du eine Funktion in deinem Code verwenden möchtest, kannst du die Funktion beim Namen aufrufen. Immer wenn du GetRandomInt() aufrufst, wird eine zufällige Zahl generiert.
Damit könntest du den Preis einer Mausefalle nach dem Zufallsprinzip ändern:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }
OnBegin<override>()<suspends> : void =
# Coins mit 500 initialisieren. Da es sich um eine Variable handelt, können wir sie später ändern.
var Coins : int = 500
# CoinsPerMousetrap mit einer zufälligen Ganzzahl zwischen 1 und 100 initialisieren
CoinsPerMousetrap : int = GetRandomInt(1, 100)
# Den aktuellen Wert von Coins (500) ins Log schreiben
Print("Coins beginnt bei {Coins}.")
# Coins um CoinsPerMousetrap reduzieren und den neuen Wert ins Log schreiben
set Coins = Coins - CoinsPerMousetrap
Print("Nach dem Kauf einer Mausefalle beträgt Coins {Coins}.")
Ist dir aufgefallen, dass fast jede Codezeile im obigen Beispiel über einen Kommentar verfügt, der erklärt, was der Code bewirkt? Das ist nicht nur für dich hilfreich, wenn du dich nach einiger Zeit wieder deinem Code widmest, sondern auch für andere Programmierende, falls diese den von dir geschriebenen Code ergänzen oder ändern wollen.
Methoden
Erinnerst du dich noch an Lektion 2? Da hatten wir besprochen, dass ein Typ definiert, welche Operationen an Werten durchgeführt werden können, die in einer Variable oder Konstante gespeichert sind. Darüber hinaus bewirken Typen noch andere Dinge.
Genauso wie Typen ihnen zugehörige Operationen besitzen, verfügen sie auch über Funktionen, die zu ihnen gehören. Diese Funktionen werden als Methoden bezeichnet und müssen auf eine besondere Weise aufgerufen werden.
Sie werden nicht bloß durch Schreiben ihres Namens (wie Print() oder GetRandomInt()) aufgerufen. Stattdessen muss ein Methodenaufruf mit dem Namen einer Variable (oder Konstante) beginnen, gefolgt von einem . und dann dem Namen der Methode. Beispielsweise würde der Aufruf der Methode Pounce() auf einer Variablen Cat wie folgt aussehen:
Cat.Pounce()
Klassen
Eine Klasse ist eine Vorlage, die du verwenden kannst, um Dinge mit ähnlichen Verhaltensweisen und Eigenschaften zu erstellen. Eine Klasse ist ein zusammengesetzter Typ. Das bedeutet, dass sie aus gebündelten Daten anderer Typen besteht.
Beim Definieren einer Klasse können beliebige Subklassen die Daten für diese Klasse übernehmen.
Eine Methode ist dann eine Funktion, die an eine Klasse angekoppelt ist. Aus diesem Grund funktioniert nicht jede Methode mit jedem Typ. Die Methode muss in der Klassendefinition für diesen Typ oder in einer Klasse, von der dieser Typ Daten übernimmt, deklariert sein. Keine Sorge, falls du das noch nicht ganz verstanden hast – das ist nur eine schnelle Einführung. Später erfährst du mehr über Klassen.
Zusammenfassung
- Eine Funktion ist eine benannte Sequenz von Ausdrücken, die du wiederverwenden kannst.
- Funktionen sind auch als Routinen bekannt.
- Mit Funktionen sparst du Zeit und verringerst die Anzahl der Fehler, weil du nicht wiederholt mehrere Zeilen des gleichen Codes eingeben (oder pflegen) musst.
- Wenn du eine Funktion in einer Codezeile wiederverwendest, tust du dies mit einem Funktionsaufruf.
- Eine Methode ist eine Funktion, die zu einem bestimmten Typ gehört. Sie muss auf einer Variablen oder Konstanten dieses Typs aufgerufen werden.
- Klassen sind zusammengesetzte Typen, mit denen du Daten anderer Typen kombinieren und dann die Verhaltensweisen und Eigenschaften mit Subklassen teilen kannst.