Referenz - FUNCTIONs
FUNCTIONs sind ebenso wie SUBs Prozeduren. Die dort aufgeführten Informationen gelten weitgehend auch für FUNCTIONs. Im Gegensatz zu einer SUB gibt eine FUNCTION jedoch einen Wert zurück.
FUNCTIONs bestehen aus dem Prozedurheader, dem Programmcode und der Zeile END FUNCTION. Der Prozedurheader und der Programmcode folgen denselben Regeln wie bei SUBs. Siehe FUNCTION für weitere Details zum Prozedurheader.
Im Programmcode können andere FUNCTIONs und SUBs aufgerufen werden. Es ist auch möglich, die FUNCTION selbst aufzurufen. Solche sogenannten rekursiven FUNCTIONs können manche Probleme auf sehr elegante Weise lösen, sollten jedoch mit Bedacht eingesetzt werden, da sie oft schwerer zu warten sind.
FUNCTIONs werden im Programmcode wie Variablen behandelt, die abhängig von ihren Parametern verschiedene Werte annehmen. Sie werden durch ihren Bezeichner aufgerufen, die Parameterliste muss in Klammern übergeben werden. Der Wert einer FUNCTION kann auf dreierlei Weise gesetzt werden:
- über ihren Bezeichner: Funktionsname = Ausdruck
- über das Symbol "FUNCTION": FUNCTION = Ausdruck
- über RETURN: RETURN Ausdruck
Achtung: RETURN funktioniert wie FUNCTION=Ausdruck: EXIT FUNCTION. Die Funktion wird also mit diesem Befehl verlassen.
Beispiel:
DECLARE FUNCTION twice (x AS UINTEGER) AS INTEGER
FUNCTION twice (x AS INTEGER) AS INTEGER
twice = x * 2
END FUNCTION
' gibt 20 aus, das Doppelte von 10:
PRINT twice(10)
SLEEP
Eine rekursive FUNCTION:
FUNCTION Fakultaet (x AS UINTEGER) AS DOUBLE
IF x = 0 THEN
RETURN 1
ELSE
RETURN x * Fakultaet(x-1)
END IF
END FUNCTION
PRINT Fakultaet(6)
SLEEP
Als Rückgabewert wurde ein DOUBLE gewählt, weil damit wesentlich größere Fakultäten berechnet werden können als mit Ganzzahl-Typen (allerdings wird das Ergebnis ab 19! gerundet). Rekursive Funktionen haben den Nachteil, dass der benötigte Speicherplatz von der Tiefe der Verschachtelung abhängig ist. Im obigen Beispiel liegen die Ergebnisse aber schon lange außerhalb des Speicherbereichs eines DOUBLEs, bevor der Programmspeicherplatz knapp wird.
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|