- •Логикалық есептермен Prolog программалық ортада жұмыс жасау. Жасанды интеллект үшін Prolog – та программа құру.
- •Зертханалық жұмыс 15-1. (зс).
- •Логикалық амалдар. Логика, логикалық байланыстар және ақиқаттылық кестелер негіздері. Логикалық тұжырымдау принциптері. Логикалық амалдармен жұмыс істеу.
- •Visual Prolog – програмасының негізгі бөлімдері:
- •Ұсыныстардың бөлiмi
- •Предикаттардың бөлiмi
- •Visual Prolog кiрiстiрiлген (олардың жариялауға болмайды) предикаттардың толық жиынымен әкелiнедi,анықтама кiтабы олардың толық сипатын көрсетеді.
- •Қолданбалы предикатты жариялау
- •1. Осы мысал предикаттардың домендерін қалай құжаттауға көмектесетiнiн көрсетедi:
- •Декларация және ережелер
- •Тапсырмалар
- •Бақылау сұрақтары
Декларация және ережелер
Visual Prologта бірнеше кірістірілген стандартты домендер бар. Оларды domains бөлiмiнде декларарация типінде және сипатталмаған предикаттардың аргументінде қолдануға болады.
Негiзгi домендер 4 кестеде сипатталған
Домен |
Сипатталуы |
Іске асуы |
short |
Қысқа, таңбалы, сандық |
Барлық платформалар (- 32 768—32 767) 16 бит |
ushort |
Қысқа, таңбасыз,сандық
|
(0—65 535 ) 16 биттік платформалар |
long |
Ұзын, таңбалы, сандық
|
барлық платформалар (- 2 147 483 648-2 147 483 647) 32 бит |
ulong |
Ұзын, таңбасыз, сандық |
барлық платформалар (0-4 294 967 295 ) 32 бит |
integer |
Таңбалы, сандық, тәуелді көлемді платформаға ие |
(- 32 768-32 767) 16 биттік платформалар (- 2 147 483 648-2 147 483 647) 32 биттік платформалар |
unsigned |
Таңбасыз, сандық,тәуелді көлемді платформаға ие |
(0—65 535 ) 16 биттiк платформалар (0-4 294 967 295 ) 32 биттік платформалар |
byte |
|
Барлық платформалар (0— 55 ) 8 бит |
word |
|
Барлық платформалар (0—65 535 ) 16 бит |
dword |
|
Барлық платформалар (0—4 294 967 295 ) 32 бит |
Идентификаторла және жолдар сіздің программаңызда бір-бірін ауыстыра алады,бірақта
Visual Prologта олар бөлек сақталады. Идентификаторлар, идентификатор кестелерiнде сақталады, ал олардың көрінісіне оның кестедегі индексі ғана қолданылады, бірақ жолдардың идентификаторы емес. Бұл идентификаторлардың қарама-қарсы қойылуы өте жылдам орындалатындығын білдіреді, ал олар программада біренше жерде кездессе,ондо олардың сақталуы да тығыз болады. Жолдар іздеу кестесінде сақталынбайды және қарама-қарсы қоюдың міндеттілігінде Visual Prolog оның символдарын біртіндеп тесереді.керек болса нышанға олардың нышаны тексередi. Сіз қай домен әрбір прграммада жақсы қолданылатынын өзiңіз шешесіз.
Тапсырмалар
Visual Prolog аяқталған телефондық анықтама секілді программаларды көрсетеді. Тек стандартты домендер пайдаланылғандықтан оған domains бөлiмінің программада қажеті жоқ.
Predicates
phone_number (symbol, symbol)
clauses
phone_number ("Albert " , "EZY-3665 " ).
phone_number ("Betty " , "555-5233 " ) .
phone_number ("Carol " , "909-1010 " ) .
phone_number ("Dorothy " , "438-8400 " ) .
goal
программаны енгізіп, орындауға жібергеннен кейін рет-ретімен мақсаттарды еңгізіңіз.
phone_number ("Carol " , Number) .
phone_number ("438-8400 " Who, ).
phone_number ("Albert " , Number).
phone_number (Who, Number).
Енді ұсыныстарды өзгертiңiз. Kim және dorothy бiр телефон номеріне ие деп есептейік. Бұл айғақты сlauses бөлiмiне енгізіп, келесі мақсатты енгіземіз:
Рhone_number ("438-8400 " Who, ).
Бұл сұраныстан сіз екі нәтиже алуыңыз керек:
Who=dorothy
Who=kim
2 Solutions.
Програмасындағы сhar доменiн сипатау үшін isletter предикаты пайдаланылады. Тапсырама барысында оған төменлегідей мақсаттар қойылған:
isletter(%).
isletter(Q).
"Yes" немесе "No" сәйкес келетін мағынасына қарай қайтарады
Predicates
isletter(char)
clauses
= > белгісі % таңбасын анықтайды.
% мына теңдік "Алфавиттің алдында қойылады"
isletter (Ch):-‘ а’< = Ch, Ch<=’z’.
isletter (Ch ):-‘A’<= Ch, Ch<=’Z’
Программасын енгізіп, Test Goal -да әрбір мақсатты рет-ретімен сынап көріңіз:
a ) isletter (‘х’). d ) isletter (a ) .
b ) isletter (‘ 2 ‘ ). e ) isletter (X ).
c ) isletter ("Hello " ).
(c) және (d) мақсаттары қателіктің түріне алып келеді,ал (е) мақсаты және "Free variable " (байланыспаған айнымалы) хабарламасын қайтарады. Сіз берілмеген объектінің а немесе z-ке қатынасын тексере алмайсыз.
