Funktionen

Jeder Task kann in Subtasks geteilt werden, jeder von denen enwede als Kode dargestellt werden kann oder in noch kleinere Subtasks  geteilt werden kann. Dieses Verfahren heisst gestufte Konkretisierung. Funktionen dienen zur Aufzeichnung des Programmkodes diser zu geloesten Aufgaben. Kode, der beschreibt das, was die Funktion macht, heisst Funktionsdefinition:  

Funktionstitel
  {
   Anweisungen
  }

Alles, was vor der ersten geschweiften Klammer steht, ist der Titel der Funktionsdefinition, und das, was innerhalb der geschweiften Klammern steht, ist Koerper der Funkionsdefinition. Funktionstitel besteht aus der Typbeschreibung des Rückgabewertes,  dem Namen (Identifikator) und den formellen Parametern .  Zahl der Parameter, gegeben der Funktion, ist begrenzt und kann nicht mehr als  64 sein.

Funktion kann aus anderen Progarmmteilen so oft aufgerufen, wie es notwendig ist. Tatsaechlich bilden de Rückgabetyp, Funktionsidentifikator und Parametertypen Funktionprototyp.

Funktionsprototyp ist die Erklaerung der Funktion, nicht aber Funktionsdefinition. Wegen der expliziten Erklaerung des Rückgabetyps und der Liste von Argumenttypen, sind beim Zugriff zur Funktion strikte Typenpruefung und implizite Typenumwandlungen moeglich. Besonders oft werden die Funktionserklärungen in Klassen für die Verbesserung des Kodelesbarkeit vewendet.

Funktionsdefinition muss ihrer Erklaerung voellig entsprechen. Jede erklärte Funktion muss definiert werden.

Beispiel:

double                       // Typ des Rückgabewertes
linfunc (double a, double b) // Funktionsname und Parameterliste 
  {
                             // Zusammengesetzte Anweisung
   return (a + b);           // Rückgabewert
  }

 

Anweisung return kann den Ausdruckswert, der in derselben Anweisung steht, zurückgeben. Ausdruckswert wird in den Typ des Funktionsergebnisses umgewandelt. Man kann einfache Typen, einfache Strukturen, Objektanzeiger rückgeben. Durch den Operator return  können keine Felder, Klassenobjekte, Variablen der komplizierten Strukturen zurückgegeben werden.

Funktion, die den Wert nicht rückgibt, muss al Funktion mit dem Typ void beschrieben werden.

Beispiel:

void errmesg(string s)
  {
   Print("error: "+s);
  }

 

Parameter, gegeben der Funktion, können vorgegebene Werte haben, die von Konstanten des entsprechenden Typs vorgegeben werden.

Beispiel:

int somefunc(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="passed string")
  {
   Print("Pflichtparameter a = ",a);
   Print("Folgende Parameter übertragen werden: d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

Wenn einem Parameter Default-Wert vorgegeben wird, muessen alle folgenden Parameter auch Default-Werte haben.

Beispiel der nicht korrekten Erklaerung :

int somefunc(double a,
             double d=0.0001,    // Default-Wert ist erklärt 0.0001
             int n,              // Default-Wert nicht angegeben !
             bool b,             // Default-Wert nicht angegeben !
             string s="passed string")
  {                                          
  }          

Sehen Sie auch

Überladen,Virtuelle Funktionen, Polymorphismus