dbLounge
Funktion
Eine Funktion kann als ein im Programmcode definierter Befehl betrachtet werden. Ihr können beliebig viele Werte übergeben werden und sie kann bei Bedarf einen Wert zurückgeben. Zweck von Funktionen ist es, häufig verwendeten Code (wie z.B. häufig durchgeführte, immer gleiche Berechnungen) aus dem Hauptprogramm auszulagern und wiederverwendbar zu machen. Dies kann zwar auch durch Subroutinen geschehen, jedoch halten Funktionen den Code wesentlich übersichtlicher.

Jede Funktion benötigt einen eindeutigen Namen und muss nach dem end des Hauptprogramms deklariert werden.


Beispiel für eine Funktionsdeklaration:


[code]

rem ...Hauptprogramm...



rem Aufruf der Funktion

a#=12.5

c#=Max(a#,34.8)

END



FUNCTION Max(Argument1 as float, Argument2 as float)

Rueckgabe as float

IF Argument1>Argument2 THEN Rueckgabe=Argument1 ELSE Rueckgabe=Argument2

ENDFUNCTION Rueckgabe

[/code]



Argumente:

Einer Funktion können beliebig viele Variablen als Argumente übergeben werden, die in ihr verarbeitet werden sollen. Im Beispielcode oben werden der Funktion zweit Float-Werte übergeben, von denen die jeweils größere gefunden werden soll. Jedes Argument bekommt einen eindeutigen Namen; eine Angabe über den Variablentyp mit AS ist möglich, aber nicht zwingend erforderlich.
Hinweis: Die vergebenen Namen repräsentieren die übergebenen Werte nur innerhalb der Funktion, sie sind - wie alle übrigen in der Funktion erstellten Variablen auch - nur lokal gültig. Wenn auf eine Variable aus dem Hauptprogramm zugegriffen werden soll, so muss diese als
global deklariert sein.



Rückgabewert:

Optional kann aus der Funktion eine Variable/Konstante an das aufrufende Programm zurückgegeben werden. Im Beipsielcode wird die Variable Rueckgabe an das Hauptprogamm übergeben und dort in c# gespeichert. Die zu übergebende Variable wird am Ende der Funktionsdeklaration nach dem ENDFUNCTION aufgeführt.

Alternativ kann eine Funktion schon vorzeitig mit dem Befehl EXITFUNCTION verlassen werden (wenn z.B. die Funktion schon das Ergebnis berechnet hat, bevor das Funktionsende erreicht wurde). Auf diesen Befehl kann ebenfalls ein Rückgabewert folgen.



Funktionsaufruf:

Eine Funktion kann aus dem Hauptprogramm, aus anderen Funktionen und sogar aus sich selbst aufgerufen werden (siehe Rekursion).

Der Aufruf erfolgt wie bei jedem festen Darkbasic-Befehl auch. Beispiele für mögliche Funktionsaufrufe:

DrawButton(10,10,"Klick Mich")

summe#=add(12.0,1.5,-300.0)