Vezérlési eljárások
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
- fejezetek: 5.2
- fóliák: II.27-32
Felsorolásszerűen:
- !/0 - vágó
- call/1
- fail/0
- true/0
- (,)/2 - konjunkció
- (;)/2 - diszjunkció
- (->)/2 - if-then
- (->;)/3 - if-then-else ((ez nem így van a jegyzetben, szóval lehet, hogy nagy baromság, de szerintem így jó ^_^. Jegyzetben: (;)/2 - if-then-else))
- (\+)/1 - nem bizonyítható
- repeat/0.
Bővebben:
- !: Megszünteti az összes választási pontot egészen a szülő célig, azt is beleértve.
- call: call(X) igaz, ha X igaz. A rendszer meghívja X-et célként, és annak sikere dönti el az eljárás sikerét. Végrehajtáskor X már nem lehet változó! Pl.:
ketszer(X) :- call(X), call(X). | ?- ketszer(nl).
Hívási minta: call(+:Cél).
- fail: Azonosan hamis (mindig meghiúsul).
- true: Azonosan igaz (mindig sikerül).
- ',' (konjunkció):
Hívási minta: Első, Második
A rendszer először célként meghívja Elsőt és ha sikerült, akkor célként meghívja Másodikat.
- ';' (diszjukció):
Hívási minta: (Első; Második)
A rendszer először célként meghívja Első-t, majd annak meghiúsulása esetén (visszalépéskor)
Második-at.
- -> (if-then):
Hívási minta: (Ha -> Akkor)
A rendszer megkeresi a Ha első megoldását. Ha ez sikerül, meghívja Akkor-t.
- -> ; (if-then-else):
Hívási minta: (Ha -> Akkor; Egyébként)
A rendszer először célként meghívja Ha-t. Ha az sikerül, akkor meghívja Akkor-t, egyébként
meghívja Egyébként-et.
- \+ (nem bizonyítható):
Hívási minta: \+ :+Cél
Meghívja Cél-t és ha az meghiúsul, akkor sikerül, egyébként meghiúsul. Működésben megegyezik a =(Cél -> false ; true)= szerkezettel.
- repeat: választási pontot hoz létre, majd sikerül. Így végtelen megoldást kaphatunk. Vágóval együtt használjuk. Működés szempontjából a Pascalból ismert =repeat...until= ciklushoz hasonlít leginkább (hátultesztelős és a ciklusból kilépés feltételét kell megadni).
főciklus :- repeat, read(X), feldolgoz(X), X = end_of_file, !.