Listen sind endliche Folgen von Elementen. Jedes Element einer Liste besteht aus einem Inhalt und einem Zeiger auf das nächste Element der Liste (bzw. die Restliste). Die Inhalte der Elemente einer Liste können gleichen oder verschiedenen Typs sein. Der Aufbau einer Liste kann rekursiv beschrieben werden: In Prolog werden Listen in eckigen Klammern geschrieben. Mit dem Listenoperator | kann eine Liste in Kopf und Rest zerlegt werden.
Das Systemprädikat display(L) zeigt die Struktur einer Liste an. Weitere Systemprädikate sind: |
Listen eignen sich besonders zur dynamische Datenspeicherung, da Anzahl und Typ ihrer Elemente vorher nicht festehen muss. Sie lassen sich natürlich auch in objektorientierten Sprachen definieren, sind dort aber nicht so einfach zu nutzen wie in Prolog.
Als Beispiele für Listen können Adressbücher, Telefonverzeichnisse, Lexika, Wörterbücher, Wegbeschreibungen angegeben werden.
Das Systemprädikat member kann durch ein eigenes Prädikat element selbst implementiert werden. 1. Verbale Beschreibung: 2. Formulierung in Prolog: 3. Vereinfachung des Prädikates: |
1. Vergleichen Sie die Wirkung der Prädikate member und element beim Aufruf mit den Parametern 2 und [2,3,4,3,2]. 2. Entwickeln Sie folgende Prädikate: letztes(E,L) / umgedreht(UL,L)
/ count(L,N) |
Im nächsten Beispiel soll das Anhängen einer Liste L2 an
eine Liste L1 untersucht werden. |
3. Veranschaulichen Sie die Wirkung des Prädikats an einer Modellliste und programmieren Sie das Systemprädikat append selbst. |
Im nächsten Beispiel sollen Kombinationen von 3 verschiedenen Personen aus einer Menge von n Personen gebildet werden. comb(L,C):-count(L,3),L=C. |
4. Beschreiben Sie die Arbeitsweise des Prädikats. 5. Testen Sie das Prädikat. Welche Lösungen werden als erste
/ letztebei folgender Datenbasis gefunden? 6. Wieviele Lösungen gibt es insgesamt? Begründen Sie! 7. Erweitern Sie das Prädikat auf eine Auswahl von K Personen. |
8. Definieren Sie den Begriff Menge! 9. Welche der folgenden Listen sind auch Mengen? 10. Entwickeln Sie ein Prädikat menge/2, das eine Liste in eine Menge umwandelt. |