Znalostní technologie II.
 Rozcestnik                   Pár slov ...                   Znalostní technologie I.                   Znalostní technologie III.                   Znalostní technologie IV.                   Další zdroje                  
Dnes je:        Aktuální čas: 00:00       Moudra: 

LEKCE 12.

Náplň lekce: Příkaz MODIFY


Charakteristika příkazu MODIFY

Tento příkaz je obdobou příkazu duplicate. Funguje asi následovně. Dejme tomu, že bychom chtěli změnit bydliště osoby (ulici a město) a přitom chtěli zachovávat JEN aktualizovanou verzi bydliště osoby. To lze udělat s použitím příkazu modify. Jestliže bychom pro tento případ použili příkaz duplicate, pak bychom v bázi faktů měli starou adresu osoby, ale i tu novou (což by nemuselo být na škodu, ale asi bychom se těžko vyznali v tom, která je ta aktuální adresa - platná právě teď). Je tedy lepší použít příkaz modify - starý fakt zmizí, nový zaujme jeho místo.

Syntaxe modify

Kdybychom v příkladu v minulé lekci místo duplicate použili modify, pak by to mohlo vypadat asi takto:

Příkaz duplicate

Rozdíly mezi příkazy

SHODY příkazů MODIFY a DUPLICATE:

oba příkazy se používají v usuzovací části pravidla.

ROZDÍLY příkazů MODIFY a DUPLICATE:

Duplicate:

vytvoří pozměněnou kopii původního faktu, přičemž původní fakt ponechá v bázi faktů

Modify:

vytvoří pozměněný fakt z faktu původního, přičemž původní fakt odstraní z báze faktů (modify je zkrátka pořádnější :-)

SHODA DUPLICATE a ASSERT:

oba něco vkládají

ROZDÍLY DUPLICATE a ASSERT:

Assert:

v případě příkazu assert vkládám také určitý fakt do báze faktů, ale musím uvést všechny položky faktu a jejich hodnoty (jinak by v bázi faktů byly neúplné informace)

Duplicate:

u duplicate stačí vypsat jen ty položky a jejich hodnoty, u kterých bude změna oproti originálu

SHODA MODIFY A RETRACT:

oba něco ruší

ROZDÍLY MODIFY A RETRACT:

Modify:

rozdíl je takový, že příkaz modify, nám také z báze faktů zruší určitý fakt, ale hned ho nahradí jeho aktualizovanou verzí

Retract:

u příkazu retract dochází k zrušení určitého faktu a nic víc (žádný fakt není v bázi nahrazován za jiný fakt)

Použití příkazu MODIFY v praxi

Příklad 1.: Předměty a učitelé

Definujeme zde šablonu rozvrh:

(deftemplate rozvrh
  (slot den)
  (slot hodina)
  (slot minuta)
  (multislot predmet)
  (multislot vyucujici)
)


a na ní založené fakty:

(deffacts info
  (rozvrh (den pondeli) (hodina 8) (minuta 15) (predmet Znalostni technologie I) (vyucujici Peter Mikulecky))
  (rozvrh (den utery) (hodina 10) (minuta 45) (predmet Psychologie I) (vyucujici Jiri Sipek))
  (rozvrh (den streda) (hodina 8) (minuta 15) (predmet Psychologie sportu) (vyucujici Jiri Sipek))
  (rozvrh (den streda) (hodina 12) (minuta 25) (predmet Multimedialni systemy I) (vyucujici Jan Sedlacek))
)


  1. Vytvořte pravidlo, kdy se změní vyučující předmětu ZT1 a v bázi faktů zůstane jen ten nový vyučující předmětu
  2. Dále pravidlo, kdy učitel bude vyučovat zcela nový předmět místo předmětu původního

Stáhnout řešení:

(modify.clp)

Příklad 2.: Předměty a učitelé

Napište program na seřazení číselného seznamu. Použijte několik metod pro seřazení téhož seznamu (např. výměna dvou sousedních neseřazených hodnot, výměna dvou libovolných neseřazených hodnot, vkládání prvku na jeho místo do částečně seřazeného seznamu, ...). Použijte přitom následující šablonu a příkaz modify.

(deftemplate trideni   (multislot stary_seznam)   (multislot novy_seznam)   (slot pocet_kroku)   (slot metoda_trideni))

Stáhnout řešení:

(trideni.clp)

^ Nahoru ^


KONEC 12.LEKCE  

Validace

Valid XHTML 1.0 Strict

Valid CSS!

Monitoring webu