Funktionen höherer Ordnung
Rechnen in unterschiedlichen Darstellungen Präfix, Infix, Postfix-Darstellung
Eine Professorin möchte ihren Studierenden unterschiedliche Notationen mathematischer Ausdrücke beibringen. Dabei geht es ihr um folgende Notationen:
- Präfix-Notation:
- Infix-Notation:
- Postfix-Notation:
Um die Gleichwertigkeit der Notationen darzustellen, sollen die Studierenden die Möglichkeit bekommen alle drei Notationen in Racket anzuwenden.
Aufgabe 1: Spezifische Notationsfunktionen
Schreibe geeignete Funktionen, um mit den folgenden REPL-Ausgaben das Ergebnis
(a) Funktion zum Rechnen in der Präfix-Notation
(b) Funktion zum Rechnen in der Infix-Notation
(c) Funktion zum Rechnen in der Präfix-Notation
(d) Entwerfe einen geeigneten Ausdruck der sowohl prefix
, infix
als auch postifx
verwendet und das Ergebnis
Aufgabe 2: Notationen in einer Funktion
(a) Eine weitere Funktion soll unabhängig von dem angewandten Notationsstil eine Rechnung ausführen können. Entwerfe die Funktion rechnen
die die folgenden Ausdrücke zulässt:
(b) Die Funktion soll nicht mehr nur für Rechenaufgaben genutzt werden können, sondern auf beliebige Operatoren-Operanden-Kombinationen. Verfeinere deine Funktion dahin, dass die Funktion op
die folgenden Ausdrücke zulässt:
Rechnen mit KI-Chatbots
Das chatten mit KI-Chatbots wird immer beliebter, so auch die Verwendung der Chatbots zum Lösen von Rechenaufgaben. Nutzende geben die Aufgaben häufig als ein Prompt in natürlicher Sprache ein. Ein solcher Prompt könnten zum Beispiel sein:
"
Ein möglicher erster Schritt zur Verarbeitung besteht darin den Prompt in eine Liste von Wörtern aufzuteilen: (list "Rechne" "mir" "bitte" "14" "und" "77.5" "zusammen.")
In einem zweiten Schritt würde die Liste auf die für die Rechnung relevanten Informationen reduziert werden: (list "14" "und" "77.5")
Nun muss diese Information nur noch in einen ausführbaren Ausdruck umgewandelt werden. Die Funktion calcPrompt
soll diese Aufgabe erfüllen:
Aufgabe 3: Aus Text eine Funktion extrahieren
(a) Mache dich mit der gewünschten Funktionsweise der Funktion calcPrompt
vertraut und übertrage diese in dein Programm.
(b) Schreibe die Funktion getFunc
, um die korrekte Funktionsweise des Programmes sicherzustellen.