• Keine Ergebnisse gefunden

Programmieraufgaben insgesamt 4 Punkte Lösen Sie die folgenden Programmieraufgaben. In dem Ordner

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmieraufgaben insgesamt 4 Punkte Lösen Sie die folgenden Programmieraufgaben. In dem Ordner"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmieraufgaben insgesamt 4 Punkte

Lösen Sie die folgenden Programmieraufgaben. In dem Ordner Aufgabenfinden Sie neben der Datei Tests.hs zwei Haskell-Dateien, welche jeweils den Rumpf mit Typsignatur enthalten.

Ergänzen Sie diese mit einer Implementation, und beachten Sie bitte:

• Verändern Sie die vorgegeben Typsignaturen nicht.

• Benennen Sie die Dateien nicht um, und legen Sie keine weiteren Dateien an.

• Achten Sie darauf, dass sich Ihre Abgabe übersetzen läßt; nicht übersetzbare Lösungen werden mit jeweils 0 Punkten bewertet.

Weitere nützliche Hinweise

• Sie können Visual Studio Code zum Bearbeiten der Programmieraufgabe nutzen; es ist mit Erweiterungen für Haskell vorkonfiguriert, und wird durch das Icon auf dem Desktop gestartet.

• Zum Übersetzen benutzen Sie den ghci. Auf dem Desktop finden Sie ein Icon, welches den ghci im richtigen Verzeichnis startet, so dass Sie mit :l <Aufgabe>.hs direkt die Quelldatei laden können.

• Die DateiTests.hsenthält die Beispiele aus der Aufgabenstellung als Unit-Tests. So kön- nen Sie schnell prüfen, ob Ihre Lösung plausibel ist. Natürlich sind diese Tests nur notwen- dig, aber nicht hinreiched für eine vollständige Lösung der Aufgaben.

Zum Ausführen der Tests laden Sie bitte Tests.hs in den ghci, und rufen die Funktion runauf.

• Sie finden auf dem Desktop Icons zur Dokumentation desghc(insbesondere der Standard- Bücherei).

Viel Glück!

(2)

1. Histogramme 2 Punkte

Definieren Sie eine Funktionhistogram, welches ein sehr einfaches Histogramm (eine Häufigkeits- verteilung) zeichnet. histogram bekommt ein Füllzeichen und eine Liste von Zahlen, und gibt eine Zeichenkette zurück, die für jede Zahl in der Eingabeliste eine Zeile mit genausoviel Kopien des Füllzeichens beinhaltet. Insgesamt enthält das Ergebnis also genausoviele (mit\ngetrennte) Zeilen wie die Länge der Eingabeliste.

Beispiel:

histogram ’∗’ [3 , 5 , 2] "∗∗∗\n∗∗∗∗∗\n∗∗\n"

Wenn wir den String mitputStr ausgeben, bewirkt \neinen Zeilenumbruch:

putStr ( histogram ’∗’ [3 , 5 , 2])

∗∗∗

∗∗∗∗∗

∗∗

putStr ( histogram ’X’ [1 ,5 ,1 ,3]) X

XXXXX X XXX

Hinweis: Die Funktion r e p l i c a t e :: Int→ a→ [ a ] kann hilfreich sein.

2. Listen sieben 2 Punkte

Definieren Sie eine FunktiondropEvery n xs, welches aus einer Eingabelistexsjedesn-te Element entfernt.

Beispiel:

dropEvery 3 "abcdefg" "abdeg"

dropEvery 5 [ 0 . . 1 4 ] [0 ,1 ,2 ,3 ,5 ,6 ,7 ,8 ,10 ,11 ,12 ,13]

Hinweise:

• Wenn Sie Schwierigkeiten haben, eine Ansatz zu finden, implementieren Sie eine rekursive Lösung. Hierfür sind die vordefinierten Funktionens pl i tA t :: Int → [α] → ( [α] , [α] ) und i n i t :: [α]→ [α] hilfreich.

• Alternativ können Sie eine Lösung mit Funktionen höherer Ordnung implementieren. Hier- zu zerlegen Sie die Aufgabe in drei einfachere Teilschritte:

1. Erstellen Sie erst eine Funktion, die aus einer Liste [α] eine Liste vonm Paaren [ ( Int , α) ] macht, deren erste Komponente der Index in der Liste (angefangen mit 1) ist. Hierbei ist zip :: [α]→ [β]→ [ (α, β) ] hilfreich.

2. Erweitern Sie diese Funktion um eine Funktion, die aus einer Liste [ ( Int , α) ] alle Paare entfernt, deren erstes Element durch nteilbar ist. (Das entspricht den jeweils n-ten Elementen der Ursprungsliste.)

3. Erweitern Sie die Funktion zum Schluss so, dass sie aus einer Liste von Paaren [ ( Int , α) ] das jeweils zweite Argument auswählt, und eine Liste [α] zurückgibt.

Die vordefinierten Funktionen f s t :: (α, β) → α und snd :: (α, β) → β sind beim Umgang mit Paaren hilfreich.

Referenzen

ÄHNLICHE DOKUMENTE

• heute: jeder Gruppe wird eine Gruppe zugeordnet, deren Server und Client getestet wird.. • Testbericht bis Montag, 24.01., 12:00 erstellen und an

► Äussere Tests: Nach Aufruf einer Methode mit Testdaten werden Relationen zwischen Ein-, und Ausgabeparametern sowie dem Zustand überprüft.. ■ Black-box-Tests (schwarze

► Äussere Tests: Nach Aufruf einer Methode mit Testdaten werden Relationen zwischen Ein-, und Ausgabeparametern sowie dem Zustand überprüft.. ■ Black-box-Tests (schwarze

• verfügen nur selten über Elemente, mit denen bei den Lernenden die Fähigkeit überprüft werden kann, das eigene Lernen zu kontrollieren. • werden entweder

JUnit Test Infected: Programmers Love Writing Tests, JUnit: a Cook's Tour, JUnit FAQ, JUnit JavaDoc.

Die Quantifizierung hämatopoietischer Stammzellen (CD34-positive Stammzellen) bei Patienten im Stammzell-Transplantationsprogramm erfolgt aus dem peripheren Blut während

Most obvious difference to doctest: test cases are not defined inside of the module which has to be tested, but in a separate module just for testing. In that

DIE LEBERSPEZIFISCHEN ENZ\;'M-TESTS UND DER LAP-TEST Aus Punkt (1) ergibt sich, daß eine Erhöhung der Aktivität dieser Enzyme dann durchaus auch im Serum vorhanden sein