• Keine Ergebnisse gefunden

7.1 Quickcheck 0 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "7.1 Quickcheck 0 Punkte"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Christoph Lüth Tobias Brandt Tristan Bruns Johannes Ganser Berthold Hoffmann Alexander Kurth Praktische Informatik 3 WS 16/17

7. Übungsblatt

Ausgabe: 06.12.16

Abgabe: 16.12.16, 12:00 Uhr

7.1 Quickcheck 0 Punkte

Um Eigenschaften sinnvoll testen zu können, benutzen Sie Quickcheck (wie in der Vorlesung vorgestellt).

Quickcheck ist in das Ihnen bereits bekannte Testframework Tasty integriert; Sie müssen nur das Modul dafür noch mit cabal installieren:

cabal install tasty-quickcheck

Diese Aufgabe bringt 0 Punkte, ist aber Grundvoraussetzung für eine sinnvolle Bearbeitung des Übungszet- tels.

7.2 Eigenschaften eines Editors 7 Punkte

Der Texteditor Etextbesteht aus einem zu bearbeitenden Text, sowie einem Cursor, der in diesem Text po- sitioniert ist: entweder zwischen zwei Zeichen, oder ganz am Anfang, oder ganz am Ende. Wir beschreiben Etext als abstrakten Datentypen (ADT) mit folgenden Operationen, die den Cursor bewegen oder den Text manipulieren:

• Öffnen eines neuen Textes inEtext(der Cursor steht danach ganz am Anfang);

• Bewegung des Cursors nach links bzw. rechts (am Anfang bzw. Ende des Textes bewegt sich der Cursor nicht mehr weiter nach links bzw. rechts);

• Einfügen eines Textes (der Cursor ist danach rechts des eingefügten Textes);

• Löschen des Zeichens links oder rechts des Cursors;

• Wiederholung eines Editorbefehls um eine gegeben Anzahl;

• eine Operation, welche den gesamten Text des Editors als Zeichenkette zurückgibt;

• sowie zwei Prädikate, ob der Cursor am Anfang oder Ende des Textes steht

Wir wollen jetzt Eigenschaften vonEtextnatürlichsprachlich formulieren. Hier sind drei Beispiele für Eigen- schaften:

(i) Wenn der Cursor am Anfang des Textes steht, ist die Bewegung nach links die Identität.

(ii) Das Einfügen eines Zeichens, gefolgt vom Löschen des Zeichens links des Cursors, ist die Identität.

(iii) Das Einfügen einer Zeichenkette, gefolgt vom Einfügen einer weiteren Zeichenkette, ist das gleich wie das Einfügen der Verkettung der beiden Zeichenketten.

Beschreiben sie sieben (7) weitere nicht-triviale Eigenschaften des TexteditorsEtext.

— Seite 1 von 2 —

(2)

Version 1.0 vom 06.12.2016

7. Übungsblatt Praktische Informatik 3, WS 16/17

7.3 Test und Implementation 13 Punkte

Wir wollen jetzt die oben formulierten Eigenschaften formalisieren,Etextimplementieren, und die Eigenschaf- ten mit Quickcheck testen.

Der zu implementierende Datentyp hat folgende Signatur:

data Editor

new :: String → Editor −−Öffnen eines Textes

r ig ht :: Editor → Editor −−Bewegung des Cursors nach rechts l e f t :: Editor → Editor −−Bewegung des Cursors nach links insert :: String → Editor → Editor −−Einfügen von Text

delR :: Editor → Editor −−Löschen des Zeichens rechts des Cursors delL :: Editor → Editor −−Löschen des Zeichens links des Cursors repeatF :: I n t → ( Editor → Editor ) → Editor → Editor

content :: Editor → String −−Inhalt des Editors

isAtEnd :: Editor → Bool −−Cursor am Ende des Textes isAtStart :: Editor → Bool −−Cursor am Anfang des Textes

Wenn Sie weitere Funktionen zu der Exportschnittstelle hinzufügen, begründen Sie, warum Sie diese benöti- gen.

1. Formalisieren Sie die Eigenschaften aus Aufgabe 7.2 als Quickcheck-Properties;

2. Implementieren Sie jetzt den abstrakten Datentyp. Dabei soll der Inhalt des Editors intern mit zwei Zei- chenketten dargestellt werden, die den Inhalt links des Curors (umgekehrt) sowie rechts des Cursors enthalten. Dadurch können Einfügen, Löschen und Bewegung des Cursors alle in konstanter Zeit1erfol- gen.

3. Testen Sie Ihre Implementation mit Quickcheck und Tasty.

? Verständnisfragen

1. Wie können wir die Typen und Operationen der Signatur eines abstrakten Datentypen grob klassifizie- ren, und welche Auswirkungen hat diese Klassifikation auf die zu formulierenden Eigenschaften?

2. Warum „finden Tests Fehler“, aber „zeigen Beweise Korrektheit“, wie in der Vorlesung behauptet? Stimmt das immer?

3. Müssen Axiome immer ausführbar sein? Welche Axiome wären nicht ausführbar?

1Bzw. linear in der Länge des eingefügten Textes

— Seite 2 von 2 —

Referenzen

ÄHNLICHE DOKUMENTE

In de Help van Label Editor vindt u uitleg over functies die niet in deze handleiding worden beschreven en andere handige informatie die u helpt bij het maken van etiketten met Label

L'aide de Label Editor vous permet de vérifier les fonctions autres que celles décrites dans ce manuel ou lorsque vous ne savez pas comment utiliser Label Editor pour créer une

Wenn der folgende Bildschirm angezeigt wird, wählen Sie eine Datei und klicken Sie auf [Öffnen].. Die ausgewählte Datei erscheint im Layoutbearbeitungsfenster und steht nun zur

Quando compare la schermata per selezionare l’applicazione da installare, verificare che sia selezionato [Label Editor] e fare clic su [Avanti].. Quando compare la finestra

• При выполнении редактирования в «окне редактирования макета» справку приложения Label Editor можно вызвать с помощью клавиши [F1]. В меню

Haga clic en este elemento para crear una etiqueta nueva o para crear una etiqueta importando datos desde otro archivo.. Haga clic aquí al importar datos de otro archivo para crear

Натисніть цю кнопку, щоб відкрити вікно параметрів.sСтворення етикеток з штрих-кодом Стрічка з вибраними параметрами відображається у вікні редагування макета,

The text buffer is cleared, and the Editor reads ~ pages from tape, printing each one on a separate page, spac ing across page perforations automatica lIy.. The