Listen
Aus ProgrammingWiki
Inhaltsverzeichnis |
Die Datenstruktur Liste
Mathematische Ausdrücke werden in Scheme als Listen dargestellt. Sie werden nach der Eingabe sofort evaluiert.
In Listen sollen nun Daten (auch mit verschiedenen Datentypen) verwaltet werden. Dazu muss ihre Evaluation unterdrückt werden:
Merke:
Listen bilden eine universelle Datenstruktur, mit der Daten gleicher oder unterschiedlicher Datentypen in einer definierten Reihenfolge verwaltet werden.
Eine Liste kann leer sein. Leere Listen evaluieren zu sich selbst.
Listen können ebenfalls Elemente von (verschachtelten) Listen sein.
Beispiele:
Listenoperationen
Zur Verwaltung und Auswertung von Daten in dieser Datenstruktur sind geeignete Prozeduren notwendig:
Syntax | Beispiele | |
---|---|---|
Operator | append | |
Prädikate | list? null? |
|
Konstruktoren | list cons |
|
Selektoren | car, cdr 1) cadr, cddr caddr, cdddr ... |
|
Sonderform | quote |
1) Die Sprachelemente car und cdr (sprich: "kudder") gehen auf frühe Lisp-Implementationen zurück und bedeuten:
- car ... contents of address part of register,
- cdr ... contents of decrement part of register.
Paare
Ein Paar ist die spezielle Repräsentation einer zweielementigen Liste. Auf diese Datenstruktur sind ebenfalls Listenoperationen anwendbar:
Beachte:
Aufgaben
Lösen Sie die nachfolgenden Aufgaben zunächst auf einem Blatt Papier.
Überprüfen Sie dann ausgewählte Lösungen in dem jeweiligen Interaktionsfenster.
- Geben Sie an:
(cons 'a '()) (cons '(a) '(b c d)) (cons "a" '(b c)) (cons 'a 3) (cons '(a b) 'c) (car '(a b c)) (car '((a) b c d)) (car '()) (cdr '((a) b c d)) (cdr '(1 . 2)) (cdr '()) (list? '(a b c)) (list? '()) (pair? (list 'a 'b)) (list? x)
- Geben Sie für den Zugriff auf die nachfolgenden Listen die erforderliche Syntax an. Ermitteln Sie:
... die Zahl 1 in (+ 1 2 3 4 5) ... die Zahl 5 in (+ 1 2 3 4 5) ... das Symbol für die Addition in (* 3 (+ 8 9)) ... die Zahl 9 in (* 3 (+ 8 9)) ... das Ausrufezeichen in (string-append "Hallo " (string #\O #\t #\t #\o #\!))
- Gegeben sei die Definition des folgenden Datensatzes:
Definieren Sie geeignete Variablen, so dass folgende Abfragen möglich werden:
name --> "Lehmann" vorname --> "Heinz" plz --> "02708" ort --> "Löbau" strasse --> "Bautzener Platz" hausnummer --> 31 vorwahl --> "03585" telefon --> 123456