Προγράμματα και Δομές Δεδομένων ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ 5ο Εξάμηνο Ενότητα 6 - Προγράμματα και Δομές Δεδομένων στην PROLOG Δημοσθένης Σταμάτης Τμήμα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ
Οι Συναρτησιακοί Οροι (funtional terms) δεν είναι εκτελέσιμοι! (1/2) lives(name(nick, antoniou), address(kriezotou, 15)). lives(name(john,stratakis), address(papanikou, 9)). lives(name(nick, farmakis), address(antheon, 112)). ?- name(nick, X). no ?- lives(name(nick, Χ), address(Υ, Ζ)). Χ = antoniou, Υ = kriezotou, Ζ = 15 ->; Χ = farmakis, Υ = antheon, Ζ = 112 ->; no
Οι Συναρτησιακοί Οροι (funtional terms) δεν είναι εκτελέσιμοι! (2/2) lives(name(nick, antoniou), address(kriezotou, 15)). lives(name(john,stratakis), address(papanikou, 9)). lives(name(nick, farmakis), address(antheon, 112)). ?- lives(name(nick, Χ), Υ). Χ = antoniou, Υ = address(kriezotou, 15) ->; Χ = farmakis, Υ = address(antheon, 112) ->; no ?- lives(name(nick, Χ), _). Χ = antoniou ->; Χ = farmakis ->; no
Από τα Γεγονότα στους Κανόνες! (1/3) Από τα Γεγονότα στους Κανόνες! (1/3) lives(name(nick, antoniou), address(kriezotou, 15)). lives(name(john,stratakis), address(papanikou, 9)). lives(name(nick, farmakis), address(antheon, 112)). findname(X,Y) :- lives(name(X,Y), _ ). ?- findname(nick, X). Χ = antoniou ->; Χ = farmakis ->; no
Από τα Γεγονότα στους Κανόνες! (2/3) Από τα Γεγονότα στους Κανόνες! (2/3) lives(name(nick, antoniou), address(kriezotou, 15)). lives(name(john,stratakis), address(papanikou, 9)). lives(name(nick, farmakis), address(antheon, 112)). findname(X,Y) :- lives(name(X,Y), _ ). ?- findname(X, antoniou). Χ = nick ->; no
Από τα Γεγονότα στους Κανόνες! (3/3) Από τα Γεγονότα στους Κανόνες! (3/3) lives(name(nick, antoniou), address(kriezotou, 15)). lives(name(john,stratakis), address(papanikou, 9)). lives(name(nick, farmakis), address(antheon, 112)). findname(X,Y) :- lives(name(X,Y), _ ). ?- findname(X, Y). Χ = nick, Y = antoniou ->; Χ = john, Y = stratakis ->; Χ = nick, Y = farmakis ->; no
Αναδρομικοί Κανόνες (Recursive Rules) parent(nikos, yannis). parent(yannis, dimitris). parent(dimitris, sakis). ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- parent(X,Z), ancestor(Z,Y). ?- ancestor(X, sakis). Χ = dimitris ->; Χ = yannis ->; Χ = nikos ->; no