Beispiel (Adressendatei): Zu einem Namen N soll ein Zusatztext erfasst werden. Beide Bestandteile werden in Klauseln dat(N,Z) gespeichert, die vom Programm erzeugt wird. Das Programm selbst besteht aus zwei Klauseln daten(N), wobei die Variable N für einen Namen steht. Aufgerufen wird das Programm durch Eingabe von daten(N), wobei N durch einen konkreten Namen ersetzt wird.
| Programm | Funktion |
| daten(N):-clause(dat(N,Z),true),write(N),nl,write(Z),nl. |
claus testet, ob eine Klausel mit dem vorgegebenen Namen N existiert. Falls ja, wird N zusammen mit dem Text Z ausgegeben. Falls nein, wird die folgende Klausel aufgerufen. nl bewirkt dabei einen Zeilenvorschub. |
| daten(N):-write(N),write('Text:'),readln(Z),asserta(dat(X,Z)). |
N wird ausgegeben und der zugehörige Text Z erfragt. asserta erweitert das Programm um eine neue Klausel dat(N,T). |
Um die Anordnung der Klauseln autonom variieren zu lassen, könnte man die Häufigkeit bestimmen, mit der die Klauseln bei verschiedenen Programmaufrufen benutzt werden, und sie dann entsprechend umsortieren. Dies ist nicht bei allen Klauseln sinnvoll, wie das obige Beispiel zeigt. Für einfache Fälle haben wir das Verfahren im Unterricht ausprobiert - allerdings nicht in Prolog - und erreichten dabei interessante Ergebnisse.
[29.6.2023]