Extras din laborator
Structura unui program VISUAL PROLOG
Un program PROLOG conţine 4 secţiuni de bază:
“clauses”
“predicates”
“domains”
“goal”
Secţiunea “clauses” conţine faptele şi regulile cu care va opera PROLOG pentru satisfacerea interogărilor.
Secţiunea “predicates” este secţiunea în care se declară predicatele şi domeniile (tipurile) argumentelor.
Secţiunea “domains” cuprinde declarea domeniilor (tipurilor) utilizate în program şi care nu sunt domenii standard.
Secţiunea “goal” este secţiunea în care se fac interogările.
Secţiunea “CLAUSES”
Clauzele (faptele şi regulile) pentru un predicat trebuie amplasate împreună în secţiunea CLAUSES. O secvenţă de fapte şi reguli care definesc un predicat poartă numele de procedură.
Atunci când răspunde la o interogare, Visual Prolog va începe cu începutul secţiunii, „clauses” căutând o potrivire cu toate faptele şi regulile din această secţiune.
Secţiunea „PREDICATES”
Atunci când se defineşte un predicat în secţiunea clauses a unui program Visual Prolog, trebuie în prealabil declarat în secţiunea predicates prin care se comunică programului Visual Prolog despre ce este vorba. Există şi predicate predefinite în Visual Prolog care nu trebuie redeclarate. De asemenea vor trebui precizate domeniile argumentelor predicatului. Declararea unui predicat se face după sintaxa:
nume_predicat(tip_argument1, tip_argument2, ... )
Domeniile utilizate în declararea unui argument sunt fie domenii standard, fie domenii care au fost declarate în secţiunea DOMAINS.
Numele predicatelor trebuie să înceapă cu literă, urmată apoi de o secvenţă de litere, cifre şi eventual caracterul _ „underscore”. Nu are importanţă dacă literele utilizate sunt litere mari sau mici dar este recomandabil ca prima literă să fie literă mică, deoarece alte versiuni ale limbajului Prolog nu acceptă literele mari ca primă literă în numele unui predicat. Numele unui predicat nu poate depăşi 250 de caractere.
Exemple de nume de predicate:
Nume corecte de predicate Nume incorecte de predicate
fact [fact]
este_un *este_un*
are_o are/o
listaDeVerificare lista-De-Verificare
choose_Menu_Item choose Menu Item
predicateName predicate<Name>
Exemple
Se poate declara un predicat cu denumirea my_predicate(symbol, integer)în secţiunea predicates:
PREDICATES
my_predicate(symbol, integer)
pentru care nu este necesară declararea domeniilor argumentelor în secţiunea domains deoarece symbol şi integer sunt domenii standard. Dacă însă se declară predicatul my_predicate(name, number) în secţiunea predicates:
PREDICATES
my_predicate(name, number)
va fi necesară o declaraţie pentru cele două domenii name şi number care nu sunt domenii standard. Presupunând că se doreşte ca aceste domenii să corespundă domeniilor standard symbol şi integer, secţiunea declarării domeniilor va fi:
DOMAINS
name = symbol
number = integer
PREDICATES
my_predicate(name, number)
Următoarea secţiune de program prezintă mai multe astfel de declaraţii de predicate şi de domenii:
DOMAINS
persoana, activitate = symbol
masina, marca, culoare = symbol
kilometri, vechime, pret = integer
PREDICATES
place(persoana, activitate)
parinte(persoana, persoana)
poate_cumpara(persoana, masina)
masina(marca, kilometri, vechime, culoare, pret)
verde(symbol)
clasifica(symbol, integer)
Această secţiune de program specifică următoarele informaţii despre predicate şi despre argumentele lor:
Predicatul place are două argumente (persoana şi activitate), ambele aparţinând domeniului symbol (ceea ce înseamnă că valorile lor sunt alfanumerice)
Predicatul parinte are două argumente de tip persoana, unde domeniul persoana este de tip symbol.
Predicatul poate_cumpara are două argumente persoana şi masina, care sunt ambele de tip symbol.
Predicatul masina are 5 argumente marca şi culoare aparţin domeniului symbol, în timp ce kilometri, vechime şi cost aparţin domeniului integer.
Predicatul clasifica, are două argumente, ambele aparţinând domeniilor standard symbol şi integer, astfel încât nu mai este necesară declararea tipului acestora în secţiunea domains.
Preview document
Conținut arhivă zip
- Structura unui Program ProLog.doc
- ia2p2.pro
- ia2p3.pro
- ia2p1.pro