Sunteți pe pagina 1din 2

Lucrul cu mediul CLIPS

Activitatea 1.
S se realizeze un program n CLIPS care s gseasc toate aranjamentele posibile a patru
culori (rosu, albastru, galben, verde) luate cte trei.
Rezolvare
Rezolvarea acestei probleme cu ajutorul limbajelor procedurale cunoscute (Pascal, C, Java
etc.) presupune realizarea unui program relativ complex. Avantajul limbajului CLIPS const n
motorul de inferen bazat pe un algoritm foarte performant.
Din acest motiv sintaxa acestuia permite definirea foarte succint a unor cutri dup modele
foarte complexe. Un exemplu l constituie i problema de fa.Programul pentru rezolvarea
problemei se scrie cu ajutorul unui editor de text (eventual cel oferit de mediul de programare
CLIPS) i se scrie pe disc n directorul:
C\CLIPS\PROG cu numele ex1.clp.
Coninutul fiierului este:
(deffacts obiecte
(obiect rosu)
(obiect galben)
(obiect albastru)
(obiect verde)
)
(defrule aranjamente
(obiect ?o1)
(obiect ?o2 &~?o1)
(obiect ?o3 &~?o2 &~?o1)
=>
(printout t "(" ?o1 " " ?o2 " " ?o3 ")" crlf)
)
Dup ce programul a fost scris, se ncarc n mediul de programare CLIPS:
CLIPS> (load c:\\clips\\prog\\ex1.clp)
i dup ce se apas tasta ENTER, programul afieaz:
Defining deffacts: obiecte
Defining defrule: aranjamente +j+j+j
TRUE
Ceea ce semnific faptul c programul s-a ncrcat cu succes.
Lansarea n execuie se face astfel:
CLIPS> (reset)
CLIPS> (run)

Programul afieaz rezultatul execuiei, aranjamentele posibile a patru culori n grupe de


cte trei, ca n figura de mai jos:

Activitatea 2.
S se iniializeze o baz de cunotine cu numele i prenumele unor persoane, apoi s se
afieze persoanele cu un anumit nume de familie.
(deftemplate catalog ;aceasta este definitia catalogului
(multislot nume) (slot grupa) (slot virsta))

(deffacts inginerie ;catalogul facultatii de inginerie


(catalog (nume Gheorghian Aurel) (grupa 221) (virsta 25))
(catalog (nume Popescu Marin) (grupa 321) (virsta 27))
(catalog (nume Aurel Maties) (grupa 231) (virsta 23))
(catalog (nume Andrei Aurel) (grupa 421) (virsta 27))
(catalog (nume Andrei Vasile) (grupa 921) (virsta 50)))

(defrule caut_nume "caut persoanele cu prenumele Aurel"


(catalog (nume $?n1 Aurel) (virsta ?n3))
=>
(printout t "numele gasit este: " $?n1 " Aurel in virsta de: " ?n3 " ani" crlf))

S-ar putea să vă placă și