2. ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
Β.Θεωρία
1. Τελεστές
1. Αριθµητικοί Τελεστές
2. Σχεσιακοί Τελεστές
3. Λογικοί Τελεστές
4. Ο τελεστής is
Γ.Ασκήσεις
2∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
3. A. Θεωρία
1. Τελεστές
1. Αριθµητικοί Τελεστές
Στην Prolog ορίζονται οι αριθµητικοί τελεστές:
Έχουµε δικαίωµα να γράψουµε οποιαδήποτε παράσταση χρησιµοποιώντας τους παραπάνω
τελεστές, π.χ. 4+5*3-2 που εφαρµόζοντας την γνωστή προτεραιότητα των τελεστών (πρώτα
πολ/µος, διαίρεση και mod έπειτα πρόσθεση και αφαίρεση) µεταφράζεται από την Prolog σε
προθεµατική µορφή ως +(4,-(*(5,3),2)) όπου οι τελεστές είναι συναρτησιακά σύµβολα
3∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
Σύµβολο Ερµηνεία
+ Πρόσθεση
- Αφαίρεση
* Πολλαπλασιασµός
/ ∆ιαίρεση
// Modulo
4. A. Θεωρία
1. Τελεστές
2. Σχεσιακοί Τελεστές
Στην Prolog ορίζονται οι σχεσιακοί τελεστές:
Οι τελεστές αυτοί εφαρµόζονται για τη σύγκριση αριθµών. Σε αντίθεση µε το Α=Β και το +(Α=Β)
που αντίστοιχα ελέγχουν αν οι µεταβλητές Α και Β έχουν ενοποιηθεί µε τις ίδιες σταθερές.
4∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
Σύµβολο Ερµηνεία
> Μεγαλύτερο από
< Μικρότερο από
>= Μεγαλύτερο ή ίσο
<= Μικρότερο ή ίσο
=:= Ίσον
= ∆ιάφορον
5. A. Θεωρία
1. Τελεστές
3. Λογικοί Τελεστές
Έχουµε ήδη µελετήσει τους λογικούς τελεστές:
Τέλος ο τελεστής =, αποκαλείται τελεστής ενοποίησης και αληθεύει αν οι συµβολοσειρές που
έχουν αριστερά και δεξιά έχουν την ίδια τιµή.
5∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
Σύµβολο Ερµηνεία
, Λογικό AND
; Λογικό OR
+ Λογικό NOT
6. A. Θεωρία
1. Τελεστές
4. Ο τελεστής is
Ένας ειδικός τελεστής είναι ο is. Είναι ο τελεστής που δίνει εντολή στην Prolog να υπολογίσει
µια αριθµητική ποσότητα:
Παρατηρήστε παραπάνω:
To = ενοποιεί τον όρο στα δεξίά µε την µεταβλητή X
To is υπολογίζει τον όρο στα δεξιά και αναθέτει την τιµή στην µεταβλητή Χ
6∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
?- X=2*3
X=2*3.
?- X is 2*3.
X=6
7. A. Θεωρία
1. Τελεστές
4. Ο τελεστής is
Ο ορισµός του τελεστή is µας επιτρέπει να κατασκευάσουµε κατηγορήµατα που κάνουν
υπολογισµό ποσοτήτων. Π.χ. ο ορισµός του κατηγορήµατος length είναι:
(Άσκηση 1) Κατασκευάστε το δένδρο εκτέλεσης του ερωτήµατος:
(Ασκηση 2) Κατασκευάστε το κατηγόρηµα sumlist/2 να αληθεύει αν το άθροισµα των
στοιχείων της λίστας που δέχεται ως πρώτο όρισµα να ισούται µε την µεταβλητή του 2ου
ορίσµατος.
7∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
length([],0).
length([X|L],N):-
length(L,M),
N is M+1.
? – length([1,2],N).
8. B.Ασκήσεις
Εφαρµογή 1
Θέλουµε να βρούµε µε πόσους τρόπους µπορούµε να «χαλάσουµε» 1 Ευρώ σε ψιλά. Έχουµε
γράψει το ακόλουθο πρόγραµµα σε Prolog και µας έχουν διαβεβαιώσει πως όχι µόνο τρέχει, αλλά
κάνει και πολλά παραπάνω απ’ όσα θέλουµε, απλά δε µπορεί να χειριστεί πεντάλεπτα και δίλεπτα.
(α) Τι θ’ απαντήσει το πρόγραµµα στο παρακάτω ερώτηµα και γιατί;
?- change([0,2,2,P]).
(β) Τι θ’ απαντήσει το πρόγραµµα στο παρακάτω ερώτηµα και γιατί;
?- change([0,X,5,P]).
(γ) Αλλάξτε το παραπάνω πρόγραµµα ώστε να «χαλάει» οτιδήποτε κάτω του 1 Ευρώ σε ψιλά. Μην
ασχοληθείτε µε έλεγχο της εισόδου.
8∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
change([C50,C20,C10,P]) :-
member(C50,[0,1,2]), /* 50 λεπτά */
member(C20,[0,1,2,3,4,5]), /* 20 λεπτά */
member(C10,[0,1,2,3,4,5,6,7,8,9,10]) , /* 10 λεπτά */
S is 50*C50 + 20*C20 +10*C10,
S =< 100,
P is 100-S.
9. B.Ασκήσεις
Εφαρµογή 2
Ορίστε το κατηγόρηµα max/3, το οποίο όταν δέχεται 3 ορίσµατα, έστω X,Y και Z να αληθεύει αν το
Z έχει την ίδια τιµή µε τον µεγαλύτερο από τους Χ,Υ
9∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
10. B.Ασκήσεις
Εφαρµογή 3
Ορίστε το κατηγόρηµα prod/2. To prod(L,P) επιστρέφει στο P το γινόµενο των αριθµών που είναι
στοιχεία της λίστας L
10∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
11. B.Ασκήσεις
Εφαρµογή 4
Ορίστε το κατηγόρηµα factorial/2. To factorial(N,F) επιστρέφει στο F το παραγοντικό του ακεραίου Ν
11∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
12. B.Ασκήσεις
Εφαρµογή 5
Ορίστε το κατηγόρηµα maxlist/2. To maxlist(L,M) επιστρέφει στο Μ τον µεγιστο ακέραιο της λίστας L
12∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog
13. B.Ασκήσεις
Εφαρµογή 6
Ορίστε το κατηγόρηµα first_n/3. To first_n(N,L1,L2) επιστρέφει στην λίστα L2 τα πρώτα N στοιχεία
της λίστας L1
13∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 4: Τελεστές και Αριθµητική σε Prolog