Prolog Επεξεργασία και Αναπαράσταση Γνώσης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο: Τεχνητή Νοημοσύνη
Σύνταξη της Prolog οι όροι τα γεγονότα οι κανόνες οι ερωτήσεις Τα στοιχεία της γλώσσας είναι οι όροι τα γεγονότα οι κανόνες οι ερωτήσεις Σχόλια Τα σχόλια στην Prolog εισάγονται είτε με τον χαρακτήρα “%”, είτε περικλείονται στους χαρακτήρες /* και */.
Σύνταξη της Prolog Όροι Γεγονότα Κανόνες Ερωτήσεις
Όροι Όροι στην Prolog Απλοί Σύνθετοι Σταθερές Μεταβλητές Συναρτησιακό σύμβολο Ορίσματα άτομα αριθμοί Απλοί όροι Σύνθετοι όροι
Απλοί όροι anna, x25, x_25, x_, ‘Tom’, ‘cd player’ Το μοναδικό data type στην Prolog είναι οι όροι (term). Οι απλοί όροι είναι οι αριθμοί, τα άτομα και οι μεταβλητές. Οι αριθμοί έχουν τη συνηθισμένη μορφή, κοινή με τις υπόλοιπες γλώσσες προγραμματισμού (floats ή integers). Τα άτομα (σταθερές) είναι συμβολοσειρές, οι οποίες πρέπει απαραίτητα να ξεκινούν από μικρό γράμμα ή να περιλαμβάνονται σε μονά εισαγωγικά, π.χ. anna, x25, x_25, x_, ‘Tom’, ‘cd player’
Μεταβλητές (1/2) X, Result, Object2, _a23 ?- father(peter,_). Οι μεταβλητές είναι συμβολοσειρές που μπορεί να περιέχουν γράμματα, ψηφία ή τον χαρακτήρα «_». Υποχρεωτικά ξεκινούν με κεφαλαίο γράμμα ή με τον χαρακτήρα «_», π.χ. X, Result, Object2, _a23 Οι μεταβλητές που ξεκινούν με τον χαρακτήρα «_» ονομάζονται ανώνυμες μεταβλητές. Οι ανώνυμες μεταβλητές χρησιμοποιούνται όταν δεν μας ενδιαφέρει η τιμή που θα λάβει η συγκεκριμένη μεταβλητή, π.χ. ?- father(peter,_).
Μεταβλητές (2/2) Στην Prolog, σε μία μεταβλητή η οποία έχει πάρει μία τιμή δεν μπορεί να δοθεί νέα (non destructive assignment). Οι μεταβλητές στην Prolog δεν έχουν τύπο (typeless) και γι’ αυτό δεν απαιτούν δηλώσεις. Μπορούν να πάρουν σαν τιμή οποιοδήποτε όρο αλφαβητικό, αριθμητικό η αλφαριθμητικό. Οι μεταβλητές είναι τοπικές με εμβέλεια μέσα στο κανόνα που εμφανίζονται. Μπορούμε να γράψουμε πρόγραμμα με 1 ή 2 μεταβλητές κακός προγραμματισμός
Σύνθετοι Όροι Οι σύνθετοι όροι είναι σύνθετες δομές με γενική μορφή f(k1,k2,…,kn) To f ονομάζεται συναρτησιακό σύμβολο (functor) τάξης n και τα k1,k2,…,kn λέγονται ορίσματα. Η τάξη είναι το πλήθος των ορισμάτων του σύνθετου όρου. Τα ορίσματα μπορεί να είναι είτε απλοί ή σύνθετοι όροι, π.χ. date(2,august,1997) triangle(point(4,2),point(6,4),point(7,1))
Σύνταξη της Prolog Όροι Γεγονότα Κανόνες Ερωτήσεις
Γεγονότα Η πιο απλή μορφή προτάσεων Horn είναι τα γεγονότα. Ένα γεγονός εκφράζει την απευθείας σχέση που συνδέει κάποια αντικείμενα. Αποτελείται από μία σχέση ή κατηγόρημα (predicate), το οποίο είναι ένα άτομο, ακολουθούμενο από έναν οποιοδήποτε αριθμό παραμέτρων ή ορισμάτων σε παρενθέσεις. Σαν ορίσματα μπορούμε να έχουμε οποιοδήποτε όρο είτε απλό είτε σύνθετο. Το πλήθος των ορισμάτων ονομάζεται τάξη του γεγονότος. Παραδείγματα: student(john,class(a),grade(b)). Γεγονός τάξης 3 με κατηγόρημα student. room(48,top_floor). Γεγονός τάξης 2 με κατηγόρημα room. day_sunny. Γεγονός μηδενικής τάξης με κατηγόρημα day_sunny.
Σύνταξη γεγονότων Ένα γεγονός ακολουθείται πάντα από τελεία. Το τμήμα του γεγονότος που προηγείται της τελείας, δηλαδή το κατηγόρημα και τα ορίσματά του είναι ο ατομικός τύπος. Γεγονός + Ατομικός τύπος Τελεία + Κατηγόρημα Ορίσματα
Σύνταξη της Prolog Όροι Γεγονότα Κανόνες Ερωτήσεις
Κανόνες Οι κανόνες (rules) είναι προτάσεις που ορίζουν νέες σχέσεις με τη βοήθεια άλλων σχέσεων που έχουν ήδη οριστεί. Οι κανόνες έχουν τη γενική μορφή: A:- B1,B2,…,Bn. (n>=1) Το Α ονομάζεται κεφαλή (head) του κανόνα και μπορεί να είναι οποιοσδήποτε ατομικός τύπος. Η κεφαλή διαχωρίζεται από το σώμα με τους χαρακτήρες «:-» οι οποίοι μπορούν να διβαστούν ως «αν». Τα Β1,Β2,…,Βn ονομάζονται σώμα (body) του κανόνα και είναι και αυτοί ατομικοί τύποι. Οι ατομικοί τύποι στο σώμα του κανόνα χωρίζονται συνήθως με κόμμα, ο οποίος δηλώνει λογική σύζευξη (λογικό «και»). Παράδειγμα brother(X,Y):- parent(Z,X),parent(Z,Y).