Bedingte Ausdrücke

Aus ProgrammingWiki
Archivierte Version vom 2012-10-07T13:55:34+00:00. Aktuelle Version

Inhaltsverzeichnis

Bedingte Ausdrücke in Scheme

Bedingte Ausdrücke sind Programmstrukturen, mit denen der Wert eines Ausdrucks von bestimmten Bedingungen abhängig gemacht werden kann.

Grundform Alternative Fallauswahl

Beachte:

  • die angegebenen Bedingungen werden in der vorgegebenen Reihenfolge evaluiert,
  • sobald sich zum ersten Mal der Wahrheitswert #t ergibt, werden keine weiteren Bedingungen untersucht

    (selbst dann nicht, wenn ein fehlerhafter Ausdruck wie (/ 4 0) erscheint) – die Evaluation wird an dieser Stelle beendet,

  • else wird immer zu #t evaluiert, sodass bei seiner Evaluation immer der nachfolgende Ausdruck abgearbeitet wird.

Beachte:

  • der else–Teil kann grundsätzlich entfallen,
  • in beiden Teilen darf nur ein Ausdruck stehen, anderenfalls muss mit

    (begin <ausdruck> ... <ausdruck>)</ausdruck></ausdruck> ein zusammengesetzter Ausdruck gebildet werden,

  • unbestimmte Rückgabewerte, wie sie bei
    (define my-sqrt
      (lambda (x)
        (if (>= x 0) (sqrt x))))
    

    auftreten können, sollten vermieden werden.

Beachte:

  • zunächst wird der nach case folgende Ausdruck evaluiert,
  • in einer Suche von oben nach unten wird festgestellt, in welcher Auswahlmenge sein Wert vorkommt,
  • der zu dieser Menge gehörende Ausdruck wird evaluiert und als Wert des gesamten case–Ausdrucks zurückgegeben,
  • falls der Wert in keiner Menge enthalten ist, bildet der Wert nach else das Resultat.

Aufgaben

  1. Signumfunktion

    Schreiben Sie eine Prozedur für die einstellige Funktion signum, die als Funktionswerte -1, 1 oder 0 entsprechend des Vorzeichens der als Argument übergebenen Zahl zurückgibt.
    Beispiele:

    (signum -337.8436) --> -1
    (signum 0)         -->  0
    (signum 34/45)     -->  1
    
  2. Klassenstärkenprüfer

    Lehrer und Schüler bewerten Klassenstärken etwa mit folgenden Einschätzungen:

    • 10 ... 15: geringe Klassenstärke,
    • 16 ... 20: ideale Klassenstärke,
    • 21 ... 25: normale Klassenstärke,
    • 26 ... 32: hohe Klassenstärke,

    Alle anderen Schülerzahlen sind unzulässig. Implementieren Sie einen "Klassenstärkenprüfer" als bedingten Ausdruck mit den Sprachelementen:

    • cond
    • if
    • case.