Listen

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

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.

  1. 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)
    

  2. 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 #\!))
    

  3. 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
    

Persönliche Werkzeuge