i

Strukturierung: Aufzählungen

Racket bietet verschiedene Möglichkeiten, eigene Datentypen zu definieren. Eine dieser Möglichkeiten ist die Aufzählung (engl. Enumeration)

Die Aufzählung

Eine Aufzählung ist eine Art von Datentyp in Racket, die aus einer endlichen Menge möglicher Daten besteht.
Wir verwenden eine Aufzählung daher immer dann, wenn wir den gewünschten Datentyp mit den Worten: "ist eine(s) der folgenden..." beschreiben können. So zum Beispiel:
;Die möglichen Farben des pH-Indikators Bromthymolblau ist eine der folgenden:
; - "gelb"
; - "grün"
; - "blau"
;Ein Wert eines französischen Skat-Spielkartenblattes ist eines der folgenden:
; - "Ass" - "König" - "Dame" - "Bube"
; - 10 - 9 - 8 - 7

Aufgabe 1: Eignung von Aufzählungen

Bestehende Datei - aufzaehlungen.rkt

Überlege dir, für welche der folgenden Daten sich eine Aufzählung eignet. Schreibe zu jedem Datenbereich, den du als geeignet betrachtest, eine Beschreibung des Datentyps mit "ist eine(s) der folgenden...".

(a) MSS-Notenpunkte

(b) Temperatur in Kelvin

(c) Temperatur in Celsius

(d) Blutgruppen

(e) zulässige IP-Adressen

(f) Aggregatszustände


Implementierung einer Aufzählung in Racket

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
    • Legt fest, dass die folgende Aufzählung als Datentyp innerhalb von Signaturen verwendbar 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ässigen Werte, unabhängig vom Datentyp (so können beispielsweise Daten der Datentypen string, boolean und real gemischt werden).
Im Racket-Code sieht dies beispielsweise wie folgt aus:
;Die möglichen Farben des pH-Indikators Bromthymolblau ist eine der folgenden:
; - "gelb"
; - "grün"
; - "blau"
(define btb-Farbe
  (signature
   (enum "gelb" "grün" "blau")))
;Ein Wert eines französischen Skat-Spielkartenblattes ist eines der folgenden:
; - "Ass" - "König" - "Dame" - "Bube"
; - 10 - 9 - 8 - 7
(define spielkartenwert
  (signature
   (enum "Ass" "Koenig" "Dame" "Bube" 10 9 8 7)))

Aufgabe 2: Implementierung von Aufzählungen

Bestehende Datei - aufzaehlungen.rkt

Erstelle eine Aufzählung in Racket für die folgenden Datenbereiche:

(a) MSS-Notenpunkte

(b) Blutgruppen

(c) Aggregatszustände


Suche

v
100.137.2.2.1.2 Strukturierung: Aufzählungen
Kopieren durch Anklicken

Rückmeldung geben