i

Funktionsdefinition Schritt 5: Funktionskörper

Funktionsdefinition Schritt 5: Body der Funktion

Wir haben nun also bereits eine Funktionsdefinition geschrieben, die zwei natürliche Zahlen übergeben bekommt, und diese in zwei Parametern beispielsweise in laenge und breite speichert.
(Dein Code kann natürlich auch leicht anders aussehen)
;Berechnet den flaecheninhalt eines Quaders in mm
(: flaecheninhalt (natural natural -> natural))
(check-expect (flaecheninhalt 125 20) 2500)
(check-expect (flaecheninhalt 125 0) 0)
(define flaecheninhalt
    (lambda (laenge breite)
        ...)) 
Was uns noch fehlt, sind die tatsächlichen Rückgabedaten. Oben sind diese bisher mit dem Platzhalter "..." dargestellt.

Im Rahmen der Lambda-Ausdrücke haben wir bereits unbewusst die "..." durch einen Funktionskörper ausgetauscht. Nämlich indem wir innerhalb des Lambda-Ausdrucks einen weiteren Ausdruck geschrieben haben, welcher unsere Übergabebedaten verwendet hat. Zum Beispiel bei den folgenden zwei Lambda-Ausdrücken:

    ;ohne Funktionskörper
    (lambda (x) ...)
    (lambda (x y) ...)
    
    ;mit Funktionskörper
    (lambda (x) (+ x x)) 
    (lambda (x y) (* (+ x y) y))
Bzw. wie wir es grafisch dargestellt hatten: Testbild
Der Funktionskörper ist genau ein Ausdruck der innerhalb des Lambda-Ausdrucks geschrieben wird.

Aufgabe 1. Funktionskörper der Flächeninhaltsberechnung

1.1 In unserer Funktion möchten wir den flaecheninhalt berechnen und zurückgeben. Wir wissen: $\text{Flächeninhalt} = \text{Länge} * \text{Breite}$.

Schreibe im Definitionsfenster in dein Gerüst einen geeignete Ausdruck, der dir den Flächeninhalt berechnet.

Und damit sind wir fertig mit unsere Funktionsdefinition zur Flächeninhaltsberechnung!

1.2 Drücke nun oben rechts in DrRacket auf den grünen "Start-Knopf" über dem Definitionsfenster. Anschließend kannst du die Funktion verwenden.

1.3 Teste deine Funktion in der REPL mit den folgenden Daten aus:

> (flaecheninhalt 12 20)
> (flaecheninhalt 0 20)
> (flaecheninhalt -15 30)
> (flaecheninhalt 0 -30)

1.4 Verständnisfrage

Die zwei untenstehenden Funktionsaufrufe liefern dir die gleichen Rückgabedaten. Dennoch können wir die Funktionen nicht gleichwertig verwenden.
Worin unterscheiden sich die beiden Funktionen * und flaecheninhalt?
> (* 12 20)
> (flaecheninhalt 12 20)

Übungsaufgaben

Aufgabe 2. Entwerfen geeigneter Funktionskörper

Schreibe in dein Definitionsfenster den Funktionskörper in dein Gerüst folgender Funktionen: (Aufgabe 6 im vorangegangenen Kapitel).
Probiere die Funktionen anschließend durch Aufrufe aus der REPL auf.

  1. Die Funktion quadrieren
  2. Die Funktion korrekteAnzahlBuchstaben?
  3. Der Funktion die den Durchschnitt zweier ganzer Zahlen berechnen soll.
  4. Der Funktion die bestimmt, ob ein Text eine gerade Anzahl an Buchstaben hat.

Suche

v
100.137.1.2.3.5
https://inf-schule.de/entwuerfe/racket/einfuehrung/programmiersprache_racket/funktionsdefinitionen/funktionskoerper
https://inf-schule.de/100.137.1.2.3.5
https://inf-schule.de/@/page/Z3aDN3QMxbGyRQVi

Rückmeldung geben