i

Datentyp Liste

Mika möchte mit Racket seine in der Schule erreichten Noten verarbeiten. Damit er nicht alle Noten einzeln abarbeiten muss, möchte er diese in einer Liste verwalten und anschließend Funktionen auf Elementen dieser Liste ausführen.

Der Aufbau von Listen

Mika hat in der Informatik bisher vier Klausuren mit den Notenpunkten 7, 4, 10 und 13 geschrieben. Um diese gemeinsam zu verarbeiten, müssen wir die einzelnen Daten zusammenfügen. Hierzu wollen wir eine Liste mit den entsprechenden Werten erstellen.

Aufgabe 1: Der Operator cons

Ein zentraler Operator, um Daten zu einer Liste zusammenzufügen, ist ist der Operator cons. Mit diesem wollen wir erst einmal eine Liste mit den ersten beiden Notenpunkten (7 und 4) erstellen.

(a) Um dich mit der Funktionsweise des Operators vertraut zu machen, tätige die folgenden Eingaben in der REPL:


> (cons 7 4)
> empty
(b) Finde eine Möglichkeit, mit dem Operator cons eine Liste mit den beiden Notenpunkten zu erstellen. Dein Ausdruck ist korrekt, wenn die REPL die Ausgabe #<list 7 4> liefert.

Tipp: Der Operator cons benötigt als ersten Operand einen einzelnen Wert und als zweiten Operand eine Liste. Er fügt also immer genau einen Wert zu einer bereits bestehenden Liste hinzu. Die kleinste mögliche Liste ist die leere Liste empty.



Aufgabe 2: Die Operatoren first und rest

(a) Ein durch cons zurückgegebenes Element hat bestimmte Eigenschaften. Führe in der REPL zuerst die folgenden Ausdrücke aus:


> (first (cons 3 empty))
> (rest (cons 3 empty))
> (first (empty))
> (rest (empty))
Überlege anschließend, welche Rückgaben die folgenden zwei Ausdrücke produzieren werden?

;I
> (first (cons 7 (cons 4 (cons 10 (cons 13 empty)))))
;II
> (rest (cons 7 (cons 4 (cons 10 (cons 13 empty)))))
Überprüfe deine Annahmen in der REPL.

(b) Überlege, welche Rückgaben die folgenden Ausdrücke produzieren werden?


;III
> (first (rest (cons 7 (cons 4 (cons 10 (cons 13 empty))))))
;IV
> (rest (rest (cons 7 (cons 4 (cons 10 (cons 13 empty))))))
;V
> (rest (first (cons 7 (cons 4 (cons 10 (cons 13 empty))))))
;VI
> (first (rest (rest (cons 7 (cons 4 (cons 10 (cons 13 empty)))))))
Überprüfe deine Annahmen in der REPL.

(c) Fülle den folgenden Text aus:

Die Funktion wird verwendet, um ein Datum an eine Liste anzufügen. In Racket setzen wir sie daher ein, um Listen zu erstellen.

Wenn wir eine nicht-leere Liste erzeugen wollen, müssen wir hierzu ein einzelnes Element mit einer leeren Liste verknüpfen. Die leere Liste wird in Racket mit dargestellt.

Eine mit cons erstellte Liste besteht immer aus zwei Teilen: einem ersten Element und einem Rest, der selbst wiederum eine Liste ist. Mit den Funktionen und können wir gezielt auf diese beiden Bestandteile einer Liste zugreifen.

Listen effizient erstellen

Du wirst sicher festgestellt haben, dass je länger die Liste wird, desto unübersichtlicher wird auch die Erstellung der Liste durch den Operator cons. Racket bietet daher einen weiteren Operator, der uns die Verschachtelungen erspart:

> (list 1 2 3 4)

Aufgabe 3: Der Operator list

(a) Erstelle mit list eine Liste mit den Notenpunkten 7, 4, 10 und 13.

(b) Wenn wir doch den Operator list haben, ist es dann überhaupt notwendig, sich mit cons zu beschäftigen?
Führe die folgenden Ausdrücke aus und begründe anschließend deine Meinung.


> (first (list 1 2 3 4))
> (rest (rest (list 2 4 8 16)))
> (rest (list 1))

Aufgabe 4: Listen erweitern mit cons und append

Möchten wir eine Liste erweitern, so stehen uns dafür zwei Funktionen zur Verfügung. Das uns bekannte cons und die Funktion append. Finde gemeinsam mit einem Partner heraus, worin sich die Funktionalität der Funktionen voneinander unterscheidet. Probiere hierzu:

(a) Ein Element am Beginn und am Schluss einer Liste hinzuzufügen.

(b) Zwei Listen miteinander zu verbinden.

(c) Eine Liste aus Listen zu erstellen.

Suche

v
100.137.3.1.1 Datentyp Liste
Kopieren durch Anklicken

Rückmeldung geben