• Keine Ergebnisse gefunden

8.1 Erste Schritte 10 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "8.1 Erste Schritte 10 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

8. Übungsblatt

Ausgabe: 13.12.16

Abgabe: 23.12.16, 12:00 Uhr

8.1 Erste Schritte 10 Punkte

Während der Vorlesung haben Sie folgende Behauptungen mitgeschrieben. Leider waren Sie während der Vorlesung zu sehr durch lustige Katzenvideos auf Ihrem Handy abgelenkt, um sich zu notieren ob diese gelten oder falsch sind:

length (map f xs) ==length xs (1)

sum (xs++ ys) ==sum xs+sum ys (2)

f i l t e r f ( reverse xs) 6= f i l t e r f xs (3)

take n ( take m xs) ==take (n+m) xs (4)

f i l t e r f ( takeWhile f xs) ==takeWhile f xs (5) Beweisen Sie diese Behauptungen, oder widerlegen Sie sie durch ein Gegenbeispiel. Konsultieren sie hierzu falls nötig die Implementierung der verwendeten Funktionen in der Haskell Standard Bücherei.

8.2 Haskell Space Programm 10 Punkte

Raumfahrt ist eine teure Angelegenheit, und an so ziemlich jeder Stelle kann etwas schiefgehen. Da ist es schön, wenn man weiß, dass wenigstens die Software korrekt funktioniert.

Die Menge an Treibstoff, die eine Rakete benötigt, ist näherungsweise proportional zur Masse, die im Weltraum ankommt. Deshalb sollen Komponenten, die im Verlauf des Fluges nicht mehr benötigt werden (z.B. leere Treibstofftanks und die zugehörigen Triebwerke), von der Rakete entkoppelt werden, sobald sie ihren Zweck erfüllt haben.

Eine mehrstufige Rakete ist normalerweise so aufgebaut, dass sich ganz oben die Nutzlast befindet (z.B. eine Raumkapsel oder ein Satellit). Darunter befinden sich die Stufen, bestehend jeweils aus einem Entkoppler, einem Treibstofftank und einem Triebwerk.

Gezündet wird jeweils die unterste Stufe. Sobald ihr Treibstoff erschöpft ist, wird sie vom Rest der Rakete entkoppelt, und die Stufe darüber wird gezündet.

Wir modellieren die verschiedenen Bauteile einer Rakete als algebraischen Datentyp:

data Part =Payload | FuelTank | Engine | Decoupler deriving (Eq, Show)

Eine Rakete ist dementsprechend eine Liste aller Bauteile aus denen sie besteht:

type Rocket= [ Part ]

Ein Beispiel für eine zweistufige Rakete:

twoStageRocket= [ Payload, Decoupler , FuelTank, Engine, Decoupler , FuelTank, Engine ] Die FunktionmakeRocketkonstruiert eine Rakete mitnStufen:

makeRocket :: I n t →Rocket

makeRocket n=extendRocket n [ Payload ]

— Seite 1 von 2 —

(2)

Version 1.1 vom 15.12.2016

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

stageParts= [ Decoupler , FuelTank, Engine ] extendRocket :: I n t →Rocket →Rocket extendRocket n r

| n≤0= r

| otherwise =extendRocket (n− 1) ( r ++ stageParts )

Es ist außerdem die FunktionrepListgegeben, welche eine Listenmal repliziert:

repList :: I n t → [a] → [a]

repList n s

| n≤0= [ ]

| otherwise =s ++ repList (n− 1) s Beweisen sie nun folgende Behauptungen:

r ++ repList n stageParts==extendRocket n r (6)

makeRocket n==Payload : repList n stageParts (7)

? Verständnisfragen

1. Der DatentypStreamαist definiert als data Stream α=Cons α (Stream α)

Gibt es für diesen Datentyp ein Induktionsprinzip? Ist es sinnvoll?

2. Welche nichtausführbaren Prädikate haben wir in der Vorlesung kennengelernt?

3. Wie kann man in einem Induktionsbeweis die Induktionsvoraussetzung stärken, und wann ist das nötig?

Änderungen:

• Version 1.0 Ausgegebene Version

• Version 1.1 Formel für Behauptung (5) korrigiert.

— Seite 2 von 2 —

Referenzen

ÄHNLICHE DOKUMENTE

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

 Analysis of the security environment results in security objectives that counter the identified threats and address identified organizational security policies and assumptions.

 Safety standards such as IEC 61508, DO-178B suggest development according to V-model.  Specification and implementation linked by verification and validation.  Variety

Source: Ericson (2005) 1) Hazards, mishaps and risk are not chance events. 2) Hazards are created during design. 3) Hazards are comprised of three components (HE, IM, T/T). 4)

In den nachfolgenden beiden Zeilen muß die Position des Ausgangs angegeben werden (zuerst die Zeile, dann die Spalte). Ursprung des Koordinatensystems (0,0) ist die linke obere Ecke

Speichern Sie alle drei Klassen in der Datei AdressenListeVListe.java (dieses ist möglich, da nur eine Klasse public deklariert wurde) und geben Sie Ihre Implementierung per abox

private static int[] daten= new int[1000]; // Datenfeld, das die // einzelnen Elemente der // Warteschlange enthaelt private static int anfang= 0; // Index auf den Anfang

Quellenbasis der historischen Untersuchung sind hauptsächlich die umfangreichen Bestände im Hauptarchiv der v.Bodelschwinghschen Anstalten Bethel, der 'großen Schwester' von