Lab1 Prolog
Lab1 Prolog
1
Files - Se referă la gestiunea fisierelor. Load (F3) – încarcă un fisier. Pick –
deschide un fişier încărcat in sesiunea curentă. New File –creează un fişier nou cu
numele work.pro. Save (F2) – salvarea fişierului. Write to – modificarea numelui
unui fişier. Directory – afisarea directoariului curent. Change Dir – maniularea
directoarelor. OS-Shell - ieşirea temporară din TURBO PROLOG (revenirea cu
comanda Exit). Quit – ieşirea totală în sistemul de operare.
Compile – Acest meniu lasă posibilitatea alegerii modului în care să se facă
compilarea.
Options – Acest meniu produce mai multe submeniuri pull-down, în care putem
specifica opţiuni de compilare.
Setup – Permite setarea mediului de programare TURBO PROLOG . Puteţi
configura lungimile, culorile ferestrelor TURBO PROLOG , setarea directoarelor,
modificarea configurarii tastaturii etc.
Cheile funcţionale
Block functions
2
Copy block Ctrl-F5 Hot keys
Copy block again Shift-F5
Copy block to printer Alt-F8 Run program Alt-R
Copy block to file Alt-F5 Activate Editor Alt-E
Copy block from file F7 Activate Files pulldown Alt-F
Move Block Alt-F6 Activate operating system Alt-D
Delete Block Alt-F7 Activate Options pulldown Alt-O
Undo delete block Ctrl-F7 Activate Compile pulldown Alt-C
Change case for a block Ctrl-F6 Activate Setup pulldown Alt-S
Search Ctrl-F3 Display Hot keys Alt-H
Search again Shift-F3 Display version info Alt-10
Replace F4 Load file F3
Replace again Shift-F4 Pick file Alt-F3
Save file F2
Miscellaneous Compile to memory F9
Compile to OBJ Shift-F9
Aux edit F8 Compile to EXE Ctrl-F
Popup help menu F1 Compile Project Alt-F9
Show help file Shift-F1 Quit Prolog Alt-X
Auto indentationAlt-I Ctrl-Q Ctrl-I
Insert mode Ins Ctrl-V
Text mode Ctrl-Q Ctrl-W Wordstar-like
Lower case word Ctrl-B Ctrl-L
Upper case word Ctrl-B Ctrl-U Set block start Ctrl-K Ctrl-B
Reverse case word Ctrl-B Ctrl-R Set block end Ctrl-K Ctrl-K
Exit editor F10 Ctrl-K Hide/Show end Ctrl-K Ctrl-H
Ctrl-D Copy block Ctrl-K Ctrl-C
Move block Ctrl-K Ctrl-V
Global functions Delete block Ctrl-K Ctrl-Y
Change case for a blockCtrl-K Ctrl-E
Resize window Shift-F10 Copy block to printer Ctrl-K Ctrl-P
Zoom window F5 Copy block to file Ctrl-K Ctrl-W
View windows F6 Copy block from file Ctrl-K Ctrl-R
File mask F4 Search Ctrl-Q Ctrl-F
Previous line F8 Search again Ctrl-O
Call editor in GOAL mode Ctrl-E Replace Ctrl-Q Ctrl-A
Terminate input F10 Replace again Ctrl-L
Un program TURBO PROLOG este o mulţime de clauze Turbo Prolog. Acestea sunt
de trei tipuri: fapte, reguli si scopuri.
Un fapt precizează “o proprietate a unui obiect sau exprimă o relaţie dintre mai multe
obiecte”. Forma sintactică generală prin care pot fi descrise faptele este:
EXEMPLU 1:
Bill este parintele lui Bob.
unde Bill şi Bob sunt obiecte, dar parintele este relaţia. În prolog aceasta poate fi
prezentată în modul urmator:
parinte (Bill, Bob).
3
pam tom
parinte ( pam , bob ).
parinte ( tom , bob ).
bob liz parinte ( tom , liz ).
parinte ( bob , ann ).
parinte ( bob , pat ).
ann pat parinte ( pat , jim ).
Jim
EXEMPLU 2:
În capul regulii avem un singur predicat.In corpul regulii pot apare unul sau mai multe
predicate, legate între ele prin conectorul and. Un fapt poate fi privit şi ca o regulă cu
corpul vid.
În TURBO PROLOG urmatoarele simboluri sunt echivalente
if :-
and , .
or ;
EXEMPLU 3:
fapte:
parinte ( pam , bob ).
parinte ( bill , bob ).
femeie (pam).
4
Putem adăuga în acest program o regula care defineşte relaţia mama reeşind din
faptele parinte şi femeie.
mama ( X, Y ) if
parinte ( X, Y) and
femeie (X).
EXEMPLU 4:
auto(BMW,_524td,1984,220,diesel,automat,negru,2.4,yes,3000).
auto(BMW,_525,1990,260,benzin,manual,alb,2.5,yes,6000).
auto(FORD,transit,1986,180,benzin,manual,alb,2.3,yes,4000).
auto(WV,golf,1995,280,benzin,manual,rosu,2.0,yes,6000).
auto(Honda,civic,1998,280,benzin,manual,negru,3.1,yes,9000).
automobil_sportiv( X ):-
auto(X, _ , _ , Viteza , _ , Cutia_de_viteze , _ , _ , _ , _ ),
Viteza > 250,
Cutia_de_viteze = manual.
5
Variabile în TURBO PROLOG.
EXEMPLU 5:
clauza1:-
X=5,
X2=X*2,
clauza2(X2).
clauza2(X2):-write(“X2=”,X2).
Exemplul 5 arată cum o variabilă poate fi transmisă dintr-o clauză în alta (Se
transmite valoarea variabilei X2 din clauza1 în clauza2).
EXEMPLU 6:
clauza1:-
X=5,
clauza2(X2),
X3 = X + X2,
write (X3).
clauza2(X2):-
X2 = 4.
Exemplul 6 arată cum o variabilă poate fi obţinută dintr-o clauză (Se obţine valoarea
variabilei X2 din clauza2).
Scopuri
Scopurile sunt folosite pentru a chestiona sistemul despre informaţiile pe care le are
referitor la relaţiile şi obiectele declarate.
6
Scopurile pot fi interne sau externe. Un scop intern se va scrie în secţiunea goal.
Unul extern se va scrie în fereastra de dialog, după rularea programului (dacă acesta
nu conţine secţiunea goal).
Forma sintactică generală a unui scop este asemenea ca şi forma corpului unei regule.
/*===============Comentariu=================*/
% Comentariu
DOMAINS
<descrierea domeniilor>
DATABASE
<declararea predicatelor de baza de date dinamica>
CONSTANTS
<declararea constantelor>
PREDICATES
<declararea predicatelor>
CLAUSES
<afirmatiile>
7
GOAL
<afirmatiile de scop>
Sarcine
II. De substituit faptele cu relatia barbat cu o regula este_barbat( X ) :- ..., care este
adevarată dacă numele X nu este nume de femeie.
8
parinte( nume, nume )
CLAUSES
parinte ( pam , bob ).
parinte ( tom , bob ) .
parinte ( tom , liz ).
parinte ( bob , ann ).
parinte ( bob , pat ).
parinte ( pat , jim ).
femeie (pam).
femeie (liz).
femeie (ann).
femeie (pat).
barbat (bob).
barbat (tom).
barbat (jim).
9
Bibliografie:
1. C. Masalagiu, L. Ibănescu, Ş.Andrei – Practica programarii în TURBO PROLOG, IAŞI, 1998
2. J. Meszaros – TURBO PROLOG 2.0 ghid de utilizare, Cluj-Napoca 1996
3. S.Pelin, I.Orlovski – Bazele programării în limbajul Prolog, Chişinău, 2002
10