Kurs:Algorithmen und Datenstrukturen/Vorlesung/Funktionsdefinition und Signatur




Funktionsdefinition und Signatur Bearbeiten

In diesem Kapitel wird die Funktionsdefinition und Signatur von funktionalen Algorithmen behandelt.

Funktionsdefinition Bearbeiten

Eine Funktion f ist eine Relation zwischen einer  Eingabemenge X und einer Ausgabemenge   mit der Eigenschaft: 

Für alle x ∈ X, y,y‘ ∈ Y mit (x,y),(x,y‘) ∈ f gilt y=y‘ 

Wir schreiben dann üblicherweise f(x)=y anstatt(x,y)∈ f und deklarieren eine Funktion durch  . Ist   eine Funktion so heißt X Eingabemenge  und Y Ausgabemenge. In der funktionalen Programmierung sind Ein‐ und  Ausgabemengen üblicherweise Terme eines  bestimmten Typs.

Termdefinition Bearbeiten

Sei T ein Typ,   eine Menge von Variablen vom Typ T  und   eine Menge von Konstanten vom Typ T. Dann ist jedes   ist ein Term vom Typ T, jedes   ein Term vom Typ T und ist   eine Funktion und   sind Terme vom Typ T, so ist   ein Term vom Typ T.

Beispiel Terme natürlicher Zahlen Bearbeiten

Sei int der Typ der natürlichen Zahlen,   eine Menge von Variablen vom Typ   und  . Mögliche Funktionen auf natürliche Zahlen sind

  •   x  
  •   x  

3+4, (8+9)*10, X*4+1 sind dann Terme natürlicher Zahlen. 

Beispiel Bool´sche Terme Bearbeiten

Sei bool der Typ der Bool´sche Terme,   eine Menge von Variablen vom Typ   und  . Mögliche Funktionen auf Bool´sche Termes sind

  •   x  
  •  

true   und   sind dann Bool´sche Terme.


Sind   Unbestimmte vom Typ   (bool oder int) und ist   ein Term, so heißt   eine Funktionsdefinition vom Typ T.

  • T ist dabei der Typ des Terms ( ).
  • f: ist der Funktionsname
  •   ist ein formaler Parameter
  •  : ist ein Funktionsausdruck

Beispiel Bearbeiten

  •  
  •  
  •  

Jede Funktionsdefinition hat das Schema Funktionsname(formale Parameter):= Funktionsausdruck

Signatur einer Funktion Bearbeiten

Eine Funktion f hat die folgende Funktionsdefinition:

 

mit   sind vom Typ  

  ist vom Typ T

Die Signatur von f ist:   mit der Struktur

Name mit Stelligkeit: Parameter mit Typ * ... * Parameter mit Typ → Typ des Rückgabewertes

Beispiel einer Funktionsdefinition Bearbeiten

  • f(p,q,x,y)  :=  if  (p ∨ q)  then  2x + 1  else  3y ‐1  
  • g(x)  :=  if   even(x)  then   x / 2  else  3x ‐1 
  • h(p,q)  :=  if  p  then  q  else  false, mit h als Funktionsname, (p,q) als formalen Parameter und dem darauffolgenden Funktionsausdruck.  

Literatur Bearbeiten

Da die Vorlesungsinhalte auf dem Buch Algorithmen und Datenstrukturen: Eine Einführung mit Java von Gunter Saake und Kai-Uwe Sattler aufbauen, empfiehlt sich dieses Buch um das hier vorgestellte Wissen zu vertiefen. Die auf dieser Seite behandelten Inhalte sind in Kapitel 3.2.2 zu finden.