i

Eigene Funktionen erstellen

Mehrere Räume streichen

Bisher haben wir die zu streichende Fläche von einem Raum - Zimmer 1 - über einen einzelnen mathematischen Prompt berechnet. Möchten wir dies für beliebige Zimmer machen, haben wir entweder die Option für jedes Zimmer einen einzelnen mathematischen Prompt zu schreiben, oder wir definieren uns eine Funktion die bei Übergabe der Breite, Länge und Höhe des Zimmers, die zu streichende Fläche zurückgibt.

WG-Grundriss[1]

Im vorherigen Kapitel hast du bereits gesehen wie eine Funktion in Racket grundlegend definiert ist. Wenn wir eine eigene Funktion erstellen möchten, nutzen wir noch weitere Möglichkeiten von Racket, die uns die Erstellung vereinfachen.

Aufgabe 1: Welche Aufgabe erfüllen die Funktionen?

a) Welche Funktionen erfüllen die folgenden Funktionen? Erkläre deine Vermutung.

(: buchstabeOeftersAls? (string string natural -> boolean))

(: verbinde (string string boolean -> string))

(: ggt (integer integer -> integer))

(: istKuerzerUndBeginntMitGleichenDreiBuchstaben? (string string -> boolean))

(: laengeErsterQuadratLaengeZweiter? (string string -> boolean))

b) Wie du siehst ist es anhand der Signaturdefinition nicht immer klar erkennbar welchen Zweck gewissen Funktionen erfüllen. Überprüfe deine Vermutungen aus (a), indem du den untenstehenden Code mitsamt geeigneter Kurzbeschreibungen betrachtest.

Hier Drücken um Code anzuzeigen (b)

    ;Prüft, ob ein bestimmter Buchstabe im gegebenen Wort öfter als eine angegebene Anzahl vorkommt.
    (: buchstabeOeftersAls? (string string natural -> boolean))

    ;Verbindet zwei Wörter mit Bindestrich wenn Übergabe #t, ansonsten direkt aneinander.
    (: verbinde (string string boolean -> string))

    ;Bestimmt den größten gemeinsamen Teiler zweier ganzer Zahlen
    (: ggt (integer integer -> integer))

    ;Gibt #t zurück, wenn das erste Wort kürzer ist als das zweite und beide mit denselben drei Zeichen beginnen.
    (: istKuerzerUndBeginntMitGleichenDreiBuchstaben? (string string -> boolean))

    ;Gibt #t zurück, wenn die Länge des ersten Strings genau das Quadrat der Länge des zweiten Strings ist.
    (: laengeErsterQuadratLaengeZweiter? (string string -> boolean))
    

Aufgabe 2: Eigene Funktion

Bestehende Datei - streichen_WG.rkt

Wir wollen eine Funktion erstellen, die zu streichende Fläche eines beliebigen Zimmers berechnet.

(a) Schreibe in deine Racket-Datei eine geeignete Kurzbeschreibung und Signaturdefinition. Nenne die Funktion zuStreichendeFlaeche.

Aufgabe 3: check-expect

Leere Datei - muss nicht gespeichert werden

Wenn wir Funktionen erstellen oder diese verändern, ist es notwendig zu überprüfen ob unsere Funktion das Gewünschte leistet. Bisher haben wir hierzu Ausdrücke in die REPL geschrieben und die Rückgabe mit unseren Erwartungen abgeglichen. Racket bietet hierzu aber noch eine andere Möglichkeit!

(a) Füge die folgenden Zeilen in dein Definitionsfenster ein und starte das Programm. Trage zusammen welche Informationen dir DrRacket beim Start des Programmes liefert?

(check-expect (+ 12 12) 24)
(check-expect (* 13 2) 26)
(check-expect (- 12 2) 0)
(check-expect (string-length "Informatik") 10)
(check-expect (string=? "Hallo" "Hallo!") #t)

(b) Erkläre den Aufbau eines korrekten check-expect-Ausdrucks.

(b) Verändere den Code so, dass keiner der Tests mehr fehlschlägt.

(c) Schreibe je einen weiteren Tests für die Funktionen:
odd?,
string-append und
round.

Aufgabe 4: Tests für unsere Funktion

Bestehende Datei - streichen_WG.rkt

(a) Schreibe für die Funktion zuStreichendeFlaeche direkt unter deine Signaturdefinition zwei geeignete Tests.

Aufgabe 5: Funktionsgerüst und Funktionskörper

Bestehende Datei - streichen_WG.rkt

Nun fehlt uns zur Erstellung unserer Funktion zuStreichendeFlaeche nur noch die geeignete Funktionsdefinition.

(a) Erstelle eine geeignete Funktionsdefintion und schreibe diese unter deine Tests.
Wenn du dir nicht mehr sicher bist, wie die Funktionsdefinition aufgebaut ist, schau einfach bei der Fachkonzept-Seite nach.

(b) Überprüfe deine Funktion anhand deiner beiden geschriebenen Tests.

Quellen

Suche

v
100.137.2.4.1 Eigene Funktionen erstellen
Kopieren durch Anklicken

Rückmeldung geben