Zusammenhang zwischen Aufzählungen und Fallunterscheidungen
Zwischen der Verwendung von Aufzählungen und der Nutzung von Fallunterscheidungen lassen sich deutliche Zusammenhänge aufzeigen. Wenn wir uns diesen bewusst sind, vereinfacht es uns den Entwurf von vielen Funktionen.
Aufgabe 1. Fallunterscheidungen anhand der Signatur
Wenn wir Aufzählungen in der Signatur haben, hilft uns das nicht nur darin, unsinnige Daten abzufangen, sondern gibt uns schematische Informationen darüber, wie eine Fallunterscheidung aufgebaut sein sollte.A1. Betrachte die folgenden Funktionssignaturen und bestimme für jede Funktion, wie viele Fälle in der Fallunterscheidung notwendig sind.
;a) Gibt die Durchschnittstemperatur eines Monats zurück
(: durchschnittstemperatur2024 (monat -> real))
;b) Ordnet jedem Wochentag eine Nummer zu
(: nummerDesWochentages (wochentag -> (integer-from-to 1 7)))
;c) Bestimmt, ob eine Klausur anhand der erreichten MSS-Punkte bestanden wurde
(: klausurBestanden? (mss-punkte -> boolean))
;d) Beschreibt wie sich ein Auto im Straßenverkehr vor einer Ampel zu verhalten hat
(: verhaltenAutoBeiAmpel (ampelfarbe -> string))
;e) Liefert die Komplementäre Nukleinbase für DNA-Nukleinbasen (z.B. Thymin für Adenin)
(: komplementaereNukleinbase-DNA (base-DNA -> base-DNA))
;f) Wasser-Aggregatszustand bei einer übergeben Temperatur unter Normalbedingungen
(: aggregatszustandWasserBeiTemp (integer -> aggregatszustand))
Die genutzten (Übergabe/-Rückgabe-)Datentypen geben häufig unsere Nutzung von Fallunterscheidungen vor.
- Bei nicht-nummerischen Aufzählungen als Übergabe, muss meist für alle Aufzählungen ein einzelner Fall angelegt werden.
- Bei numerischen Aufzählungen als Übergabe, benötigen wir häufig diskrete Zahlenbereiche, deren Anzahl durch den Rückgabedatentyp bestimmt wird.