i

Implementierung einer Funktion

Die Verarbeitung mit einer Funktionsdefinition festlegen und mit einem Funktionsaufruf aktivieren

Hier noch einmal die Formel für das Volumen einer quadratischen Pyramide mit einer vorgegebenen Länge der Grundseite und einer vorgegebenen Höhe:

$\begin{array}{lclcl} \text{Volumen} & = & \displaystyle\frac{1}{3} \cdot \text{Grundfläche} \cdot \text{Höhe} = & \displaystyle\frac{1}{3} \cdot \text{Länge} \cdot \text{Länge} \cdot \text{Höhe} \end{array}$

Die Funktion volumenPyramide wird mit einer Funktionsdefinition festgelegt.

volumenPyramide laenge hoehe = 
    (1/3)*(laenge*laenge)*hoehe

Hier werden die Funktionsvariablen laenge und hoehe - man nennt sie Parameter - benutzt um übergebene Daten zu verwalten.

Die Verarbeitung der Daten wird mit Hilfe eines Ausdrucks beschrieben:

(1/3)*(laenge*laenge)*hoehe

Beachte, dass der Ausdruck entweder direkt hinter das Gleichheitszeichen geschrieben wird oder - wie oben zu sehen - eingerückt (in der Regel um 4 Einheiten) in der nächsten Zeile.

Eine solche Funktionsdefinition wird in der Regel in einer Datei abgespeichert, damit man sie zu einem späteren Zeitpunkt nochmal nutzen kann.

Die Funktion wird mit einem Funktionsaufruf aktiviert. Hierzu werden die Parameter mit den aktuellen Datenobjekten verknüpft.

Im vorliegenden Beispiel ist volumenPyramide 10 6 ein Funktionsaufruf, bei dem die Daten 10 (für die Funktionsvariable laenge) sowie 6 (für die Funktionsvariable hoehe) übergeben werden.

Die Funktionsdefinition kann man zusammen mit Funktionsaufrufen in der REPL testen. Man gibt die Definition bzw. den Aufruf in die REPL ein. Elm liefert jeweils eine Rückmeldung.

> volumenPyramide laenge hoehe =
|       (1/3)*(laenge*laenge)*hoehe
|
<function> : Float -> Float -> Float
> volumenPyramide 10 6
199.99999999999997 : Float
> volumenPyramide 230.3 145.6
2574115.3013333334 : Float

Beachte, dass Elm beim Funktionsaufruf volumenPyramide 10 6 nicht das erwartete Ergebnis 200, sondern die Zahl 199.99999999999997 liefert. Das liegt an Rundungen, die bei den Berechnungen vorgenommen werden (hier: 1/3).

Aufgabe 1

Probiere das selbst aus. Nutze weitere Funktionsaufrufe, um die Volumina der Pyramiden von Gizeh mit Elm zu bestimmen.

Das Verhalten der Funktion beschreiben

Elm liefert zu einer Funktionsdefinition eine Rückmeldung.

> volumenPyramide laenge hoehe =
|       (1/3)*(laenge*laenge)*hoehe
|
<function> : Float -> Float -> Float

Im vorliegenden Beispiel ist das die Typangabe <function> : Float -> Float -> Float.

Elm hat erkannt, dass es sich um eine korrekte Funktionsdefinition mit folgendem Verhalten handelt: Bei Übergabe eines Datenwerts vom Datentyp Float und eines weiteren Datenwerts vom Datentyp Float wird ein Datenwert vom Datentyp Float als Funktionswert zurückgegeben. Dass hier Zahlen vom Datentyp Float verarbeitet werden hat Elm anhand des Divisionsoperators in der Funktionsdefinition erschlossen.

Wir nutzen eine solche Typangabe (man nennt sie auch Signatur der Funktion) zusammen mit Beispielen von Funktionsaufrufen, um das Verhalten einer Funktion zu beschreiben.

Signatur:
volumenPyramide: Float -> Float -> Float
Beispiele:
volumenPyramide 10.0 6.0 -> 200.0
...

Aufgabe 2

Ergänze die Verhaltensbeschreibung um zwei weitere Beispiele.

Aufgabe 3

Meist erstellt man eine Verhaltensbeschreibung für eine Funktion, bevor man die Funktion mit einer Funktionsdefinition implementiert. Erläutere die Vorteile dieser Vorgehensweise.

Suche

v
110.2.2.1.1.2
inf-schule.de/fp_elm_alteversion/elm_programme/funktionen/pyramiden/lernstrecke/implementierung
inf-schule.de/110.2.2.1.1.2
inf-schule.de/@/page/WMoOn2zIZ7Y9XkBi

Rückmeldung geben