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

Τα μέρη της Prolog

Η γλώσσα προγραμματισμού Prolog αποτελείται από:

Editor

Για να γράψετε ένα πρόγραμμα Prolog πρέπει να χρησιμοποιήσετε έναν Editor. Μπορείτε να χρησιμοποιήσετε έναν οποιοδήποτε Εditor όπως το Notepad ή κάποιον άλλο επεξεργαστή κειμένου όπως το WordPad με την προϋπόθεση ότι το πρόγραμμά σας το σώζεται ως plain text. Επίσης μπορείτε να χρησιμοποιήσετε ολοκληρωμένα περιβάλλοντα συγγραφής κώδικα (IDE) όπως το PDT το οποίο είναι βασισμένο στην ανοικτή πλατφόρμα ανάπτυξης λογισμικού eclipse (το συγκεκριμένο αυτό ολοκληρωμένο περιβάλλον δίνει τη δυνατότητα ανάπτυξης προγραμμάτων βασισμένων σε κώδικά Java, C++ και Prolog).

Οι περισσότερες σύγχρονες εκδόσεις Prolog (SWI-Prolog, SICStus, AMZI κ.α.) διαθέτουν το δικό τους ολοκληρωμένο περιβάλλον ανάπτυξης κώδικα.

H SWI-Prolog, την οποία και χρησιμοποιούμε στο μάθημά μας, διαθέτει τον ενσωματωμένο Editor PceEmac.
Για να δουλέψετε σε αυτόν θα πρέπει πρώτα να έχετε κατεβάσει και εγκαταστήσει την SWI-Prolog.

Για να δημιουργήσετε ένα καινούργιο αρχείο, επιλέξτε από το μενού της Prolog File --> New και μετά εισάγετε το όνομα του αρχείου που θέλετε να δημιουργηθεί (για παράδειγμα test.pl).

Δημιουργώντας ένα καινούργιο αρχείο ή επιλέγοντας ένα ήδη υπάρχον, η SWI-Prolog χωρίζεται σε δύο μέρη (όπως φαίνεται στη παρακάτω οθόνη). Στο πρώτο μέρος τρέχουμε το πρόγραμμά μας (ή πιο σωστά κάνουμε ερωτήσεις στη Prolog) ενώ στο δεύτερο μέρος γράφουμε το πρόγραμμά μας. Το πρώτο μέρος ονομάζεται διερμηνέας (Interpreter) της Prolog.

Για παράδειγμα κάντε copy-paste στον Editor το παρακάτω πρόγραμμα:

lesson(calculus, 6).
lesson(data_bases, 5).
lesson(discrete, 5).
lesson(prolog, 2).

lab_lesson(Lesson):-lesson(Lesson,Hours), Hours<3.

Για να σώσετε το πρόγραμμά σας επιλέξτε File->Save as από τον Editor της Prolog.

Data Base

Το παραπάνω πρόγραμμα αποτελείται από ένα σύνολο γεγονότων και ένα κανόνα.

Αυτή η γνώση αφορά της ώρες διδασκαλίας των μαθημάτων Μαθηματική Ανάλυση, Βάσεων Δεδομένων, Διακριτά και Prolog και ότι αν οι ώρες διδασκαλίας ενός μαθήματος είναι λιγότερες από τρεις τότε είναι εργαστηριακό.

Για ν' είναι η Prolog σε θέση να χρησιμοποιήσει τη γνώση αυτή, θα πρέπει τα παραπάνω γεγονότα και ο κανόνας να εισαχθεί στη βάση δεδομένων της Prolog. Αυτό γίνεται κάνοντας consult το πρόγραμμα που γράψατε στον Editor. Το consult μπορεί να πραγματοποιηθεί με δύο τρόπους: είτε πληκτρολογώντας στον Interpreter της Prolog την εντολή consult('path\test.pl') όπου path είναι το μονοπάτι του φακέλου που αποθηκεύσατε το πρόγραμμα, είτε επιλέγοντας από το μενού του Editor την εντολή Compile buffer.

Αν το πρόγραμμά μας δεν έχει λάθη τότε η Prolog απαντάει:

% test.pl compiled 0.00 sec, 0 bytes

και είμαστε έτοιμοι να κάνουμε ερωτήσεις στη Prolog (βλ. παρακάτω).

Η δομή ενός προγράμματος Prolog περιγράφετε στo επόμενο Κεφάλαιο.

Interpreter

Έχοντας εισάγει τη γνώση μας σχετικά με τις ώρες διδασκαλίας στη βάση δεδομένων της Prolog, είμαστε έτοιμοι να κάνουμε ερωτήσεις.

Οι ερωτήσεις αυτές γίνονται πάντα από τον Interpreter της Prolog μετά το σύμβολο ?- .

Για παράδειγμα θα μπορούσαμε να ρωτήσουμε "ποιό μάθημα έχει πέντε ώρες διδασκαλίας" με τον ακόλουθο τρόπο:

?- lesson(X,5).

X = data_bases ;

X = discrete

Yes

όπου Χ είναι μεταβλητή. Κάνοντας την ερώτηση αυτή, ψάχνει στη βάση δεδομένων (ακολουθώντας τη σειρά με την οποία έχουμε εισάγει τα γεγονότα) για μαθήματα που οι ώρες διδασκαλίας τους είναι 5. Το πρώτο μάθημα που βρίσκει είναι το Βάσεις Δεδομένων, ενώ αν πατήσουμε το πλήκτρο ; θα μας δώσει και το επόμενο μάθημα που είναι τα Διακριτά.

Μία άλλη ερώτηση που μπορούμε να κάνουμε είναι "Ποια μαθήματα είναι εργαστηριακά?"

?- lab_lesson(L).

L = prolog ;

No

Στη περίπτωση αυτή η Prolog χρησιμοποιεί τον κανόνα lab_lesson(Lesson):-lesson(Lesson,Hours), Hours<3 για να εξάγει τη πληροφορία ότι το μάθημα Prolog είναι εργαστηριακό, ενώ πατώντας πάλι το πλήκτρο ; η Prolog απαντά ότι δε γνωρίζει άλλο εργαστηριακό μάθημα.

Τέλος μπορούμε να κάνουμε σύνθετες ερωτήσεις, όπως για παράδειγμα "ποια εργαστηριακά μαθήματα έχουν δύο ώρες διδασκαλίας?".

?- lab_lesson(L), lesson(L,H), H==2.

L = prolog ;

No

Για να ενημερώσουμε τη βάση μας με ένα ακόμα μάθημα (για παράδειγμα το lesson(linear_algebra,5).) μπορούμε να το εισάγουμε είτε κατευθείαν από τον Interpreter γράφοντας:

?- assert(lesson(linear_algebra,5)).

είτε από τον Editor και μετά επιλέγοντας πάλι από το μενού την επιλογή consult buffer. Στη πρώτη περίπτωση το γεγονός lesson(linear_algebra,5) εισάγεται μόνο στη βάση δεδομένων της Prolog, ενώ στη δεύτερη εγγράφεται και στο αρχείο test.pl.

Για να δείτε όλα τα γεγονότα που έχουν εισαχθεί στη βάση δεδομένων πληκτρολογίστε:

?- listing.

ενώ για να διακόψτε το τρέξιμο ενός προγράμματος πληκτρολογίστε Ctrl+C και μετά πατήστε το πλήκτρο a (abort).


Τελευταία ενημέρωση σελίδας: 30/10/2009