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 - FUNCTIONs

Referenz-Navigation

 

FUNCTIONs sind ebenso wie BefehlsreferenzeintragSUBs 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 BefehlsreferenzeintragFUNCTION 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:

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 BefehlsreferenzeintragDOUBLE 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
  • Der Referenzeintrag wurde am 06.08.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 12.01.2013 von Redakteurnemored gespeichert.
  Versionen Versionen