LEKCE 15.
Náplň lekce: Rozšiřování modulů o další konstrukce a příkazy
Před definicí pravidel si musíme říci o základních příkazech používaných při tzv. přepínání pozornosti inferenčního mechanismu.
Příkaz FOCUS, AUTO-FOCUS a RETURN
Inferenční mechanismus během vykonávání programu různě přesměrovává svoji pozornost na různé moduly. Chvíli se věnuje jednomu
modulu, pak druhému atd. Přičemž v jednu chvíli se dívá vždy na jeden modul. Opět je to podobné situaci z reálného života, kdy se
člověk nedokáže dívat třeba doleva a zároveň doprava (bez žádných pomocných nástrojů).
Můžeme pomocí výše zmíněných příkazů ovládat zaměřování pozornosti inferenčního mechanismu tak kam potřebujeme.
PŘÍKAZ FOCUS
Syntaxe: (focus NAZEV_MODULU)
Užití: v usuzovací části pravidla
Popis: např. (focus MODUL_B). Uvedením tohoto příkazu říkáme asi toto: a teď se
mi inferenční mechanisme dívej na MODUL_B a vykonávej v něm určitou činnost (v MODULU_B bude vykonáváno takové pravidlo mající
splněnou podmínkovou část). Za příkazem focus mohou být uvedeny různé příkazy (akce). Ty se vykonají až po tom, co se pozornost inferenčního
mechanismu vrátí zpět na to pravidlo toho modulu, ze kterého byl vyslán požadavek za změnu pozornosti inferenčního mechanismu.
PŘÍKAZ RETURN
Syntaxe: (return)
Užití: v usuzovací části pravidla
Popis: příkaz způsobuje, že inferenční mechanismus se přestane dívat na určitý modul, ve kterém je return uveden.
Na obrázku níže je znázorněna možná představa činnosti inferenčního mechanismu, příkazu Focus a Return
PŘÍKAZ AUTO-FOCUS
Syntaxe: (declare(auto-focus TRUE))
Užití: v podmínkové části pravidla - uvedení jako prvního příkazu v pravidle
Popis: jestliže definujeme v určitém pravidle příkaz auto-focus true říkáme tím, že
jestli bude v tomto pravidle, kde je auto-focus uveden, splněna podmínková část - inferenční mechanisme zaměř se na ten modul, ve
kterém je toto pravidlo se splněnou podmínkovou částí uvedeno.
Inferenční mechanismus je zaměřen na modul do doby než jeho pozornost není nějak narušena či přerušena. Přerušení zaměření inferenčního
mechanismu na určitý modul může být způsobeno často tím, že jiný modul požaduje, aby se mu inferenční mechanismus věnoval.
Dá se říci, že některé moduly mohou být velmi aktivní v tom, že stále chtějí, aby se jim inferenční mechanismus
věnovala tak ho vyrušují z jeho dosavadní činnosti. Je to něco podobného jako s dětmi, stále vyžadují Váš čas a pozornost.
Dedají a nedají Vám chvíli oddechu (řečeno s nadsázkou).
Možné důvody přerušení zaměření pozornosti inferenčního mechanismu
- agenda modulu v centru pozornosti IM se vyprázdní a činnost celého systému skončí
- agenda modulu v centru pozornosti IM se vyprázdní a pozornost IM se vrátí na modul, odkud byla přesměrována příkazem focus
- agenda modulu v centru pozornosti IM není prázdná, ale aktuálně vykonané pravidlo příkazem return vrátí pozornost IM na modul, odkud byla
pozornost přesměrována příkazem focus
- pravidlo z jiného modulu přtáhne na sebe pozornost IM, protože je splněna podmínková část tohoto pravidla a jaho vlastnot auto-focus
je nastavena na hodnotu TRUE
Zdroj:materiály z cvičení č.2 (ZT2)
Praktické využití výše zmíněných příkazů
Soubor setkani_pratel.clp z minulé lekce je rozšířen o pravidla, komentáře a možný ke stáhnutí:
(setkani_pratel_autofocus.clp)