Vezérlési eljárások

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:09-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm16}} * fejezetek: 5.2 * fóliák: II.27-32 Felsorolásszerűen: * !/0 - vágó * call/1 * fail/0 * true/0 * (,)/2 - konjunkció * …”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

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, !.