i

Strukturierung

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

Die Aufzählung

Eine Aufzählung ist eine Art von Datentyp in Racket, die aus einer endlichen Menge von möglichen 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: Name

Überlege dir, für welche der folgenden Daten sich eine Aufzählung eignet. Schreibe zu jeder Datenart, wenn möglich, in Racket eine Datentyp-Beschreibung mit "ist eine(s) 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 innerhalb von Signaturen als Datentyp 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ässiger 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: Name

Erstelle eine Aufzählung in Racket für:

(a) MSS-Notenpunkte

(b) Blutgruppen

(c) Aggregatszustände

Suche

v
100.137.2.2.1.2 Strukturierung
Kopieren durch Anklicken

Rückmeldung geben