i

Implementierung einer Funktion

Eine Funktion definieren und aufrufen

Ein möglicher Ausdruck zur Berechnung der Anzahl an Wandtattoos für eine konkrete Fläche lautet:

> floor (4.2 / 0.65) * floor (2.5 / 0.65)
18 : Int

Daraus lässt sich leicht die Funktion anzahlWandtattos wird mit folgender Funktionsdefinition ableiten.

anzahlWandtattoos zimmerbreite zimmerhoehe kantenlaenge =
    floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)

Hier werden die Funktionsvariablen zimmerbreite, zimmerhoehe und kantenlaenge - man nennt sie formale Parameter - benutzt, um übergebene Daten zu verwalten. Die Verarbeitung der Daten wird mit Hilfe eines Ausdrucks beschrieben: floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)

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.

Die Funktion wird mit einem Funktionsaufruf aktiviert. Hierzu werden die aktuellen Parameter an die Funktion übergeben.

> anzahlWandtattoos 4.2 2.5 0.65
18 : Int

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.

> anzahlWandtattoos zimmerbreite zimmerhoehe kantenlaenge =
|       floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)
|   
<function> : Float -> Float -> Float -> Int
> anzahlWandtattoos 4.2 2.5 0.65
18 : Int

Aufgabe 1

(a) Probiere das selbst aus. Nutze weitere Funktionsaufrufe, um die Zahl der benötigten Wandtattoos zu bestimmen.

(b) Elm hat erkannt, dass es sich um eine korrekte Funktionsdefinition handelt und die Ausgabe <function> : Float -> Float -> Float -> Int erzeugt. Elm hat also die Signatur der Funktion automatisch erkannt. Erkläre wie Elm hier die Signatur ableiten konnte.

Suche

v
8.2.2.2.1.1.2
www.inf-schule.de/deklarativ/fp_elm/elm_programme/funktionen/wandtattoo/lernstrecke/implementierung
www.inf-schule.de/8.2.2.2.1.1.2
www.inf-schule.de/@/page/E26OlaFpqIygmAct

Rückmeldung geben