Termy
-=-=-=-
C Code.
C Code Run.
Run, Code, RUN!
PLEASE!!!!
Definice světa v prologu se zkládá z termů. Možná ste si všimli,
že i dotazy se vznáší stejným formátem. Není to náhoda - i tyto
dotazy jsou termu. Každý term se zkládá ze jména a parametrů
v závorce. Tedy například datum(1998,1,1).
Termy lze navíc vnořovat. Například i osoba('Adam', 'Novak',
datum(1998,1,1)) je term. Na termy lze také nahlížet, jako na grafy:
osoba
/ | \
/ | \__
'Adam' 'Novak' datum
/ | \
1998 1 1
Prolog podporuje následující typy termů:
- jednoduché objekty
- proměné - ty začínají velkým písmenem, nebo podtžítkem
- konstanty
- atomy
- posloupnosti písmen číslic a podtržítka začínající malým
písmenem
- posloupnosti některých symbolů mimo ( ) ! , ; [ ] |
např --> <== <@ atd.
- posloupnosti znaků v apostrofech
'ahoj jak se máš'
- čísla (1 nebo 1.1)
- struktury
např datum(1998,1,1).
Mají funktor (datum) - to musí být atom
a parametry...
A to je všechno. Tento formát databáze je dostatečně obecný,
aby uložil téměř cokoliv. Dokonce i zápisy podmínek pomocí operátorů
:- a čárka jsou termy. :- jsou totiž jenom funktory, které jsou
nastaveny tak, že se píšou jako operátory. Tedy zápis neco(A,B)
:- jineho(A,C) lze přepsat na :-(neco(A,B),jineho(A,B)). Podobně
funguje i matematika.
Můžu tak popisovat například výrazy:
3 * x + 4 * y (nebo taky +(*(3,x),*(4,y))
+
/ \
* *
/ \ / \
3 x 4 y
Elektrické obvody:
par( odpor( r1),
sekv( par( odpor(r2), +--r1--------+
kond(c1)), --+ +-r2-+ +---
odpor(r3))) ---+ +-r3-+
+-c1-+
Nebo bludiště pro textovku:
%Umístění předmětů
location(papir,zachod).
% Bludiště
connect(zachod,zahrada).
connect(zachod,chodba). zachod<--->chodba<--->zahrada
connect(chodba,zachod). | ^
connect(zahrada,chodba). +----------------------+
connect(chodba,zahrada).
% Popisy pro jednotlivé místnosti
describe(papir,'proste toaletak').
describe(zachod,'Jsi na zachode..nelibe to tu voni').
describe(zahrada,'Jsi na zahrade..ptaci zpivaji, slunce sviti...').
describe(chodba,'Jsi na chodbe..vede ze zachodu na zahradu').
výheň