© Ευάγγελος Κουράκος Μαυρομιχάλης, 2006
Προηγούμενο | Περιεχόμενα | Επόμενο
 

Ενσωματωμένες Διαδικασίες

Διαδικασίες εισόδου/εξόδου

Η Prolog παρέχει τρεις ενσωματωμένες διαδικασίες για εκτύπωση δεδομένων στην οθόνη: τη write/1, τη writeln/1 και την nl/0. Η πρώτη εκτυπώνει τα δεδομένα χωρίς ν’ αλλάξει γραμμή, η δεύτερη εκτυπώνει τα δεδομένα και μετά πάει στην αμέσως επόμενη γραμμή, ενώ η τελευταία δεν εκτυπώνει τίποτα αλλά απλώς αλλάζει γραμμή (next line).

Αν κατά τη διάρκεια εκτέλεσης ενός προγράμματος χρειάζεται ο χρήστης να εισάγει δεδομένα, τότε μπορείτε να χρησιμοποιήσετε την ενσωματωμένη διαδικασία read/1. Με την εντολή αυτή η Prolog σταματάει την εκτέλεση του προγράμματος και εμφανίζει το prompt |: περιμένοντας το χρήστη να δώσει έναν όρο της Prolog. Προσοχή: για να δεχθεί τον όρο η Prolog στο τέλος του όρου και πριν πατήσουμε το enter θα πρέπει να εισάγουμε μία τελεία, ένδειξη ότι έχουμε τελειώσει την πρότασή μας.

Παρακάτω δίνουμε ένα παράδειγμα χρήσης των παραπάνω διαδικασιών:

hello_world:-
   write('Write your name: '),
   read(X),
   write('Hello world '), writeln(X), nl,
   write('Which is your favorite lesson? '),
   read(Y),
   write(like(X,Y)).

Αριθμητικές ενσωματωμένες διαδικασίες

Χ is Y
Ανάθεση αριθμητικής τιμής σε μεταβλητή. Η μεταβλητή Χ παίρνει τη τιμή της παράστασης Υ.
Για παράδειγμα κάντε τις ακόλουθες ερωτήσεις:
?- X is (1+2)/4.
Απάντηση: X = 0.75
?- X is 4 mod 2.
Απάντηση: X=0

Εκτός από τους τελεστές +,-,*,/ μπορούν να χρησιμοποιηθούν οι ακόλουθοι (πάντα στο δεξή μέλος της is):

Expr1 mod Expr2
Επιστρέφει το υπόλοιπο της διαίρεσης Expr1/Expr2.

abs(Expr)
Επιστρέφει την απόλυτη τιμή της Expr.

sign(Expr)
Επιστρέφει -1 αν Expr < 0, 1 αν Expr > 0 και 0 αν Expr = 0.

log(Expr)
Επιστρέφει το ln Expr.

log10(Expr)
Επιστρέφει το log Expr.

exp(Expr)
Επιστρέφει το e^Expr

Expr1?Expr2
Επιστρέφει τη δύναμη.

pi
Υπολογίζει τη σταθερά π (3.141593).

e
Υπολογίζει το σταθερά e (2.718282).

max(Expr1, Expr2)
Βρίσκει το μέγιστο των παραστάσεων Expr1 και Expr2.

min(Expr1, Expr2)
Βρίσκει το ελάχιστο των παραστάσεων Expr1 και Expr2.

random(Expr)
Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ του 0 και του Expr.

round(Expr)
Υπολογίζει την παράσταση Expr και μετά τη στρογγυλωποιεί στο πλησιέστερο ακέραιο.

integer(Expr)
Επιστρέφει το ακέραιο μέρος της Expr.

sqrt(Expr)
Επιστρέφει τη ρίζα της Expr.

sin(Expr)
Ημίτονο.

cos(Expr)
Συνημίτονο.

tan(Expr)
Εφαπτομένη.

Σύγκριση όρων στη Prolog

Σύγκριση αριθμητικών παραστάσεων:

X<Y
Αληθεύει αν ο αριθμός Χ είναι μικρότερος από τον αριθμό Υ.

X>Y
Αληθεύει αν ο αριθμός Χ είναι μεγαλύτερος από τον αριθμό Υ.

X=<Y
Αληθεύει αν ο αριθμός Χ είναι μικρότερος ή ίσος από τον αριθμό Υ.

X>=Y
Αληθεύει αν ο αριθμός Χ είναι μεγαλύτερος ή ίσος από τον αριθμό Υ.

Χ=:=Υ
Αληθεύει αν ο αριθμός Χ είναι ίσος με τον αριθμό Υ.

Χ=\=Υ
Αληθεύει αν ο αριθμός Χ είναι διάφορος του αριθμού Υ.

Σημείωση: αν όπου Χ και Υ έχουμε σύνθετες αριθμητικές παραστάσεις (π.χ. (3+5)/9) τότε η Prolog κάνει πρώτα τις πράξεις και μετά συγκρίνει τους όρους.

Σύγκριση σύνθετων όρων της Prolog:

Χ = Υ
Αληθεύει αν ο όρος X ταυτοποιείται με τον όρο Υ. Αν η μεταβλητή Χ (ή η Υ) έχει πάρει ήδη τιμή τότε γίνεται ανάθεση της τιμής αυτής στη μεταβλητή Υ (ή στη μεταβλητή Χ αντίστοιχα).  Το ίδιο γίνεται και για οποιαδήποτε άλλη μεταβλητή που μπορεί να περιέχει ο όρος Χ.

Για παράδειγμα κάντε τις ακόλουθες ερωτήσεις:
?- a(X,k)=Y.         Απάντηση: Y=a(X,k)
?- a(X,k)=a(Y,k).    Απάντηση: X=Y
?- a(m,k)=a(X,k).    Απάντηση: X=m
?- X=(1+2)/4.        Απάντηση: X=(1+2)/4  (ενοποιεί τη μεταβλητή Χ με τη παράσταση και όχι με τη τιμή της παράστασης αυτής)

Χ==Υ
Αληθεύει αν ο όρος X ταυτοποιείται με τον όρο Υ και κάθε μεταβλητή του Χ μοιράζεται την ίδια θέση μνήμης με την αντίστοιχη μεταβλητή του Υ. Για παράδειγμα:
a(X,k)==a(X,k)       true
a(X,k)==a(Y,k)       false
a(X,k)==a(t,k)       false

Χ \== Υ
Ισοδύναμο με το not(Χ==Υ).

Χ =@= Υ
Αληθεύει αν ο όρος X έχει την ίδια δομή με τον όρο Υ. Για παράδειγμα:
Α =@= B       true
a =@= A       false
x(A,A) =@= x(B,C)       false  (η μεταβλητή Β δεν ενοποιείται με την C μέσα στον ίδιο όρο)
x(A,A) =@= x(B,B)       true
x(A,B) =@= x(C,D)       true

Χ \=@= Υ
Ισοδύναμο με το not(Χ=@=Υ).

 


Τελευταία ενημέρωση σελίδας: 26/11/2007