Hausaufgabe 4 – Entwurfsrezept zur Funktionsdefinition
Nach der Bearbeitung dieses Arbeitsblattes haben Sie gelernt
- was die Schritte des Entwurfsrezepts zur Funktionsdefinition sind
- beim Programmieren den Schritten des Entwurfsrezeptes zu folgen
Bearbeiten Sie dieses Hausaufgabenblatt alleine. Stellen Sie dabei sicher, dass Sie die gesetzten Lernziele erreichen.
Verwenden Sie wieder die Sprache BSL (How to Design Programs ─ Anfänger).
Viel Erfolg!
Schritte 1 bis 2 des Entwurfsrezeptes
- 10 pt
- Datendefinitionen angegeben (5 pt) und passen zur Aufgabenstellung (5 pt)
- 10 pt
- Signatur angegeben (5pt), benutzt Datendefinitionen (3 pt) und passt zur Aufgabenstellung (2 pt)
- 10 pt
- Aufgabenbeschreibung angegeben (5 pt) und passt zur Aufgabenstellung (5 pt)
- 10 pt
- Funktionskopf angegeben (5pt), passt zur Signatur (3pt) und verwendet sinnvolle Namen (2pt)
Ein Raumschiff soll sanft auf dem Mond landen. Während der Landung sinkt die Masse des Raumschiffes, weil das Triebwerk Treibstoff benutzt. Dazu soll eine Funktion aus dem Abstand zur Mondoberfläche und der verbleibenden Masse des Raumschiffes berechnen, wieviel Prozent des möglichen Schubs das Triebwerk für eine sanfte Landung leisten muß.
Folgen Sie den Schritten 1 und 2 des Entwurfsrezeptes zur Funktionsdefinition für diese Funktion.
Tipp: In dieser Aufgabe geht es nur um die Schritte 1 und 2, führen Sie also die anderen Schritte nicht durch.
Schritt 3 des Entwurfsrezeptes
- 10 pt
- Tests angegeben (5 pt) mit guter Testabdeckung (3 pt) und erfolgreich (2 pt)
Die Messwerte eines Laborinstrumentes werden automatisch ausgewertet. Dazu soll eine Funktion den Durchschnitt zweier Werte berechnen.
Eine Kollegin hat bereits folgende Funktion programmiert, dabei aber die Schritte 3 und 6 des Entwurfsrezeptes übersprungen.
; Number Number -> Number
; computes the average of two numbers
(define (average number-1 number-2)
(/ (+ number-1 number-2) 2))
Folgen Sie den Schritten 3 und 6 des Entwurfsrezeptes zur Funktionsdefinition für diese Funktion.
Tipp: In dieser Aufgabe geht es nur um die Schritte 3 und 6, führen Sie also die anderen Schritte nicht durch.
Schritt 4 des Entwurfsrezeptes
- 5 pt
- Template angegeben (2pt) und sinnvoll (3pt)
Eine Bank handelt automatisch mit Aktien. Eine Funktion soll aufgrund des Durchschnittspreises der letzten 2 Minuten sowie des aktuellen Preises entscheiden, ob eine Aktie gekauft oder verkauft werden sollte.
Ein Kollege hat bereits die Schritte 1 und 2 des Entwurfsrezeptes durchgeführt und folgendes programmiert:
; Price is a Number
; interp. stock price, in US dollar.
; Decision is a Boolean
; interp. #true if we should buy, #false if we should sell.
; Price Price -> Decision
; decide to buy or sell based on current price and average price for 2 minutes
(define (should-we-buy? average current)
#true)
Folgen Sie Schritt 4 des Entwurfsrezeptes zur Funktionsdefinition für diese Funktion.
Tipp: In dieser Aufgabe geht es nur um den Schritt 4, führen Sie also die anderen Schritte nicht durch.
Alle Schritte des Entwurfsrezeptes
- 5 pt
- Datendefinitionen angegeben (3 pt) und sinnvoll (2 pt)
- 5 pt
- Signatur angegeben (3 pt) und sinnvoll (2 pt)
- 5 pt
- Aufgabenbeschreibung angegeben (3 pt) und sinnvoll (2 pt)
- 5 pt
- Funktionskopf angegeben (3 pt) und sinnvoll (2 pt)
- 15 pt
- Tests angegeben (5 pt) mit guter Testabdeckung (5 pt) und erfolgreich (5 pt)
- 10 pt
- Implementierung angegeben (5 pt) und sinnvoll (3 pt) und korrekt (2 pt)
Einige Studierende möchten ihren täglichen Kalorienbedarf möglichst preiswert decken und dafür zwischen zwei Nahrungsmitteln wählen. Eine Funktion soll aus dem Tagesbedarf einer Person und dem Energiegehalt (Kalorien pro Gramm) und dem Preis (Euro pro Gramm) beider Nahrungsmittel berechnen, wieviel Geld die Studierenden durchschnittlich für die Deckung ihres Tagesbedarfs mit dem preiswerterem Nahrungsmittel benötigen.
Folgen Sie den Schritten des Entwurfsrezeptes zur Funktionsdefinition für diese Funktion.
Damit wir die Funktion automatisch überprüfen können, nennen Sie die Funktion bitte minimal-daily-food-cost
und programmieren Sie die Funktion so, dass wir sie mit folgenden Argumenten in dieser Reihenfolge aufrufen können: täglicher Kalorienbedarf, Preis des ersten Nahrungsmittels, Energiegehalt des ersten Nahrungsmittels, Preis des zweiten Nahrungsmittels, Energiegehalt des zweiten Nahrungsmittels.