Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A CLIPS keretrendszer www.ghg.net/clips.

Hasonló előadás


Az előadások a következő témára: "A CLIPS keretrendszer www.ghg.net/clips."— Előadás másolata:

1 A CLIPS keretrendszer

2 CLIPS "C" Language Integration Production System

3 COOL A CLIPS továbbfejlesztése az objektum orientált paradigmák mentén.

4 CLIPS 6.23

5 Dialog Window Ez a CLIPS Shell, itt fogadja a parancsokat.
Itt kapjuk a hibajelzéseket, és a megfigyelt objektumok értékeit. Nem tudjuk a sorok tartalmát visszatörlés nélkül javítani!

6 Menü Execution Gépelés nélkül itt tudunk kiadni parancsokat.
Beállíthatjuk a megfigyelni kívánt objektumokat. Futtatás lépésről lépésre….

7 Menü File Open : megnyitás szerkesztésre. Load : állomány betöltése

8 CLIPS Shell

9 Utasítások alakja ( utasítás <paraméter>* )
<paraméter> : lehet egy újabb utasítás

10 Shell parancsok (clear) – törli az CLIPS környezet beállításait.
(reset) – alaphelyzetbe állítja a CLIPS környezet beállításait. (load ”file”) – betölt egy állományt, egy CLIPS nyelven írt szöveges fájlt. (run) – futtatja az előzőleg betöltött programot

11 Programok javasolt futtatása
(clear) (load ”file”) (reset) Esetenként valami kezdő állítás, tény beállítása. (run)

12 CLIPS – forrás állomány
Megjegyzés: bármelyik sorban a ”;” jel utáni karakterek. Nincs program kezdetét ill. végét jelölő elem. Mindig azok a szabályok aktivizálódnak, melyeknél a szabály feltétele igaz.

13 (defrule) parancs - 1.clp [1]
Szabály definiálására használjuk. (defrule <szabály név> [<comment>] [<declaration>] <conditional-element>* => <action>* )

14 (defrule) parancs - 1.clp [2]
<szabály név> - valamilyen azonosító [<comment>] – nem kötelező megjegyzés [<declaration>] – nem kötelező deklaráció

15 (defrule) parancs - 1.clp [3]
<conditional-element>* - feltételek ÉS kapcsolatban <action>* - ha a feltétel teljesül, akkor ez(ek) fut(nak) le. Megj: a szabályok nevét felül definiál- hatjuk. (Az utolsó lesz az érvényes.)

16 (defrule) példa (defrule hello => (printout t "Hello vilag!" crlf))
hello – a neve Nincs feltétel megadva, mert nem kötelező. Kiírja a „Hello vilag!” szöveget, majd sort emel.

17 (printout ln kif*) Logikai név Kifejezések – ezek íródnak ki.

18 (assert fact) Tény megadása Példa
(assert (var 12)) – beállítja a var változó értékét 12-re.

19 2.clp Ez egy fa bejárására készült program.
Futtatás előtt meg kell adnunk a volt változó értékét, mint tényt. (assert (volt start)) - legyen a start csúcs a kezdő csúcs.

20 (deffact név <fact>*)
A programban olyan tényeket írhatunk elő ezzel, amelyek minden kiadott (reset) parancs hatására azt az eredményt adják, mintha az (assert <fact1>)….(assert <factn>) parancsokat adtuk volna ki.

21 (deftemplate név <mező>+)
Ezzel egy több mezőből álló struktúrát alakíthatunk ki. <mező> - (slot mezőnév) slot – egyszerű mező

22 paraméterek ? jellel kezdődő nevek Például: ?x ?y ?valami

23 3.clp Nézzük meg a 3.clp programot.

24 Adat típusok definiálása
A (deftemplate) utasítással lehet adatszerkezeteket definiálni. Nézzük meg, hogy milyen adat mezőket definiálhatunk a (slot) utasítással.

25 (slot) (slot név [<típus>] [<tartomány>]) <típus>
NUMBER – lehet INTEGER vagy FLOAT is. INTEGER – egész számok FLOAT – lebegőpontos számok STRING - karaktersorozat

26 (slot) <tartomány>
A mező által felvehető értékeket korlátozhatjuk ezzel a funkcióval.

27 (slot) – Másik alakja (slot név <felvehető értékek> <kezdőérték>) <felvehető értékek> (allowed-values x y z) : x,y,z értékeket veheti fel. <kezdőérték> (default x) : a kezdő értéke legyen x.

28 (retract xx) Töröl egy tényt a ténylistából.

29 Aritmetikai Kifejezések
(<+|*> <operandus>*) eredménye az operandusok összege, vagy szorzata. Ha INTEGER és FLOAT típust adunk össze, akkor az eredmény FLOAT típusú lesz. (<-|/> <op1> <op2>) eredménye az op1-op2 vagy op1/op2 lesz.

30 Logikai Kifejezések (not op) (and <op>* ) (or <op>*)

31 Hasonlítások – minta illesztés
Visszatérési érték TRUE vagy FALSE. (eq op1 op2) – bármilyen típusra. (neq op1 op2) – bármilyen típusra. Számtípusokra (= op1 op2), (<> op1 op2) (>= op1 op2), (<= op1 op2) (> op1 op2), (< op1 op2)

32 Értékadásnál használhatók
&:, |:, ~: Példa (y ?y&:(<> ?x (- ?y 1) )) y értéke legyen ?y, felvéve hogy ?x nem egyenlő ?y-1 -el.

33 4.clp Nézzük meg a 4.clp programot!

34 (bind változó (read)) Beolvasás konzoltól, és a beolvasott értéket a változóba tároljuk.

35 Elágazás (if <feltétel> then <utasítás> else <utasítás> ) Nem kötelező else ág.

36 Ciklus (while <feltétel> <utasítás> )
(loop-for-count (változó kezdő vég) <utasítás> )

37 Tömb $<név> Változóként: $?<név>

38 Függvény (deffunction <név> (<param1> <param2> … <paramN>) Utasítások…. (return <változó>) )

39 Kérdező függvény (deffunction kerdes (?szoveg $?allowed)
(printout t ?szoveg crlf) (bind ?v (read)) (if (= (length$ ?allowed) 0) then (return ?v) ) (while (not (member$ ?v ?allowed)) (printout t "Probald megegyszer: " ?szoveg crlf)

40 Kérdező függvény hívása
(bind ?x kerdes ”maga a kérdés” <t>) <t> = valamilyen felsorolás, azok az elemek, amelyek a kérdésre válaszként elfogadhatóak. ?x = ebben a változóban kapjuk meg a választ.

41 6.clp Az előzőekre példa.

42 Barát javasló – friend.clp
3 kérdés alapján javasol barátot.

43 Barát javasló – friend2.clp
Az előző rendszer egy másik megvalósítása.

44 Vége


Letölteni ppt "A CLIPS keretrendszer www.ghg.net/clips."

Hasonló előadás


Google Hirdetések