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

LEKCE 3.

Náplň lekce:


Práce se seznamy

Seznam je určitá datová struktura, do které můžete uložit více hodnot najednou. Je souborem určitých hodnot-položek, který je opatřený jménem. Jednotlivé položky seznamu se oddělují jen mezerou. Seznam je struktura jinak nazývána souborem nestrukturovaných faktů s více položkami. Struktury se strukturovanými fakty nazýváme šablony, ale to zatím probírat nebudeme.

Podoba seznamu v Clipsu:

(název_seznamu položka_1 položka_2 . . . položka_n)

příklad:
(ovoce Jablko Hruska Bananek Pomeranc Kiwi)

Druhy seznamů:

  1. prázdný: tedy i takovýto seznam je seznamem -> (zelenina)
  2. jednopoložkový: (zelenina mrkvicka)
  3. vícepoložkový: (zelenina celer mrkvicka pazitka)

Využití seznamů:

  1. tam, kde nám nezáleží na pořadí položek definovaných v seznamu (tak třeba již zmíněnou zeleninu)
  2. tam, kde položky seznamu mají zvláštní význam (adresa Jan Novak Manesova 320 Pardubice)
  3. tam, kde chceme zachytit určitou relaci např. (rodic Jan Lucie) (zn.Jan je otcem dcery Lucie)

Příkazy assert, read, bind

Příkaz ASSERT (vlož)

Tento příkaz slouží k vkládání faktů do naší báze faktů.

Syntaxe: (assert (muj_fakt_ktery_vkladam_do_baze))

příklad: (assert (zelenina rajce))

Příkaz READ (čti)

Tento příkaz nám načte údaj/údaje, které zadá uživatel na klávesnici počítače.
(read) - tento příkaz má návratovou hodnotu získanou od uživatele.
Můžete si představit, že obsahem závorek je určitá konkrétní hodnota (rajce)

Příkaz BIND (svaž)

Tento příkaz sváže určitou hodnotu (např. hodnotu získanou od uživatele pomocí příkazu Read) s konkrétní proměnnou. Přiřadí tuto hodnotu konkrétní proměnné, abychom mohli s informací získanou od uživatele dále pracovat (aby hodnota od uživatele měla své místo/své pojmenování v programu - byla někam přiřazena). Může sloužit např. k uložení mezivýsledků při matematických výpočtech do proměnných.

Syntaxe: (bind ?komu ?co)

POZOR: Všechny tyto příkazy mohou být použity jen v usuzovací části pravidla.


Praktický příklad použití těchto funkcí:

(stáhnout ovoce_2_prikazy.clp)

Vysvětlení obrázkem:

Vysvětlení seznamu s ovocem

Při spuštění programu je uživatel vyzván, aby zadal nějaký druh ovoce. Po jeho zadání je program ukončen. Po ukončení programu se podívejte do okna Facts, kde Vám přibyl Váš nový fakt s názvem: (moje_ovoce xy).

Změna báze faktů

Program si můžete pozměnit a to tak, že u příkazu assert neuvedete název seznamu moje_ovoce, ale přímo ovoce (tak jak to je u ostatních faktů ve struktuře deffacts). Pak spusťte program a jako svůj fakt zadejte takový, který již v bázi faktů existuje např. Pomeranc. Uvidíte, že do báze faktů žádný nový fakt nepřibude, ale vypíše se jen informace o vložení tohoto faktu do báze. Otázka, která Vás asi napadá je: "Proč se do báze nevložil žádný fakt?". Odpověď je jednoduchá. Clips Vám nedovolí do báze vložit fakt, který již v bázi existuje. Tedy (ovoce Pomeranc) vloží jen 1x, ale (moje_ovoce Pomeranc) je už něco jiného.

Poznámka: Někdy může být celá podmínková část vynechána. Bude provedena jen usuzovací část hned po příkazu Reset.

Prefixový zápis

Je takový zápis při kterém se operátory (např. + - * /) vkládají před operandy (různé hodnoty). Klasický matematický zápis je infixový, při kterém operátory vkládáme mezi operandy. Vysvětlení přefixu je na obrázku níže.

Vysvětlení prefixového zápisu


Složitější výraz:

Infixový zápis : ((a + b) or (2 - c < 1))

Prefixový zápis: (or (+ a b) (< (- 2 c) 1))

DALŠÍ PRAKTICKÉ PŘÍKLADY

1.Tento program Vás pozdraví Vaším jménem v závislosti na zvolené denní době i jazyce.

(stáhnout: Pozdravy.clp)

Vysvětlení graficky:

Grafické vysvětlení činnosti programu s pozdravy

Poznámky k obrázku:

Jestliže např. uživatel zadá dobu rano (v bazi bude prave_je rano), pak zde existuji 3 varianty na výběr druhu pozdravu (Dobre jitro preji, Good morning, Guten Morgen). Pak jestliže zadáte jazyk cesky, pak zde je jen už jedna varianta pozdravu, která se může vybrat. Znázorněno červenou šipkou. V podstatě dochází ke konkretizování odpovědi.

2.Příklad na procvičení prefixu, assertu, readu, bindu - evidence různých druhů geometrických objektů

(stáhnout obvody_utvaru.clp)

^ Nahoru ^      


KONEC 3.LEKCE  

Validace

Valid XHTML 1.0 Strict

Valid CSS!

Monitoring webu