i

Aufzählungen in Racket

Aufzählungen - Modellierung

Eine Möglichkeit unsere eigenen Datentypen zu entwerfen, ist die Aufzählung (eng. Enumeration).

Eine Aufzählung verwenden wir immer dann, wenn wir einen neuen Datentyp definieren wollen und wir den Datentyp mit den Worten "ist eine(s) der folgenden..." beschreiben können.

Für unseren pH-Indikator können wir beispielsweise sagen:

;Die Farbe des pH-Indikators Bromthymolblau ist eine der folgenden:
; - "gelb"
; - "grün"
; - "blau"
Tipp: Es lohnt sich diese Überlegungen zur Datenmodellierung als Kommentare direkt in unseren Code zu schreiben, da wir so anschließend sehr einfach eine neue Datendefinition umsetzen können.

Aufgabe 1. Modellierung von Aufzählungen

A1.1 Öffne deine Datei mit den Funktionen bromthymolblau-pHZustand und prozent-zu-mss.

A1.2 Ergänze die Datei um geeignete Datenmodellierungen, analog zur Farbe des pH-Indikators, zur Repräsentation von:

  1. dem pH-Zustand
  2. MSS-Notenpunkte

Aufzählungen - Implementierung

Um eine in Racket verwendbare Aufzählung zu implementieren, benötigen wir drei Schlüsselwörter:
  1. define
    • Definiert den Namen unseres neuen Datentyps.
  2. signature
    • Gibt an, dass die folgende Aufzählung als Datentyp in der Signatur zu verwenden ist.
  3. enum
    • Steht für das Englische Enumeration und wird in vielen Programmiersprachen zur Definition von Aufzählungen verwendet.
    • Hinter enum folgt eine Aufzählung aller zulässiger Werte unabhängig vom Datentyp (so können beispielsweise Daten der Datentypen string, boolean und number gemischt werden).
Im Racket-Code sieht dies wie folgt aus:

;Die Farbe des Indikators ist eine der folgenden:
; - "gelb"
; - "grün"
; - "blau"
(define bromthymolblauFarbe
  (signature
   (enum "gelb" "grün" "blau")))
Wie du siehst müssen wir, wenn wir bereits eine geeignete Modellierung geschrieben haben, einfach nur noch unsere einzelnen Aufzählungen von ist eine(s) der folgenden hinter das Schlüsselwort enum einfügen und sind bereits fertig.

Aufgabe 2. Erstellen von Aufzählungen

A2.1 Füge die Aufzählung bromthymolblauFarbe deinem Programm hinzu.

A2.2 Ergänze deine Datenmodellierung, analog zur Farbe des pH-Indikators, für:

  1. den pH-Zustand
  2. MSS-Notenpunkte

Aufzählungen mit festen Zahlenwerten

Du wirst sicherlich festgestellt haben, das eine Aufzählung sehr schnell sehr groß werden kann, insbesondere wenn es um Zahlenwerte geht. Das Aufschreiben von 16 Zahlenwerten bei MSS-Punkten ist vielleicht noch gut machbar, aber möchten wir dies nun beispielsweise für alle ganzzahligen Prozentwerte von 0 bis 100 machen, wird dies schnell lästig.
Für feste Wertebereiche bietet Racket daher die Funktion integer-from-to an.

Die beiden folgenden Definition lassen sich äquivalent im Racket-Code verwenden:


(define mss-punkte
  (signature
   (enum 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))

(define mss-punkte
  (signature
   (integer-from-to 0 15)))

Aufgabe 3. Funktionen um geeignete Aufzählungen ergänzen

A3.1 Entwerfe eine geeignete Aufzählung für die ganzzahlige prozent-Angabe.

A3.2 Passe die Funktionen bromthymolblau-pHZustand und prozent-zu-mss mit den geeigneten Signaturen an und überprüfe die Funktionalität mithilfe deiner Tests.

Suche

v
100.137.3.2.1 Aufzählungen in Racket
Kopieren durch Anklicken

Rückmeldung geben