i

Strukturierung

Möchte man in Racket einen neue Funktion definieren, so muss man dabei auf einige Sachen achten. In der Erkundung haben wir bereits die wichtigsten Eigenschaften einer solchen Definition herausgefunden.

Die Signaturdefinition und die Funktionsdefinition

Möchten wir in Racket eine neue Funktion erstellen so nutzen wir dafür genaugenommen zwei Ausdrücke, die Signaturdefinition, die die Signatur für die neue Funktion festlegt und die Funktionsdefinition, die die Logik der Funktion definiert:

(: kostenFarbmenge (natural -> real)) 

(define kostenFarbmenge
  (lambda (liter)
    (* liter 7.4)
 )) 

Mit der Signaturdefinition legen wir eine Signatur für eine neue Funktion fest. Die Funktion selbst wird mit der Funktionsdefinition definiert. Diese enthält alle notwendigen Informationen für die Verarbeitung der Übergabedaten.

Bestandteile der Funktionsdefinition

Die Funktionsdefinition legt zum einen den Namen der Funktion fest und bestimmt zum anderen die Bezeichner, mit denen die übergebenen Daten innerhalb der Funktion verwendet werden. Diese Bezeichner nennen wir Parameter. Außerdem enthält die Funktionsdefinition einen Funktionskörper, bestehend aus einem Ausdruck, der die Parameter verarbeitet und das Rückgabedatum der Funktion erzeugt.

(define kostenFarbmenge
  (lambda (liter)
    (* liter 7.4)
 ))

Ein Parameter ist ein Name, unter welchem die Übergabedaten in der Funktion genutzt werden können. Die Anzahl der Parameter muss daher exakt mit der Anzahl der Übergabedaten übereinstimmen.
Innerhalb des Funktionskörpers erfolgt die Verarbeitung der Übergabedaten zu einem Rückgabedatum. Der Funktionskörper besteht aus einem einzelnen Ausdruck, dessen erzeugtes Rückgabedatum auch das Rückgabedatum der gesamten Funktion ist.

Aufgabe 1: Signaturdefinitionen ergänzen

Ergänze eine geeignete Signaturdefinition für die folgenden Funktionen:

(a)


(define zahlVerdoppeln
  (lambda (zahl)
    (* 2 zahl)
 ))

(b)


(define buchstabenUngerade?
  (lambda (wort)
    (odd? (string-length wort))
 ))

(c)


(define volumenQuader
  (lambda (hoehe breite laenge)
    (* hoehe (* breite laenge))
 ))

Aufgabe 2: Funktionsdefinitionen vervollständigen

Neue Datei - funktionen_vervollständigen.rkt

Füge den jeweiligen Racket-Code in deine Datei ein und vervollständige diese. Überprüfe deine Lösung mit geeigneten Funktionsaufrufen in der REPL.

(a) Die Funktion soll den Durchschnitt zweier ganzer Zahlen berechnen:


(: durchschnitt (integer integer -> real))

(define durchschnitt
  (lambda (...)
    (...)
 ))

(b) Die Funktion soll prüfen, ob eine Zahl oder die An zahl der Zeichen eines Strings größer ist, und den größeren Wert zurückgeben.


(: wasIstGroesser (natural string -> natural))

(define wasIstGroesser
  (lambda (...)
    (...)
 ))

Suche

v
100.137.2.3.1.2 Strukturierung
Kopieren durch Anklicken

Rückmeldung geben