42
Domains бөлiмі сіздер қолданылатын барлық домендерді хабарлау
үшiн қызмет көрсетедi, олар (стандарты домендерді жариялау міндетті емес)
Visual Prolog-тың стандартты домендері бола алмайды.
Goal бөлiмі - бұл сiзге Visual Prolog-программасының мақсатын
сыйғызып алады.
Ұсыныстардың
бөлiмi
Программаны құру барысында сіз clauses -тың (ұсыныстар) бөлiмiнде
барлық айғақтар мен ережелерлерді сыйғыза аласыз. Негізгі тарауда
программадағы
ұсыныстарға(айғақтар
жəне
ережелер)
басты
назар
аудырылады: олар қалай жазу керектігін білдіреді.
Егер сiз айғақтарды жəне ережелерді олардың прологта көрсетілуін
түсiнсеңiз, онда сiз clausesтың бөлiмiндегi əрбiр нақты предикат үшiн барлық
ұсыныс бiрге орналасуы керек екендігін бiлесiз. Бiр предикатты анықтайтын
ұсыныстардың тiзбегi процедура деп аталады.
(clauses бөліміндегі бірінші ұсыныстан бастап) Visual Prolog əрбiр
айғақты жəне əрбiр ереженi табуға ұмтылады. Төмен қарай clausesтың бөлiмi,
ол бірінші ішкі нұсқауға ұсынысты шешімінің бір бөлігі ретінде орнатады.
Егер келесi ұсыныс логикалық жолдың бөлiгi болып табылмаса, онда Visual
Prolog қойылған нұсқағышқа қайтарылады жəне кезектi салыстыруды (бұл
процесс қайтарумен iздестiру деп аталады) нұсқағышқа орын алмастыра
жақындай iздейдi.
Предикаттардың
бөл
iм
i
Егер сіз clausesтың бөлiмiндегі Visual Prolog тiлiндегi программаның
меншiгіндегі
предикаттарды
сипаттасаңыз,
онда
сiз
predicatesтiң
(предикаттар ) бөлiмiнде жариялауыңыз керек; басқа жағдайда Visual Prolog
түсiнбейдi. Сiз предикатты хабарлаудың нəтижесiнде домендерге (түрлерге )
бұл предикаттың аргументіне жататынын хабарлаңыз.
Visual
Prolog
кiрiстiрiлген
(олардың
жариялауға
болмайды)
предикаттардың толық жиынымен əкелiнедi,анықтама кiтабы олардың толық
сипатын көрсетеді.
Предикаттар айғақтарға жəне ережелерге тапсырма бередi. Барлық
предикаттар predicates бөлiмінде олардың аргумент типтерінің (домендер)
нұсқауы есептелінеді.
Сіз айғақтарыңыз бен ережелеріңіздің жұмысын iстейтін (дəлелдер)
объектілер типін жарияласаңыз Visual Prolog жұмысының тиімділігі едəуiр
өседi.
Қолданбалы
предикатты
жариялау
Предикаттың жариялануы сол предикаттың атымен басталады,содан
соң дөңгелек ашылатын жақша ішінде нөл немесе предикаттың үлкен
доменді(тип) аргументі жалғасады:
arguraent_typel OptionalNamel, argument_type2 OptionalName2 predicateName
......, argument_typeN OptionalName3
үтiр дəлелдiң (түр )
43
Əрбір доменді аргументтен кейін,соңғы аргумент типінен кейін
жабылатын жақша қойылады.Атап өтемiз, clausesтың бөлiмiндегi ұсыныстан
айырмашылығы декларация предикаты нүктемен аяқталмайды, предикаттың
доменді аргументі стандартты домен немесе domaines бөлімінде жарияланған
домен болады. Аргументтің атын OptionalNameK деп нұсқауға болады - бұл
прогрмманың оқылуын жақсартады, компилятор аяққа басатындықтан оның
орындалу жылдамдығы білінбейді.
Предикаттардың
аттары
Предикаттың аты реттеле орналасқан əрiптер, цифрлар жəне астын
сызылған таңбалармен басталуы керек. Əрiптердiң регистрi ешқандай
мағына бермейді, дегенмен сiзге бiз (прологтың басқа болжамы да бұған жол
бермейді жəне болашақта Visual Prolog- - болжам 6, ол да бұған тыйым
салады) бірақ біз сізге предикаттың атының бірінші əрпін бас əріппен жазуға
кеңес бермейміз. Предикаттың аты 250 символымен шектеледі.
Домендерд
iң
бөл
iм
i
Дəстүрлi прологта тек – терм типі бар. Visual Prologта доменді барлық
аргументтің предикаты ретінде жариялаймыз.
Бiрнеше мысалдарды қарап шығамық.
1. Осы мысал предикаттардың домендерін қалай құжаттауға көмектесетiнiн
көрсетедi:
Франк - 45 жасқа толған еркек.
Стандартты домендерді қолана отырып , сiз тиiстi домен предикатын
қолдана аласыз:
person.(symbol, symbol, integer) .
Көп жағдайларда мұндай жарияланулар өте жақсы жұмыс iстейдi.
Дегенмен сiз программа жазылғаннан кейін бiрнеше айлардан соң түзеткіңіз
келді дейік.Предикаттың ұқсас хабарламасы сізге ештеңе айтпауы
мүмкін.Керісінше,төменде көрсетілгендей бұл предикаттың декларациясы
осы предикаттың аргументтерін ретке келтiруге көмектеседi:
Domains
name,sex = symbol
age = integer predicates
person (name, sex, age)
Меншiктi домендердiң хабарлауының бас артықшылықтарының бiрi,
Visual Prolog типтердің қатесiн зерттеп отыра алған, мысалы:
same_sex (X, Y):- person (X, Sex, _), person (Sex, Y, _).
name жəне sex symbol ретінде көрсетілгеніне қарамастан, олар бір біріне
эквивалентті емес. Егер сiз оларды шатыстырсаңыз, Visual Prolog сол қатенi
анықтауға мүмкiндiк бередi.Бұл сiздiң бағдарламаңыз өте үлкен жəне күрделi
болған жағдайларда пайдалы болмақ.
Domains
product, sum = integer
predicates