ΠΛΗ31
PROLOG
Μάθηµα 1:
Εισαγωγή
∆ηµήτρης Ψούνης
ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
Β.Θεωρία
1. Σταθερές και Μεταβλητές
2. Γεγονότα
3. Ερωτήσεις
1. Ερωτήσεις σε Γεγονότα
2. Ερωτήσεις µε µεταβλητές
3. Ερωτήσεις µε ανώνυµες µεταβλητές
4. Σύνθετες ερωτήσεις
4. Κανόνες
1. Ορισµός Κανόνα
2. Ενσωµάτωση στο Πρόγραµµα
3. Αναδροµικοί Κανόνες
Γ.Ασκήσεις
2∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
H Γλώσσα Προγραµµατισµού Prolog
Η Prolog είναι µια γλώσσα προγραµµατισµού που βασίζεται στην
κατηγορηµατική λογική.
∆εν έχει καµία σχέση µε τον διαδικαστικό προγραµµατισµό (δεν υπάρχει
if και δεν υπάρχει for – οι δύο ουσιώδεις δοµές κάθε διαδικαστικής
γλώσσας προγραµµατισµού)
Ο στόχος της Prolog είναι:
Να ενσωµατώσει γνώση του πραγµατικού κόσµου στο πρόγραµµα.
Να ορίσει ένα σύνολο κανόνων εξαγωγής νέας γνώσης.
Με τον τρόπο αυτό:
Ο προγραµµατιστής δεν θα καθοδηγεί το πρόγραµµα για το πώς να
κάνει µια ενέργεια.
Ο προγραµµατιστής θα ρωτάει το πρόγραµµα για µια πληροφορία και
αυτό θα εξάγει µόνο του την απάντηση.
3∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
1. Σταθερές και Μεταβλητές
Στην Prolog µία σταθερά αναπαρίσταται µε µικρούς λατινικούς χαρακτήρες.
Π.χ.
socrates
tom
man
Αντίθετα µια µεταβλητή ξεκινάει πάντα µε κεφαλαίο γράµµα
X
Person
Father
4∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
2. Γεγονότα
Η αναπαράσταση υφιστάµενης γνώσης σε ένα πρόγραµµα Prolog γίνεται
µέσω κανόνων που ονοµάζονται γεγονότα.
Το όνοµα ενός κανόνα είναι δικής µας επιλογής και απεικονίζει µια
πληροφορία που έχουµε για τον πραγµατικό κόσµο
Π.χ. αν parent/2 ένα κατηγόρηµα που εκφράζει ότι το 1ο όρισµα είναι γονέας
του 2ου ορίσµατος τότε το σύνολο γεγονότων που φαίνεται αριστερά,
αναπαριστά το οικογενειακό δένδρο που φαίνεται δεξιά.
5∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
parent(tom,bob).
parent(tom,john).
parent(bob,jim).
parent(bob,kim).
parent(john,sam).
parent(jim,pat).
tom
bob john
jim kim
pat
sam
Β. Θεωρία
3. Ερωτήσεις
Στην SWI Prolog αποθηκεύουµε τα γεγονότα σε ένα ξεχωριστό αρχείο
κειµένου (κατά προτίµηση γραµµένο µε τον κειµενογράφο) µε προέκταση .pl
Η συγγραφή των αρχείων γεγονότων γίνεται και µε την SWI Prolog
επιλέγοντας File->New οπότε θα ανοίξει ο κειµενογράφος στον οποίο
µπορούµε να καταγράψουµε τα γεγονότα.
Αφού έχουµε γράψει τα γεγονότα, επιλέγουµε File->Consult και επιλέγουµε
το αρχείο. Αυτοµάτως τα γεγονότα φορτώνονται στον πυρήνα της Prolog,
άρα θεωρούνται γνώση του συστήµατος.
Πλέον είµαστε σε θέση να κάνουµε ερωτήσεις που αφορούν τα γεγονότα
που έχουµε καταγράψει
6∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
3. Ερωτήσεις (1. Ερωτήσεις σε Γεγονότα)
Οι ερωτήσεις γίνονται στην κονσόλα της Prolog αµέσως µετά το σήµα ?-
Παραδείγµατα ερωτήσεων γεγονότων. Προσοχή, ότι το ερώτηµα είναι το
όνοµα του κατηγορήµατος ακολουθούµενο από την τελεία:
7∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
?- parent(tom,bob).
true .
?- parent(tom,kim).
false.
?- parent(tom,michael).
false.
Β. Θεωρία
3. Ερωτήσεις (2. Ερωτήσεις µε µεταβλητές)
Παραδείγµατα ερωτήσεων µε µεταβλητές.
8∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
?- parent(tom,X).
X = bob ;
X = john.
?- parent(X,john).
X = tom.
?- parent(X,Y).
X = tom,
Y = bob ;
X = tom,
Y = john ;
.
.
.
Β. Θεωρία
3. Ερωτήσεις (2. Ερωτήσεις µε µεταβλητές)
Η ερώτηση parent(tom,X) στην Prolog µεταφράζεται ως «βρες όλες τις τιµές
για την µεταβλητή X, ώστε το parent(tom,X) να είναι αληθές.
Πατώντας ερωτηµατικό µετά από κάθε τιµή που µας επιστρέφει η
κονσόλα, µας εµφανίζει επόµενες τιµές που επαληθεύουν την ερώτηση
εως ότου να µην υπάρχουν άλλες τέτοιες τιµές.
Η σειρά µε την οποία εµφανίζονται τα αποτελέσµατα στην κονσόλα, έχει
να κάνει µε την σειρά που καταγράψαµε τα γεγονότα στο πρόγραµµά
µας.
9∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
3. Ερωτήσεις (3. Ανώνυµες Μεταβλητές)
Η ανώνυµη µεταβλητή συµβολίζεται µε underscore ‘_’ και παίζει ακριβώς τον
ίδιο ρόλο µε µια µεταβλητή.
Την χρησιµοποιούµε όταν δεν θέλουµε να µας επιστραφούν οι
συγκεκριµένες τιµές που αντιστοιχούν στην µεταβλητή αλλά θέλουµε να µας
επιστραφεί αν υπάρχουν τιµές που επαληθεύουν την ερώτηση.
Π.χ. η ερώτηση:
Θα απαντήσει απλά true, διότι υπάρχουν τιµές που µπορούν να
ανατεθούν στην µεταβλητή, ώστε να επαληθεύεται η σχέση.
Έτσι η παραπάνω ερώτηση δεν είναι πλέον «ποιοι είναι τα παιδιά του
tom», αλλά είναι «έχει ο tom παιδιά;»
Ενώ η ερώτηση:
είναι «έχει η pat γονέα;» και θα απαντηθεί true.
10∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
?- parent(tom,_).
?- parent(_,pat).
Β. Θεωρία
3. Ερωτήσεις (4. Σύνθετες Ερωτήσεις)
Για να κάνουµε πιο σύνθετες ερωτήσεις µπορούµε να χρησιµοποιήσουµε
τους συνήθεις λογικούς τελεστές AND, OR και NOT
Παραδείγµατα:
11∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
?- parent(X,tom);parent(tom,X).
X = bob ;
X = john.
ΤΕΛΕΣΤΗΣ Συµβολισµός
AND , (κόµµα)
OR ; (ερωτηµατικό)
NOT +
?- parent(X,bob),parent(X,john).
X = tom ;
false.
?- +parent(tom,_).
false.
Β. Θεωρία
4. Κανόνες (1. ορισµός κανόνα)
Ένας κανόνας είναι ένας τρόπος για να ορίσουµε µία σχέση µέσω άλλων
σχέσεων.
Ένας κανόνας γράφεται µε το σύµβολο :- (που διαβάζεται «αληθεύει αν»)
Για παράδειγµα µπορούµε να ορίσουµε τη σχέση grandparent να αληθεύει
αν το 1ο όρισµα είναι παππούς (ή γιαγιά) του 2ου ως εξής:
Με βάση το συντακτικό που έχουµε ορίσει ο παραπάνω κανόνας
διαβάζεται:
Η σχέση grandparent(X,Y) αληθεύει αν το X είναι γονέας του Ζ ΚΑΙ
το Z είναι γονέας του Y.
12∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Όνοµα-Σχέσης(Ορίσµατα):-Υποθέσεις
grandparent(X,Y):-
parent(X,Z),
parent(Z,Y).
Β. Θεωρία
4. Κανόνες (2. Ενσωµάτωση στο πρόγραµµα)
Οι κανόνες γράφονται αµέσως µετά τα γεγονότα στο αρχείο προγράµµατος
Ενσωµατώνονται στην SWI-Prolog αφού επιλέξουµε File->Consult στο
αρχείο πηγαίου κώδικα (Προσοχή αν επαναφορτώνουµε αρχείο: επιλέγουµε
File->Reload modified files)
Θεωρείται καλή προγραµµατιστική πρακτική να αναφέρουµε τους κανόνες
µετά τα γεγονότα στο αρχείο προγράµµατος.
Έπειτα η κονσόλα µπορεί να µας απαντήσει και στα ερωτήµατα που θέτουµε
µε χρήση του κατηγορήµατος που έχουµε ορίσει.
13∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Β. Θεωρία
4. Κανόνες (2. Ενσωµάτωση στο πρόγραµµα)
Από τη στιγµή που έχουµε ορίσει ένα κατηγόρηµα στο «πρόγραµµά µας»
µπορούµε να το χρησιµοποιήσουµε ως ένα οποιοδήποτε άλλο κατηγόρηµα.
Παραδείγµατα:
Η ερώτηση «έχει ο tom εγγόνια διατυπώνεται ως εξής:»
Ενώ η ερώτηση: «ποια είναι τα εγγόνια του tom;»
14∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
?- grandparent(tom,_).
true
?- grandparent(tom,X).
X=jim ;
X=kim ;
X=sam.
Β. Θεωρία
4. Κανόνες (3. Αναδροµικοί Κανόνες)
Πως µπορούµε να ορίσουµε έναν κανόνα που να αληθεύει αν το 1ο όρισµα
είναι πρόγονος του 2ου ορίσµατος;
Προφανώς δεν µπορούµε να κάνουµε αυτήν την καταγραφή για οσαδήποτε
επίπεδα.
Η λύση έρχεται µε την αναδροµή! Μπορούµε να ορίσουµε αναδροµικά την
σχέση πρόγονος ως εξής:
Αληθεύει αν ο Χ είναι ο γονέας του Υ ή
Αληθεύει αν ο Χ είναι ο γονέας ενός Ζ, ο οποίος είναι πρόγονος του Υ.
15∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
ancestor(X,Y):-
parent(X,Y).
ancestor(X,Y):-
parent(X,Z),parent(Z,Y).
ancestor(X,Y):-
parent(X,Z),parent(Z,W),parent(W,Y).
Β. Θεωρία
4. Κανόνες (3. Αναδροµικοί Κανόνες)
Έτσι ορίζουµε την σχέση πρόγονος ως εξής:
Είναι συνήθης πρακτική όταν γράφουµε την αναδροµή να γράφουµε πρώτα
τον κανόνα τερµατισµού της αναδροµής και έπειτα τον αναδροµικό κανόνα.
Ας δούµε πως θα εκτελέσει η prolog το ερώτηµα ancestor(tom,pat).
16∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
ancestor(X,Y):-
parent(X,Y).
ancestor(X,Y):-
parent(X,Z),ancestor(Z,Y).
Β. Θεωρία
4. Κανόνες (3. Εκτέλεση Προγράµµατος)
17∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
Ασκηση: ∆ώστε το πλήρες δένδρο εκτέλεσης του ερωτήµατος ? - ancestor(tom,pat).

More Related Content

PDF
ΠΛΗ20 ΜΑΘΗΜΑ 5.2
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 2.2
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.2
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 1.3
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.2
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.1
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.4
ΠΛΗ20 ΜΑΘΗΜΑ 5.2
ΠΛΗ20 ΜΑΘΗΜΑ 2.2
ΠΛΗ31 ΜΑΘΗΜΑ 2.2
ΠΛΗ31 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
ΠΛΗ20 ΜΑΘΗΜΑ 1.1
ΠΛΗ20 ΜΑΘΗΜΑ 1.4

What's hot (20)

PDF
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΣΥΝΔΥΑΣΤΙΚΗΣ
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.6
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
PDF
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.4
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.1
PDF
ΠΛΗ20.ΚΑΡΤΑ - ΣΥΝΔΥΑΣΜΟΙ
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 1.7
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 3.5 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 4.5
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 3.1
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 6.2
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 3.5
PDF
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.5
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 2.1
PDF
ΠΛΗ20 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 2.3
PDF
ΠΛΗ20 ΜΑΘΗΜΑ 4.3
ΠΛΗ20 ΤΥΠΟΛΟΓΙΟ ΣΥΝΔΥΑΣΤΙΚΗΣ
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.6
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.4
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ31 ΜΑΘΗΜΑ 2.1
ΠΛΗ20.ΚΑΡΤΑ - ΣΥΝΔΥΑΣΜΟΙ
ΠΛΗ20 ΜΑΘΗΜΑ 1.7
ΠΛΗ20 ΜΑΘΗΜΑ 3.5 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ20 ΜΑΘΗΜΑ 4.5
ΠΛΗ20 ΜΑΘΗΜΑ 3.1
ΠΛΗ20 ΜΑΘΗΜΑ 6.2
ΠΛΗ20 ΜΑΘΗΜΑ 3.5
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.5
ΠΛΗ20 ΜΑΘΗΜΑ 2.1
ΠΛΗ20 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 6.1
ΠΛΗ20 ΜΑΘΗΜΑ 2.3
ΠΛΗ20 ΜΑΘΗΜΑ 4.3
Ad

Viewers also liked (20)

PDF
ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 1 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.6
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2,6 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.4 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.4
PDF
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.4
PDF
PROLOG - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
PDF
PROLOG - ΜΑΘΗΜΑ 4
PDF
ΠΛΗ31 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 4
PDF
ΠΛΗ31 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
PDF
PROLOG ΜΑΘΗΜΑ 5 (ΕΚΤΥΠΩΣΗ)
PDF
PROLOG ΜΑΘΗΜΑ 5
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.5
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 - ΚΑΡΤΑ
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.5 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 2.5
PDF
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΜΑΘΗΜΑ 2.6
ΠΛΗ31 ΜΑΘΗΜΑ 2,6 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΜΑΘΗΜΑ 2.4 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΜΑΘΗΜΑ 2.4
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.4
PROLOG - ΜΑΘΗΜΑ 4 (ΕΚΤΥΠΩΣΗ)
PROLOG - ΜΑΘΗΜΑ 4
ΠΛΗ31 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 4
ΠΛΗ31 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
PROLOG ΜΑΘΗΜΑ 5 (ΕΚΤΥΠΩΣΗ)
PROLOG ΜΑΘΗΜΑ 5
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
ΠΛΗ31 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.5
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 - ΚΑΡΤΑ
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΜΑΘΗΜΑ 2.5 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 ΜΑΘΗΜΑ 2.5
ΠΛΗ31 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Ad

Similar to ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 1 (7)

PDF
ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 2
PDF
PROLOG - ΜΑΘΗΜΑ 3
DOC
διδακτικο σεναριο στη δομή επιλογής
PDF
Biologia
PDF
ΑΛΓΟΡΙΘΜΟΙ & ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 2
PROLOG - ΜΑΘΗΜΑ 3
διδακτικο σεναριο στη δομή επιλογής
Biologia
ΑΛΓΟΡΙΘΜΟΙ & ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

More from Dimitris Psounis (20)

PDF
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
PDF
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
PDF
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
PDF
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
PDF
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
PDF
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
PDF
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
PDF
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
PDF
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
PDF
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
PDF
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
PDF
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
PDF
ΠΛΗ31 - ΤΕΣΤ 33
PDF
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ31 - ΤΕΣΤ 33
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6

Recently uploaded (16)

PDF
ΕσωτερικήΣυνοπτικήΑξιολόγηση56ουΓυμνασίουΑθήναςyear-2024-school-0501193-form-...
PPTX
Κωνσταντού Γλυκερία, Ο ΜΥΣΤΙΚΟΣ ΚΗΠΟΣ.pptx
PPTX
ΣΤΑΜΟΥ_ΙΩΑΝΝΑ__Το_σπίτι_των_πνευμάτων_της_Ιζαμπέλ_Αλιέντε.pptx
PDF
ΕξωτερικήΑξιολόγηση56ουΓυμνασίουΑθήνας.year-2024-school-0501193-form-22-expor...
PDF
Παιδικές Δασουπολίτικες Πατριδοφωνές 24-25.pdf
PPTX
Δριστά Κυριακή, Το καπλάνι της βιτρίνας, της Άλκης Ζέη.pptx
PDF
ΕσωτερικήΑξιολόγηση56ουΓυμνασίουΑθήναςyear-2024-school-0501193-form-21-export...
PPTX
Οι Κανόνες Μας Στο Εργαστήριο Υπολογιστών
PPTX
Μπαμπάνη_Αρχ._Χωρίς_οικογένεια_(Έκτ._Μαλό).pptx
PPTX
Μπαμπάνης Κ., Εκεί που τραγουδ. οι καραβίδες.pptx
PPTX
Πιπιλίκα Αναστασία_Μια φλόγα στο σκοτάδι (Έλεν Κέλερ).pptx
PPTX
ΤΣΑΡΤΣΑΡΗ ΕΛΙΣΑΒΕΤ, Ο Βίος και η Πολιτεία του Αλέξη Ζορμπά.pptx
PPTX
Τιμαμόπουλος Ευγ., Ο άρχοντας των δαχτυλιδιών 2.pptx
PDF
Τριανταφύλλου Μπαμπάνης Αλέξανδρος, Λόγια της πλώρης.pdf
PPTX
Τσολογιάννη Στυλιανή, Ο Τρελαντώνης.pptx
PPTX
Φολτόπουλος Αλέξανδρος, Με μόνο Φίλο τον υπολογιστή (της Ράνιας Μπουμπουρή).pptx
ΕσωτερικήΣυνοπτικήΑξιολόγηση56ουΓυμνασίουΑθήναςyear-2024-school-0501193-form-...
Κωνσταντού Γλυκερία, Ο ΜΥΣΤΙΚΟΣ ΚΗΠΟΣ.pptx
ΣΤΑΜΟΥ_ΙΩΑΝΝΑ__Το_σπίτι_των_πνευμάτων_της_Ιζαμπέλ_Αλιέντε.pptx
ΕξωτερικήΑξιολόγηση56ουΓυμνασίουΑθήνας.year-2024-school-0501193-form-22-expor...
Παιδικές Δασουπολίτικες Πατριδοφωνές 24-25.pdf
Δριστά Κυριακή, Το καπλάνι της βιτρίνας, της Άλκης Ζέη.pptx
ΕσωτερικήΑξιολόγηση56ουΓυμνασίουΑθήναςyear-2024-school-0501193-form-21-export...
Οι Κανόνες Μας Στο Εργαστήριο Υπολογιστών
Μπαμπάνη_Αρχ._Χωρίς_οικογένεια_(Έκτ._Μαλό).pptx
Μπαμπάνης Κ., Εκεί που τραγουδ. οι καραβίδες.pptx
Πιπιλίκα Αναστασία_Μια φλόγα στο σκοτάδι (Έλεν Κέλερ).pptx
ΤΣΑΡΤΣΑΡΗ ΕΛΙΣΑΒΕΤ, Ο Βίος και η Πολιτεία του Αλέξη Ζορμπά.pptx
Τιμαμόπουλος Ευγ., Ο άρχοντας των δαχτυλιδιών 2.pptx
Τριανταφύλλου Μπαμπάνης Αλέξανδρος, Λόγια της πλώρης.pdf
Τσολογιάννη Στυλιανή, Ο Τρελαντώνης.pptx
Φολτόπουλος Αλέξανδρος, Με μόνο Φίλο τον υπολογιστή (της Ράνιας Μπουμπουρή).pptx

ΠΛΗ31 PROLOG ΜΑΘΗΜΑ 1

  • 2. ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος Β.Θεωρία 1. Σταθερές και Μεταβλητές 2. Γεγονότα 3. Ερωτήσεις 1. Ερωτήσεις σε Γεγονότα 2. Ερωτήσεις µε µεταβλητές 3. Ερωτήσεις µε ανώνυµες µεταβλητές 4. Σύνθετες ερωτήσεις 4. Κανόνες 1. Ορισµός Κανόνα 2. Ενσωµάτωση στο Πρόγραµµα 3. Αναδροµικοί Κανόνες Γ.Ασκήσεις 2∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 3. Β. Θεωρία H Γλώσσα Προγραµµατισµού Prolog Η Prolog είναι µια γλώσσα προγραµµατισµού που βασίζεται στην κατηγορηµατική λογική. ∆εν έχει καµία σχέση µε τον διαδικαστικό προγραµµατισµό (δεν υπάρχει if και δεν υπάρχει for – οι δύο ουσιώδεις δοµές κάθε διαδικαστικής γλώσσας προγραµµατισµού) Ο στόχος της Prolog είναι: Να ενσωµατώσει γνώση του πραγµατικού κόσµου στο πρόγραµµα. Να ορίσει ένα σύνολο κανόνων εξαγωγής νέας γνώσης. Με τον τρόπο αυτό: Ο προγραµµατιστής δεν θα καθοδηγεί το πρόγραµµα για το πώς να κάνει µια ενέργεια. Ο προγραµµατιστής θα ρωτάει το πρόγραµµα για µια πληροφορία και αυτό θα εξάγει µόνο του την απάντηση. 3∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 4. Β. Θεωρία 1. Σταθερές και Μεταβλητές Στην Prolog µία σταθερά αναπαρίσταται µε µικρούς λατινικούς χαρακτήρες. Π.χ. socrates tom man Αντίθετα µια µεταβλητή ξεκινάει πάντα µε κεφαλαίο γράµµα X Person Father 4∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 5. Β. Θεωρία 2. Γεγονότα Η αναπαράσταση υφιστάµενης γνώσης σε ένα πρόγραµµα Prolog γίνεται µέσω κανόνων που ονοµάζονται γεγονότα. Το όνοµα ενός κανόνα είναι δικής µας επιλογής και απεικονίζει µια πληροφορία που έχουµε για τον πραγµατικό κόσµο Π.χ. αν parent/2 ένα κατηγόρηµα που εκφράζει ότι το 1ο όρισµα είναι γονέας του 2ου ορίσµατος τότε το σύνολο γεγονότων που φαίνεται αριστερά, αναπαριστά το οικογενειακό δένδρο που φαίνεται δεξιά. 5∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή parent(tom,bob). parent(tom,john). parent(bob,jim). parent(bob,kim). parent(john,sam). parent(jim,pat). tom bob john jim kim pat sam
  • 6. Β. Θεωρία 3. Ερωτήσεις Στην SWI Prolog αποθηκεύουµε τα γεγονότα σε ένα ξεχωριστό αρχείο κειµένου (κατά προτίµηση γραµµένο µε τον κειµενογράφο) µε προέκταση .pl Η συγγραφή των αρχείων γεγονότων γίνεται και µε την SWI Prolog επιλέγοντας File->New οπότε θα ανοίξει ο κειµενογράφος στον οποίο µπορούµε να καταγράψουµε τα γεγονότα. Αφού έχουµε γράψει τα γεγονότα, επιλέγουµε File->Consult και επιλέγουµε το αρχείο. Αυτοµάτως τα γεγονότα φορτώνονται στον πυρήνα της Prolog, άρα θεωρούνται γνώση του συστήµατος. Πλέον είµαστε σε θέση να κάνουµε ερωτήσεις που αφορούν τα γεγονότα που έχουµε καταγράψει 6∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 7. Β. Θεωρία 3. Ερωτήσεις (1. Ερωτήσεις σε Γεγονότα) Οι ερωτήσεις γίνονται στην κονσόλα της Prolog αµέσως µετά το σήµα ?- Παραδείγµατα ερωτήσεων γεγονότων. Προσοχή, ότι το ερώτηµα είναι το όνοµα του κατηγορήµατος ακολουθούµενο από την τελεία: 7∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ?- parent(tom,bob). true . ?- parent(tom,kim). false. ?- parent(tom,michael). false.
  • 8. Β. Θεωρία 3. Ερωτήσεις (2. Ερωτήσεις µε µεταβλητές) Παραδείγµατα ερωτήσεων µε µεταβλητές. 8∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ?- parent(tom,X). X = bob ; X = john. ?- parent(X,john). X = tom. ?- parent(X,Y). X = tom, Y = bob ; X = tom, Y = john ; . . .
  • 9. Β. Θεωρία 3. Ερωτήσεις (2. Ερωτήσεις µε µεταβλητές) Η ερώτηση parent(tom,X) στην Prolog µεταφράζεται ως «βρες όλες τις τιµές για την µεταβλητή X, ώστε το parent(tom,X) να είναι αληθές. Πατώντας ερωτηµατικό µετά από κάθε τιµή που µας επιστρέφει η κονσόλα, µας εµφανίζει επόµενες τιµές που επαληθεύουν την ερώτηση εως ότου να µην υπάρχουν άλλες τέτοιες τιµές. Η σειρά µε την οποία εµφανίζονται τα αποτελέσµατα στην κονσόλα, έχει να κάνει µε την σειρά που καταγράψαµε τα γεγονότα στο πρόγραµµά µας. 9∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 10. Β. Θεωρία 3. Ερωτήσεις (3. Ανώνυµες Μεταβλητές) Η ανώνυµη µεταβλητή συµβολίζεται µε underscore ‘_’ και παίζει ακριβώς τον ίδιο ρόλο µε µια µεταβλητή. Την χρησιµοποιούµε όταν δεν θέλουµε να µας επιστραφούν οι συγκεκριµένες τιµές που αντιστοιχούν στην µεταβλητή αλλά θέλουµε να µας επιστραφεί αν υπάρχουν τιµές που επαληθεύουν την ερώτηση. Π.χ. η ερώτηση: Θα απαντήσει απλά true, διότι υπάρχουν τιµές που µπορούν να ανατεθούν στην µεταβλητή, ώστε να επαληθεύεται η σχέση. Έτσι η παραπάνω ερώτηση δεν είναι πλέον «ποιοι είναι τα παιδιά του tom», αλλά είναι «έχει ο tom παιδιά;» Ενώ η ερώτηση: είναι «έχει η pat γονέα;» και θα απαντηθεί true. 10∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ?- parent(tom,_). ?- parent(_,pat).
  • 11. Β. Θεωρία 3. Ερωτήσεις (4. Σύνθετες Ερωτήσεις) Για να κάνουµε πιο σύνθετες ερωτήσεις µπορούµε να χρησιµοποιήσουµε τους συνήθεις λογικούς τελεστές AND, OR και NOT Παραδείγµατα: 11∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ?- parent(X,tom);parent(tom,X). X = bob ; X = john. ΤΕΛΕΣΤΗΣ Συµβολισµός AND , (κόµµα) OR ; (ερωτηµατικό) NOT + ?- parent(X,bob),parent(X,john). X = tom ; false. ?- +parent(tom,_). false.
  • 12. Β. Θεωρία 4. Κανόνες (1. ορισµός κανόνα) Ένας κανόνας είναι ένας τρόπος για να ορίσουµε µία σχέση µέσω άλλων σχέσεων. Ένας κανόνας γράφεται µε το σύµβολο :- (που διαβάζεται «αληθεύει αν») Για παράδειγµα µπορούµε να ορίσουµε τη σχέση grandparent να αληθεύει αν το 1ο όρισµα είναι παππούς (ή γιαγιά) του 2ου ως εξής: Με βάση το συντακτικό που έχουµε ορίσει ο παραπάνω κανόνας διαβάζεται: Η σχέση grandparent(X,Y) αληθεύει αν το X είναι γονέας του Ζ ΚΑΙ το Z είναι γονέας του Y. 12∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή Όνοµα-Σχέσης(Ορίσµατα):-Υποθέσεις grandparent(X,Y):- parent(X,Z), parent(Z,Y).
  • 13. Β. Θεωρία 4. Κανόνες (2. Ενσωµάτωση στο πρόγραµµα) Οι κανόνες γράφονται αµέσως µετά τα γεγονότα στο αρχείο προγράµµατος Ενσωµατώνονται στην SWI-Prolog αφού επιλέξουµε File->Consult στο αρχείο πηγαίου κώδικα (Προσοχή αν επαναφορτώνουµε αρχείο: επιλέγουµε File->Reload modified files) Θεωρείται καλή προγραµµατιστική πρακτική να αναφέρουµε τους κανόνες µετά τα γεγονότα στο αρχείο προγράµµατος. Έπειτα η κονσόλα µπορεί να µας απαντήσει και στα ερωτήµατα που θέτουµε µε χρήση του κατηγορήµατος που έχουµε ορίσει. 13∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή
  • 14. Β. Θεωρία 4. Κανόνες (2. Ενσωµάτωση στο πρόγραµµα) Από τη στιγµή που έχουµε ορίσει ένα κατηγόρηµα στο «πρόγραµµά µας» µπορούµε να το χρησιµοποιήσουµε ως ένα οποιοδήποτε άλλο κατηγόρηµα. Παραδείγµατα: Η ερώτηση «έχει ο tom εγγόνια διατυπώνεται ως εξής:» Ενώ η ερώτηση: «ποια είναι τα εγγόνια του tom;» 14∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ?- grandparent(tom,_). true ?- grandparent(tom,X). X=jim ; X=kim ; X=sam.
  • 15. Β. Θεωρία 4. Κανόνες (3. Αναδροµικοί Κανόνες) Πως µπορούµε να ορίσουµε έναν κανόνα που να αληθεύει αν το 1ο όρισµα είναι πρόγονος του 2ου ορίσµατος; Προφανώς δεν µπορούµε να κάνουµε αυτήν την καταγραφή για οσαδήποτε επίπεδα. Η λύση έρχεται µε την αναδροµή! Μπορούµε να ορίσουµε αναδροµικά την σχέση πρόγονος ως εξής: Αληθεύει αν ο Χ είναι ο γονέας του Υ ή Αληθεύει αν ο Χ είναι ο γονέας ενός Ζ, ο οποίος είναι πρόγονος του Υ. 15∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ancestor(X,Y):- parent(X,Y). ancestor(X,Y):- parent(X,Z),parent(Z,Y). ancestor(X,Y):- parent(X,Z),parent(Z,W),parent(W,Y).
  • 16. Β. Θεωρία 4. Κανόνες (3. Αναδροµικοί Κανόνες) Έτσι ορίζουµε την σχέση πρόγονος ως εξής: Είναι συνήθης πρακτική όταν γράφουµε την αναδροµή να γράφουµε πρώτα τον κανόνα τερµατισµού της αναδροµής και έπειτα τον αναδροµικό κανόνα. Ας δούµε πως θα εκτελέσει η prolog το ερώτηµα ancestor(tom,pat). 16∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή ancestor(X,Y):- parent(X,Y). ancestor(X,Y):- parent(X,Z),ancestor(Z,Y).
  • 17. Β. Θεωρία 4. Κανόνες (3. Εκτέλεση Προγράµµατος) 17∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 1: Εισαγωγή Ασκηση: ∆ώστε το πλήρες δένδρο εκτέλεσης του ερωτήµατος ? - ancestor(tom,pat).