i

Der Aufbau von Listen in Racket

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

Eine zentraler Operator um Daten zu einer Liste zusammenzufügen ist ist der Operator cons. Mit diesem wollen wir ersteinmal 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
Finde einen 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.

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 zwei Daten zusammenzufügen. In Racket setzen wir sie 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 mit dem 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 wichtig 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 unterscheiden. 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 Der Aufbau von Listen in Racket
Kopieren durch Anklicken

Rückmeldung geben