Übungen
Aufgabe 1
Gegeben ist eine Typdefinition für Himmelsrichtungen. Ergänze die Funktionsdefinitionen und teste die Funktionsaufrufe.
Aufgabe 2
Beim Münzwurf gibt es nur die beiden Ergebnisse "Kopf" und "Zahl".
(a) Entwickle einen geeigneten Datentyp für die Ergebnisse eines Münzwurfs (mit type
) sowie für eine Serie von Münzwürfen (mit type alias
).
(b) Entwickle eine Funktion, die zurückliefert, wie oft "Kopf" in einer Wurfserie vorkommt.
Aufgabe 3
Bei Sportveranstaltungen müssen eventuell auftretende Verletzungen dokumentiert werden. Dabei muss das Körperteil und falls sinnvoll die Körperseite angegeben werden. Definiere Datentypen für Körperseite und Körperteil. Schreibe eine Funktion, die eine Verletzung als String zurück gibt und sich z.B. so benutzen lässt:
Aufgabe 4
Definiere einen Datentyp für geometrische Formen. Es sollen Kreise und Rechtecke unterstützt werden. Ein Kreis hat einen Radius, ein Rechteck eine Breite und eine Höhe. Schreibe eine Funktion, die die Fläche einer Form berechnet und sich z.B. so aufrufen lässt:
Aufgabe 5
In einem vorherigen Kapitel hatten wir eine Funktion genutzt, die den tagesabhängigen Grundpreis für ein Schwimmbad berechnet. Die Funktion hatte folgende Form:
Beschreibe warum die Modellierung nicht optimal war und verbessere die Modellierung mit einem geeigneten Datentyp.
Aufgaben zum Interpreter
Um die folgenden Aufgaben lösen zu können, musst du das Interpreter-Beispiel bearbeitet haben.
Aufgabe i1
Gegeben ist eine Typdefinition für Bewegungsbefehle. Ergänze die Funktionsdefinitionen und teste den Funktionsaufruf.
Aufgabe (schwierig) i2
Gegeben sind eine Typdefinition für Bewegungsbefehle und zwei (teils unvollständige) Funktionsdefinitionen.
(a) Erkläre alle Details der Funktionsdefinition für die Funktion anzahlDrehungen
.
(b) Entwickle analog eine Funktionsdefinition für die Funktion wegLaenge
.