Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Σχετικά έγγραφα
Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Εναλλακτικό Παράδειγμα Επιλογής Δώρου. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Περιορισμοί στις Συνθήκες Κανόνων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Οικονόμου Παναγιώτης. Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου.

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Διαχείρισης καταστάσεων ανάγκης σε συγκρότημα κτηρίων

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Προτεραιότητα Κανόνων και Στρατηγικές Επίλυσης Συγκρούσεων

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Πέτρα Ψαλίδι - Χαρτί. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Εισαγωγή στο κέλυφος ανάπτυξης έµπειρων συστηµάτων του CLIPS

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Στοιβάσματος Κιβωτίων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Π1 Το Σύστηµα Κανόνων CLIPS

Ευφυής Προγραμματισμός

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Κίνησης Robot. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Ευφυής Προγραμματισμός

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Εισαγωγή στους Υπολογιστές

Λειτουργικά Συστήματα

CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Ευφυής Προγραμματισμός

Δομημένος Προγραμματισμός

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Εισαγωγή στον Προγραμματισμό

Πληρουορική Γ Γσμμασίοσ

Θέματα Προγραμματισμού Η/Υ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Λειτουργικά Συστήματα

Πληροφορική ΙΙ Θεματική Ενότητα 3

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Υπολογιστικά Συστήματα

Ευφυής Προγραμματισμός

Υπολογιστικά Συστήματα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Ευφυής Προγραμματισμός

Πληροφορική ΙΙ Θεματική Ενότητα 5

Εισαγωγή στους Υπολογιστές

Εισαγωγή στην πληροφορική

Ηλεκτρονικοί Υπολογιστές IV

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Εισαγωγή στον Προγραμματισμό με C++

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Δομημένος Προγραμματισμός

Προχωρημένες έννοιες προγραμματισμού σε C

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Δομημένος Προγραμματισμός

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

Ηλεκτρονικοί Υπολογιστές II

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Ηλεκτρονικοί Υπολογιστές I

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

ΑΓΓΛΙΚΑ Ι. Ενότητα 7α: Impact of the Internet on Economic Education. Ζωή Κανταρίδου Τμήμα Εφαρμοσμένης Πληροφορικής

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στον Προγραμματισμό με C++

Οντοκεντρικός Προγραμματισμός

Δομημένος Προγραμματισμός

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Shell Scripts: loops / if / test

4 η ΕΝΟΤΗΤΑ Μητρώα και συνθήκες στο MATLAB

Σχεδίαση με Ηλεκτρονικούς Υπόλογιστές

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Ηλεκτρονικοί Υπολογιστές

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS Νίκος Βασιλειάδης, Αναπλ. Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Συναρτήσεις στο CLIPS

Συναρτήσεις στο CLIPS Οι συναρτήσεις στο CLIPS έχουν παρόμοια μορφή με εκείνη των συναρτήσεων στην LISP Μορφή Κλήσης (<όνομα συνάρτησης> όρισμα1 όρισμαν) Τιμή: επιστρέφει στο σημείο στο οποίο εμφανίζεται η συνάρτηση CLIPS> (assert (The number (+ 2 3))) <Fact-0> CLIPS> (facts) f-0 (The number 5) For a total of 1 fact. 5

Build-in Συναρτήσεις Ορισμένες από το σύστημα Βασικές Αριθμητικές Συναρτήσεις (+ <ορίσματα>) (- <ορίσματα>) (* <ορίσματα>) (/ <ορίσματα>) Συναρτήσεις σύγκρισης αριθμών (= <ορίσματα>) (< <ορίσματα>) (>= <ορίσματα>) (> <ορίσματα>) (<= <ορίσματα>) (<> <ορίσματα>) Οι ακόλουθες συναρτήσεις επιστρέφουν TRUE (>= 5 5 4 2 2 1) (<= 2 3 3 4 6) (<> 3 5) 6

Λογικές Συναρτήσεις Δυνατότητα να εκφραστούν πολύπλοκες συνθήκες κανόνων (and <ορίσματα>) (or <ορίσματα>) (not <όρισμα>) (eq <ορίσματα>) (neq <ορίσματα>) Οι ακόλουθες συναρτήσεις επιστρέφουν TRUE (and (>= 5 5) (> 3 2 1) (= 10 10)) (and (not (= 10 7)) (= 9 9)) 7

Λογικές Συναρτήσεις (defrule days (month Jan mon) (or (hour 12) (hour 13)) => (assert (day is Monday noon time)) ) (defrule days (month Jan mon) (or (and (hour 12) (lunch break)) (and (hour 17) (departure time)) ) => (assert (office closed at this hour)) ) 8

Συναρτήσεις Ελέγχου Τύπου Όταν πρέπει να εξακριβωθεί ο τύπος της τιμής μιας μεταβλητής (numberp <όρισμα>) (integerp <όρισμα>) (floatp <όρισμα>) (stringp <όρισμα>) (symbolp <όρισμα>) Οι ακόλουθες συναρτήσεις επιστρέφουν TRUE (numberp 4) (symbolp day) 9

Παραδείγματα υπολογισμού συναρτήσεων (+ 6 5 9) 20 (- 4 6 8) -10 (* 2 3 (+ 1 2)) 18 (< 2 6 8) TRUE (eq 8 8) TRUE (eq 5 5.0) FALSE (= 4 4.0) TRUE (and (eq 2 3)(= 1 1)) FALSE (and (eq 2 2) (< 2 3)) TRUE Τίτλος Μαθήματος Τμήμα 10

Συναρτήσεις χειρισμού πολλαπλών τιμών (create$ <ορίσματα>) Επιστρέφει μια τιμή (λίστα) που μπορεί να ανατεθεί σε μεταβλητή πολλαπλών τιμών, την οποία δημιουργεί από τα ορίσματα. CLIPS> (create$ the day is (grey as it was)) (the day is grey as it was) (explode$ <string>) Επιστρέφει μια πολλαπλή τιμή (λίστα) την οποία δημιουργεί από αλφαριθμητικό. CLIPS> (explode$ "the night was blue") (the night was blue) 11

Συναρτήσεις χειρισμού πολλαπλών (implode$ <multivalue>) Επιστρέφει το αντίστοιχο αλφαριθμητικό από μια πολλαπλή τιμή. Είναι η αντίθετη εντολή της explode CLIPS> (implode$ (create$ the night was blue)) "the night was blue Είναι όμοια με: τιμών (implode$ (explode$ "the night was blue")) 12

Συναρτήσεις χειρισμού πολλαπλών τιμών (nth$ N <multivalue>) Επιστρέφει το Ν-οστό πεδίο μιας πολλαπλής τιμής CLIPS> (nth$ 2 (create$ 3 4 5)) 4 (member$ <symbol> <multivalue>) Επιστρέφει τη θέση του πεδίου <symbol> μέσα στην τιμή <multivalue> εφόσον αυτό υπάρχει. Εάν δεν υπάρχει επιστρέφει FALSE. CLIPS>(member$ c (create$ a b c)) 3 13

Συναρτήσεις χειρισμού πολλαπλών τιμών (first$ <multivalue>) Επιστρέφει το πρώτο στοιχείο μιας πολλαπλής τιμής, αλλά σε μορφή λίστας. CLIPS> (first$ (create$ 3 4 5)) (3) (rest$ <multivalue>) Επιστρέφει τα υπόλοιπα στοιχεία εκτός από το πρώτο στοιχείο μιας πολλαπλής τιμής. CLIPS>(rest$ (create$ 3 4 5)) (4 5) 14

Συναρτήσεις εισόδου - εξόδου (printout <device> <expression>) Αποστέλλει την έκφραση <expression> στη συσκευή <device> Η συσκευή μπορεί να είναι ένα αρχείο ή η οθόνη Για οθόνη, χρησιμοποιούμε t (terminal) (printout t "The day was "?type crlf) The day was sunny Το σύμβολο crlf δηλώνει αλλαγή γραμμής 15

Συναρτήσεις εισόδου - εξόδου (read) Εισάγει σύμβολο από τo πληκτρολόγιο Συνήθως χρησιμοποιείται σε συνδυασμό με την εντολή bind, για ανάθεση τιμής σε μεταβλητή στις ενέργειες ενός κανόνα (defrule get-user-answer (initial-fact) => (printout t "What s your name: ") (bind?name (read)) (assert (user-name?name)) ) 16

Ανάθεση τιμής σε μεταβλητή (bind <variable> <value>) Ανατίθεται η τιμή <value> σε μια μεταβλητή <variable> στις ενέργειες των κανόνων (defrule rule1 "example rule" (oldcost?oldcost) (newcost?newcost) => (bind?total_cost (+?newcost?oldcost)) (assert (cost?total_cost)) (printout t "The total cost is "?total_cost crlf) ) 17

Συναρτήσεις εισόδου - εξόδου Η (read) επιστρέφει SYMBOL Αν πληκτρολογηθούν λέξεις με κενό μεταξύ τους, επιστρέφει μόνο την πρώτη και αγνοεί τις υπόλοιπες Π.χ. CLIPS> (read) Πληκτρολογούμε: hello there Επιστρέφει: hello 18

Συναρτήσεις εισόδου - εξόδου (readline) Διαβάζει οτιδήποτε πληκτρολογηθεί μέχρι να πατηθεί enter και επιστρέφει ένα string Π.χ. CLIPS> (readline) Πληκτρολογούμε: hello there Επιστρέφει: "hello there 19

Αρχεία σε CLIPS Είσοδος/έξοδος μπορεί να γίνει και από/προς εξωτερικά αρχεία (κειμένου) Πριν την πρόσβαση σε ένα αρχείο, αυτό πρέπει να ανοιχθεί κατάλληλα (open mydata.dat data r ) mydata.dat : το όνομα του αρχείου Μπορεί να προστεθεί και path data: identifier (λογικό όνομα) του αρχείου για όση ώρα θα είναι ανοιχτό Χρησιμοποιείται σε συνδυασμό με εντολές read / printout r το αρχείο ανοίχθηκε μόνο για ανάγνωση (read) 20

Αρχεία σε CLIPS Η συνάρτηση open επιστρέφει: TRUE αν ανοίξει το αρχείο κανονικά FALSE αν όχι (π.χ. δεν υπάρχει) Τρόποι προσπέλασης αρχείου r: read only ανάγνωση μόνο w: write only εγγραφή μόνο r+: read/write - ανάγνωση και εγγραφή a: append only μόνο προσθήκη εγγραφών στο τέλος του αρχείου 21

Αρχεία σε CLIPS Συνάρτηση (close) Αν δεν εκτελεστεί μπορεί να χαθούν εγγραφές στο αρχείο Χρήση: (close data) Εγγραφή σε αρχείο (printout data Hello world crlf) Ανάγνωση από αρχείο (bind?line (readline data)) (bind?word (read data)) 22

Έλεγχος ροής προγράμματος Συνάρτηση while (while (condition) do ;συνθήκη (command 1) ;εντολή 1... (command n) ;εντολή n ) Όσο ικανοποιείται μία συνθήκη, εκτελείται ένα σύνολο συναρτήσεων. Είναι απαραίτητη η bind για να αλλάξει τις τιμές μεταβλητών που συμμετέχουν στη συνθήκη 23

Έλεγχος ροής προγράμματος Συνάρτηση while Έστω ότι υπάρχει ένα γεγονός (num 1) Τύπωσε όλους τους αριθμούς από το 1 μέχρι το 9, με τη φράση "the num is:" σαν πρόθεμα (defrule test (num?n) => (while (<?n 10) do (printout t "the num is: "?n crlf) (bind?n (+ 1?n)) ) ) 24

(if Έλεγχος ροής προγράμματος Συνάρτηση if-then-else (condition) ;συνθήκη then (command 1) ;εντολή 1... (command M) ;εντολή M else (command Α) ;εντολή A... (command N) ;εντολή N ) Εκτελεί υπό συνθήκη κάποια σύνολα εντολών 25

Έλεγχος ροής προγράμματος Συνάρτηση if-then-else Τύπωσε positive, negative ή zero, αν ο αριθμός?n είναι μεγαλύτερος, μικρότερος ή ίσος με μηδέν (defrule sign (num?n) => (if (>?n 0) then (printout t "positive" crlf) else (if (<?n 0) then (printout t "negative" crlf) else (printout t "zero" crlf)) ) ) 26

Ορισμός Συναρτήσεων (deffunction <function name> (<variables>) (command 1)... (command n) ) H συνάρτηση επιστρέφει την τιμή της τελευταίας εντολής που εκτελείται (deffunction mean-value (?v1?v2?v3?v4) ( / (+?v1?v2?v3?v4) 4) ) CLIPS> (mean-value 4 5 6 7) 5.5 27

Ορισμός Συναρτήσεων Παράδειγμα (deffunction deviation (?v1?v2?v3?v4) (bind?avg (mean-value?v1?v2?v3?v4)) (bind?d1 (-?avg?v1)) (bind?d2 (-?avg?v2)) (bind?d3 (-?avg?v3)) (bind?d4 (-?avg?v4)) (create$?avg?d1?d2?d3?d4) ) CLIPS > (deviation 5 6 7 8) (6.5 1.5 0.5 0.5 1.5) 28

Παράδειγμα Επιλογής Δώρου Συνάρτηση Ερώτησης προς Χρήστη (deffunction ask-question (?question $?allowed-values) (printout t?question) (bind?answer (read)) (if (lexemep?answer) then (bind?answer (lowcase?answer))) (while (not (member?answer?allowedvalues)) do (printout t?question) (bind?answer (read)) (if (lexemep?answer) then (bind?answer (lowcase?answer))))?answer) 29

(defrule questions "ask questions to user" (initial-fact) => (bind?music (ask-question "Does he/she likes music (yes/no)?" yes no) ) (if (eq?music yes) then (assert (like music ) Παράδειγμα Επιλογής Δώρου Κανόνας Εισαγωγής Δεδομένων )) (bind?educated no) ) (assert (educated?educated)) (bind?expen (ask-question "Is he/she educated (yes/no)?" yes (ask-question "Do you want an expensive gift (yes/no)?" yes no) ) (if (eq?expen yes) then (assert (price expensive)) ) (printout t "How many years old is he/she?") (bind?age (read)) (assert (age?age)) 30

Παράδειγμα Επιλογής Δώρου Κανόνας Εκτύπωσης Αποτελεσμάτων (defrule printresult "a rule to print out the results" (gift?x) => (printout t "A possible gift is "?x crlf) ) Λόγω της μεταβλητής?x θα τυπωθούν όλα τα δώρα 31

Παράδειγμα Επιλογής Δώρου Νέος Τρόπος Αλληλεπίδρασης CLIPS> (load "gift_adv.clp") TRUE CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) For a total of 1 fact. CLIPS> (run) Does he/she likes music (yes/no)? yes Is he/she educated (yes/no)? yes Do you want an expensive gift (yes/no)? no How many years old is he/she? 19 A possible gift is CD A possible gift is book 32

Παράδειγμα Επιλογής Δώρου Νέος Τρόπος Αλληλεπίδρασης CLIPS> (facts) f-0 (initial-fact) f-1 (music yes) f-2 (educated yes) f-3 (age 19) f-4 (agegroup middle) f-5 (gift CD) f-6 (gift book) For a total of 7 facts. 33

Παράδειγμα Επιλογής Δώρου Κανόνες Ηλικιακών Ομάδων με test Παλιός Κανόνας (defrule middle "middle age rule" (age?x) => (if (and (>?x 14) (<?x 35)) then (assert (agegroup middle)))) Νέος Κανόνας (defrule middle "middle age rule" (age?x) (test (and (>?x 14) (<?x 35))) => (assert (agegroup middle))) 34

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, 17/3/2014