Stáhnutí:
Program popisuje "svět" Prologu = databáze faktů a pravidel.
fakta: | predikát(arg1, arg2, ...argN). |
cíle: | ?- predikát(arg1, arg2, ...argN). |
pravidla: | hlava :- tělo. predikát(argumenty) :- fakta. |
Elementy programu: | konstanty, proměnné, struktury \__________________________/ termy |
write(X) | zápis termu do výstupního proudu |
nl | odřádkování |
tab(X) | výstup X mezer |
display(X) | výstup jako write, ale ve funkční notaci |
read(X) | čtení termu ze vstupního proudu |
put(X) | výstup znaku na jehož ASCII kod je X instalováno |
get(X) | vstup ASCII kódu zobrazitelného znaku (32 a výše) |
get0(X) | jako get, ale i pro nezobrazitelné znaky |
skip(X) | přeskakuje vstupující znaky, dokud úspěšně neporovná znak s X |
tell(X) | přepnutí výstupu do souboru X |
told | uzavření souboru a přepnutí výstupu na user |
see(X) | přepnutí vstupu na soubor X |
seen | současný vstupní soubor je uzavřen a vstup přepnut na user |
setdrive(X) | nastavení driveru X |
getdrive(X) | zjištění jména aktuálního driveru |
chdir(X) | nastavení pracovního adresáře |
true | vždy splněný cíl |
fail | vždy nesplněný cíl |
var(X) | splněno, je-li X volnou proměnnou |
nonvar(X) | splněno, není-li X neinstalovanou proměnnou |
atom(X) | splněno, je-li X instalováno na atom |
integer(X) | splněno, je-li X instalováno na integer |
atomic(X) | splněno, je-li X instalováno na attom nebo integer |
not(X) | X musí být interpretovatelné jako cíl. Uspěje pokud X není splněn |
call(X) | X musí být interpretovatelné jako cíl. Uspěje pokud X je splněn |
halt | ukončí výpočet |
X = Y | pokus o porovnání X s Y |
X \= Y | opak = |
X == Y | striktní rovnost |
X \== Y | úspěšně splněn, neplatí-li == |
! | změna mechanismu návratu |
repeat | nekonečněkrát splnitelný cíl |
X , Y | konjunkce cílů |
X ; Y | disjunkce cílů |
X is E | E musí být aritm. výraz, který se vyhodnotí a porovná s X |
E1 + E2 | při instalovaných argumentech (pod. ?, *, /, mod) |
E1 > E2 | při instalovaných argumentech (pod. >=,<,=<,\=,=) |
E1 =:= E2 | uspěje, jsou-li si hodnoty E1, E2 rovny |
E1 =\= E2 | uspěje, nejsou-li si hodnoty E1, E2 rovny |
listing(X) | výpis všech klauzulí na jejichž jméno je X instalováno |
listing | výpis celého programu |
clause(X, Y) | porovnání X a Y s hlavou a s tělem klauzule |
asserta(X) | přidání klauzule instalované na X na začátek databáze |
assertz(X) | totéž, ale přidává se na konec databáze |
retract(X) | odstranění prvého výskytu klauzule X z databáze |
findall(X,Y.Z) | všechny výskyty termu X v databázi, které splňují cíl Y jsou vloženy do seznamu Z |
funktor(T, F, A) | vytvoří strukturu T s funktorem F a aritou A |
arg(N, T, A) | porovná A s N-tým argumentem struktury T |
X =.. L | tzv."univ". Provádí porovnání termu X se seznamem L, který je složen z funktoru termu X, následovaném argumenty X |
name(A, L) | je-li A instalováno, převede jméno atomu A na seznam znaků a ten porovná s L. Není-li A instalováno, instaluje je znaky podle seznamu L |
lenght(L, A) | zjistí délku seznamu a porovná ji s A |
Kompletní seznam predikátů >>>
rodic(vojtech, hana). rodic(anezka, hana). rodic(karel, ondrej). rodic(karel, jitka). rodic(hana, ondrej). rodic(hana, jitka). rodic(ondrej, eliska). rodic(lucka, eliska). muz(vojtech). muz(karel). muz(ondrej). zena(anezka). zena(hana). zena(jitka). zena(lucka). zena(eliska). slechtic(anezka). otec(X,Y):- rodic(X,Y), muz(X). matka(X,Y):-rodic(X,Y), zena(X).
Úkoly:
ma(dum,dvere). ma(dum,okno). ma(dum,komin). rozbite(okno). rozbite(komin).
Úkoly:
cifra(0). cifra(1). cifra(2). cifra(3). cifra(4). cifra(5). cifra(6). cifra(7). cifra(8). cifra(9). cislo(X):-cifra(X). nsb(X,Y,V) :- cislo(X), cislo(Y), V is X*Y.
Úkoly:
hrana(1, 4). hrana(1, 5). hrana(2, 1). hrana(2, 4). hrana(3, 1). hrana(3, 2). hrana(3, 4). hrana(4, 5).
Úkoly: