Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - FUNCTION

Referenz-Navigation

 

Syntax:

[{PRIVATE | PUBLIC }] FUNCTION Funktionsname [Aufrufkonvention] [ALIAS "AliasName"] _
    [OVERLOAD] ([Parameterliste]) [BYREF] AS Rückgabetyp [STATIC] [EXPORT]

     ' Anweisungen
     { RETURN | FUNCTION = | Funktionsname = } [BYVAL] wert
END FUNCTION

Typ: Prozedur
Kategorie: Programmablauf

Anmerkung zur Syntax: Unterstriche (_) am Zeilenende werden von FreeBASIC so interpretiert, als wäre die Zeile nicht unterbrochen; dies dient nur der besseren Übersichtlichkeit und hat letzt­end­lich keine Auswirkungen auf die Programmausführung.

Eine FUNCTION ist eine Prozedur, die einen Wert an das Hauptprogramm zurück gibt. FUNCTIONs werden dazu verwendet, häufig auftretende Berechnungen zusammenzufassen. Siehe auch BefehlsreferenzeintragSUB zum Thema BefehlsreferenzeintragProzeduren.

Um eine Funktion aufzurufen, bevor sie im Quellcode definiert wurde, muss sie zuvor deklariert werden:

DECLARE FUNCTION Funktionsname [Aufrufkonvention] [OVERLOAD] [[LIB "DLLName"] _
      ALIAS "AliasName"] [ ( Parameterliste ) ]  AS Rückgabetyp

Siehe dazu den Referenzeintrag BefehlsreferenzeintragDECLARE.

Parameterübergabe
Der Wert der Funktion kann von übergebenen Parametern abhängig sein. Die Parameterliste besitzt die Form

[ {BYVAL | BYREF } ] [Parameter1] AS [CONST] Typ [= Wert]   [, _
   [ {BYVAL | BYREF } ] [Parameter2] AS [CONST] Typ [= Wert] ] [, ...]

Der Datentyp muss bei den Parametern immer angegeben werden.
Siehe auch BefehlsreferenzeintragParameterübergabe.

Rückgabewert
Der Rückgabewert der Funktion kann auf dreierlei Weise gesetzt werden:

Hinweis:
Die Angabe 'BefehlsreferenzeintragBYVAL' spielt nur bei Funktionen eine Rolle, die by reference mit BefehlsreferenzeintragBYREF arbeiten.

Der Rückgabewert einer Funktion kann beim Aufruf auch ignoriert werden. Dies kann dann sinnvoll sein, wenn die Funktion z.B. darüber informiert, ob ihr Code erfolgreich ausgeführt wurde. Um den Rückgabewert einer Funktion zu ignorieren, setzen Sie diese einfach wie eine SUB ein.

Beispiel 1:

DECLARE FUNCTION twice (x AS INTEGER) AS INTEGER

FUNCTION twice (x AS INTEGER) AS INTEGER
   RETURN x * 2
   PRINT "Diese Zeile wird nie ausgegeben"
END FUNCTION

PRINT twice (10) ' gibt 20 aus, das Doppelte von 10
SLEEP

Beispiel 2: Rückgabe eines ganzen UDTs:

TYPE udt
   v1 AS INTEGER
   v2 AS INTEGER
END TYPE

DECLARE FUNCTION bla(foo AS INTEGER, bar AS INTEGER) AS udt

DIM variable AS udt
variable = bla(1, 3)

PRINT "Variable: v1 ="; variable.v1; ", v2 ="; variable.v2
'Ausgabe: "Variable: v1 = 10, v2 = 30"
SLEEP

FUNCTION bla(foo AS INTEGER, bar AS INTEGER) AS udt
   DIM variable AS udt
   variable.v1 = foo*10
   variable.v2 = bar*10
   bla = variable
END FUNCTION

Beispiel 3: FUNCTION kann auch Teil eines UDTs sein.

Type MyUDT
   x As Integer
   y As Integer
   z As Integer
   Declare Function SumOfAll As Integer
End Type

Function MyUDT.SumOfAll As Integer
   Return This.x + This.y + This.z
End Function

Dim variable As MyUDT
With variable
   .x = 5
   .y = 10
   .z = -3
End With

Print variable.SumOfAll
Sleep

Ausgabe:

 12

Unterschiede zu QB:

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:

Siehe auch:
BefehlsreferenzeintragSUB, BefehlsreferenzeintragPROPERTY, BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragOVERLOAD, BefehlsreferenzeintragEXIT, BefehlsreferenzeintragEND, BefehlsreferenzeintragBYVAL, BefehlsreferenzeintragBYREF, BefehlsreferenzeintragBYREF (Rückgaben), BefehlsreferenzeintragBYVAL (Rückgaben), BefehlsreferenzeintragSHARED, BefehlsreferenzeintragPRIVATE (Klausel), BefehlsreferenzeintragPUBLIC (Klausel), BefehlsreferenzeintragVA_ARG, BefehlsreferenzeintragProzeduren, BefehlsreferenzeintragFUNCTIONs, BefehlsreferenzeintragParameterübergabe


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 29.07.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 04.07.2013 von Redakteurnemored gespeichert.
  Versionen Versionen