• Keine Ergebnisse gefunden

2. Übungsblatt Ausgabe:

N/A
N/A
Protected

Academic year: 2022

Aktie "2. Übungsblatt Ausgabe:"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Christoph Lüth Sandor Herms Daniel Müller Jan Radtke

Henrik Reichmann Sören Schulze Felix Thielke Praktische Informatik 3 WS 14/15

2. Übungsblatt

Ausgabe: 28.10.14 Abgabe: 07.11.14

2.1 Suchen 7 Punkte

Mit den selbstgebauten Zeichenketten aus der Vorlesung kann man jetzt noch nicht so viel anfangen. Imple- mentieren Sie eine Funktion

occurs :: MyString→ MyString→ Bool

welche prüft, ob die erste Zeichenkette in der zweiten auftritt. Dabei soll in der ersten Zeichenkette das Zeichen

∗für einen beliebigeZeichenkette stehen, also soll beispielsweise die Zeichenketteab∗x in den Zeichenkette rabllyxzoderrlabxvorkommen (aber nicht inarblx).

Hinweis:Definieren Sie zuerst eine Hilfsfunktion matchStart :: MyString→ MyString→ Bool

die prüft, ob die gesuchte Zeichenketteam Anfangder zweiten Zeichenkette auftritt. Danach können sieoccurs unter Nutzung vonmatchStarteinfach implementieren.

2.2 Ischa’ Freimaak! 13 Punkte

Es ist die fünfte Jahreszeit, und das geht auch an diesem Übungsblatt nicht spurlos vorüber. Um auch in etwas aufgeheiterter Stimmung noch sicher den Weg über den Freimarkt zu findem, wollen wir unsere Modellierung von ungerichteten Graphen nutzen, um unseren Freimarktbummel zu planen.

Auf der Webseite finden Sie einen Übersichtsplan des Bremer Freimarkts 2014. Abb. 1 zeigt eine Abstraktion hiervon als einen ungerichteten Graphen, wie wir ihn in der Vorlesung kennengelernt haben. Sie finden auf der Webseite auch eine DateiFreimaak.hs, welche diese Abstraktion in Haskell modelliert.

Ein Bummel über den Freimarkt ist in dieser Modellierung eine Traversion des Graphen, welche eine Menge von vorgegebenen Knoten in beliebiger Reihenfolge beinhaltet. Dabei wollen wir natürlich nicht schon vorher besuchte Knoten noch einmal besuchen.

1. Definieren Sie zuerst einen DatentypZiele, welcher eine Menge von Zielen (in der Form von eindeutigen Bezeichnern des Graphen, i.e. TypId) repräsentiert. Die Ziele können entweder leer sein, oder aus einem Ziel und weiteren Zielen bestehen.

2. Damit implementieren Sie eine Funktion bummel :: Ziele→ Lab→ Trav

die eine Traversion des Graphen zurückgibt, welche die Ziele in beliebiger Reihenfolge abläuft.

3. In der vorherigen Funktion können Sie davon ausgehen, dass Sie in dem letzten angelaufenen Ziel ein- fach versacken. Ändern Sie jetzt ihre Funktion so ab, dass Sie in einer definierten Endposition den Frei- marktbummel beenden.

1

(2)

Revision 2735 vom 2014-10-28 1

2 3 5 4

6 8 7

10 9 12 11

13

14 15

16 17 19 18

20 21

22

23 24 25

26

27 28

29 30

31

32 33 34

Abbildung 1: 979. Bremer Freimarkt (schematische Darstellung)

? Verständnisfragen

Auf diesem und den folgenden Übungsblättern finden sich Verständnisfragen zur Vorlesung. Diese sind nicht Bestandteil der Abgabe, können aber im Fachgesprach thematisiert werden. Wenn Sie das Gefühl haben, diese Fragen nicht sicher beantworten zu können, wenden Sie sich gerne an Ihren Tutor, an Berthold Hoffmann in seiner Fragestunde, oder an den Dozenten.

1. Welche zusätzliche Mächtigkeit wird durch Rekursion bei algebraischen Datentypen in der Modellierung erreicht? Was läßt sich mit rekursiven Datentypen modellieren, was sich nicht durch nicht-rekursive Datentypen erreichen läßt?

2. Was ist der Unterschied zwischen Bäumen und Graphen, in Haskell modelliert?

3. Was sind die wesentlichen Gemeinsamkeiten, und was sind die wesentlichen Unterschiede zwischen algebraischen Datentypen in Haskell, und Objekten in Java?

2

Referenzen

ÄHNLICHE DOKUMENTE

Zum Schluss fehlt eine Funktion, welche das Brett ausgibt. die vier Steine in einer Reihe, Zeile, oder Diagonalen durch ’ ∗ ’ ersetzen):.. render :: Board

Wenn der Knopf beleuchtet wird, darf sich kein vollständig geöffneter Aufzug mit der entsprechenden Fahrtrichtung auf der Etage befinden. In der Simulation bewegen

Wenn alle Spieler eine Karte gewählt haben, wird angezeigt, wie die Karten einsortiert werden 7. Muss ein Stapel zum Tauschen ausgewählt werden, wird das dem entsprechenden

Es sollen folgende Funktionen implementiert werden, welche prüfen, ob eine Zutat oder eine Menge von Zutaten im Lager enthalten sind, oder diese hinzufügen oder entnehmen:!.

Führen sie eine Gefährdungsanalyse (fault tree analysis) für das autonom fahrende Auto durch.. Stellen sie dabei den Fehlerbaum (fault tree) bis zur fünften Ebene dar und benutzen

Theo dor-H euss-

Machen Sie sich mit der Simulation vertraut, indem Sie eine Steuerung für die Roboter implementieren, welche möglichst viel Gold in die Basis schiebt.. Über onGoldCollected können

Gerichtete Graphen unterscheiden sich von ungerichteten dadurch, dass die Kanten nicht Mengen (ungerichtet) sondern geordnete Paare von Knoten (gerichtet) sind... Grad