Fallunterscheidungen in Racket
Fallunterscheidungen
Möchte man in der Chemie den pH-Wert von Lösungen bestimmen, so kann dies mittels eines pH-Indikators erfolgen. Gibt man einen pH-Indikator in eine Lösung, so nimmt dieser in Abhängigkeit des pH-Werts unterschiedliche Farben an. Ein gängiger pH-Indikator ist das Bromthymolblau . Die untere Abbildung zeigt das Farbspektrum an, dass Bromthymolblau je nach pH-Wert annimmt.
Der Indikator gibt uns eine aussagekräftige Auskunft darüber, ob die untersuchte Lösung einen sauren (pH < 7), einen neutralen (pH = 7) oder einen alkalischen/basischen (pH > 7) pH-Zustand aufweist.Die Racket-Funktion bromthymolblau-pHZustand soll genau diese Information abbilden. Übergeben wir der Funktion die entsprechende Farbe, soll diese uns den pH-Zustand zurückliefern.
Aufgabe 1. Bestimmung pH-Zustand durch Bromthymolblau
Um diese Funktion umsetzten zu können, benötigen wir innerhalb der Funktion eine Fallunterscheidung.    ;Bestimmt den pH-Zustand anhand der Färbung des pH-Indikators Bromthymolblau
    (: bromthymolblau-pHZustand (string -> string))
    (check-expect (bromthymolblau-pHZustand "gelb") "sauer")
    (check-expect (bromthymolblau-pHZustand "grün") "neutral")
    (check-expect (bromthymolblau-pHZustand "blau") "alkalisch")
    (define bromthymolblau-pHZustand
    (lambda (farbe)
        (cond
            ([string=? "gelb" farbe] "sauer")
            ([string=? "grün" farbe] "neutral")
        ))) 
    Aufgabe 2. Der else-Fall
    A2.1 
    Rufe die Funktion bromthymolblau-pHZustand mit dem String "rot" auf.
    Welche Ausgabe erhälst du in der REPL?
    
Eine Möglichkeit diesen Fehler abzufangen ist einen weiteren Fall in $(cond ...)$ einzufügen, hierfür verwenden wir das Schlüsselwort $else$.
(cond 
    ...
    ...
    (else ...))
A2.2 Ergänze deine Funktion so, dass jede beliebige String-Übergabe eine Rückgabe liefert.
Aufgabe 3. Bestimmung von MSS-Punkten
Das Rheinland-Pfälzische Ministerium für Bildung stellte für die Bewertung der schriftlichen Abiturprüfungen im Jahr 2025 folgenden Vorgaben zur Verfügung:| MSS-Notenpunkte | mind. zu erreichende Prozent | 
|---|---|
| 15 | 95 | 
| 14 | 90 | 
| 13 | 85 | 
| 12 | 80 | 
| 11 | 75 | 
| 10 | 70 | 
| 9 | 65 | 
| 8 | 60 | 
| 7 | 55 | 
| 6 | 50 | 
| 5 | 45 | 
| 4 | 40 | 
| 3 | 33 | 
| 2 | 27 | 
| 1 | 20 | 
| 0 | 0 | 
A3. Schreibe eine Funktion prozent-zu-mss, welche Prozentpunkte (ohne Komma) übergeben bekommt und die entsprechenden MSS-Notenpunkte zurückliefert.
Zu merken: Fallunterscheidungen
Eine Fallunterscheidung in Racket ist wie folgt aufgebaut:
- Das Schlüsselwort cond gibt an, dass nun verschiedenen Fälle/Conditions folgen.
 
- In den eckigen Klammern [..] steht jeweils ein Ausdruck, welcher einen Wahrheitswert zurückliefert.
 
- Je nach Bedarf kann auch ein else-Fall genutzt werden.
    
        (cond 
            ([funkionsname parameter1 parameter2] rückgabe-WennAusdruck-True)
            ([...] ...)
            ...
            (else rückgabe-WennAlleAnderenAusdrücke-False)
        )
    Quellen
- [1]: Bromthymolblau - Urheber: DOJ - Lizenz: inf-schule.de
 
          