Kurs:Algorithmen und Datenstrukturen/Vorlesung/Funktionsdefinition und Signatur

Aus testwiki
Version vom 6. April 2022, 23:00 Uhr von 62.154.241.132 (Diskussion) (Beispiel einer Funktionsdefinition)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Vorlage:Navigationsleiste/Algorithmen und Datenstrukturen

Funktionsdefinition und Signatur

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

Funktionsdefinition

Eine Funktion f ist eine Relation zwischen einer  Eingabemenge X und einer Ausgabemenge Y(fX*Y) 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 f:XY. Ist f:XY eine Funktion so heißt X Eingabemenge  und Y Ausgabemenge. In der funktionalen Programmierung sind Ein‐ und  Ausgabemengen üblicherweise Terme eines  bestimmten Typs.

Termdefinition

Sei T ein Typ, VT eine Menge von Variablen vom Typ T  und CT eine Menge von Konstanten vom Typ T. Dann ist jedes XVT ist ein Term vom Typ T, jedes aCT ein Term vom Typ T und ist f:TkT eine Funktion und t1,...,tk sind Terme vom Typ T, so ist f(t1,...,tk) ein Term vom Typ T.

Beispiel Terme natürlicher Zahlen

Sei int der Typ der natürlichen Zahlen, Vint eine Menge von Variablen vom Typ Tint und Cint==1,2,3.... Mögliche Funktionen auf natürliche Zahlen sind

  • +:int x intint
  • *:int x intint

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

Beispiel Bool´sche Terme

Sei bool der Typ der Bool´sche Terme, Vbool eine Menge von Variablen vom Typ Tbool und Cbool=true,false. Mögliche Funktionen auf Bool´sche Termes sind

  • :bool x boolbool
  • ¬:boolbool

true und ¬YX sind dann Bool´sche Terme.


Sind v1,...,vn Unbestimmte vom Typ T1,...,Tn (bool oder int) und ist t(v1,...,vn) ein Term, so heißt f(v1,...,vn):=t(v1,...,vn) eine Funktionsdefinition vom Typ T.

  • T ist dabei der Typ des Terms (Vorlage:Mathl).
  • f: ist der Funktionsname
  • v1,...,vn ist ein formaler Parameter
  • t(v1,...,vn): ist ein Funktionsausdruck

Beispiel

  • f(p,q,x,y):=if(pq)then2x+1else3y1
  • g(x):=ifeven(x)thenx/2else3x1
  • h(p,q):=ifpthenqelsefalse

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

Signatur einer Funktion

Eine Funktion f hat die folgende Funktionsdefinition:

f(v1,...,vn):=t(v1,...,vn)

mit v1,...,vn sind vom Typ T1,...,Tn

t(v1,...,vn) ist vom Typ T

Die Signatur von f ist: f:T1*...*TnT mit der Struktur

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

Beispiel einer Funktionsdefinition

  • 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

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.


R-0 Discussion R-3