44
add_em_up (sum, sum, sum)
multiply_em (product, product, product)
clauses
add_em_up (X, Y, Sum):-Sum=X+Y.
multiply_em (X, Y, Product):-Product=X*Y.
Бұл прогрмма екi операцияны орындайды: жинақтайы жəне
көбейтеді.Оған мынадай мақсат беріп көрейік:
add_em_up (32, 54, Sum).
Visual Prolog (Test Goal) былай жауап бередi:
Sum=86
1 Solution
сіз программаға ек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 бит
Идентификаторла жəне жолдар сіздің программаңызда бір-бірін
ауыстыра алады,бірақта
45
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(%).
46
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-ке қатынасын тексере алмайсыз.
Бақылау сұрақтары
3.
Логикалық программалау тілдерінің мүмкіндіктері.
4.
Тілдің құрылымы
Есеп беру мазмұны жəне формасы: Тапсырмалар нұсқасын құрастыру.
Тапсырманы орындау реті. Орындау нəтижелері. Қортынды.
2.3. Зертханалық жұмыс №3. Қолданбалы предикаттар.
Мақсаты: Предикаттардың пролог ортасында қолданылу əдістері.
Ереже - бұл шындығы кейбiр шарттардан тəуелдi болатын бекiту.
Ереже бастан жəне программа бөліктерінен тұрады :- егер деп оқылады.
Ереже, сонымен қатар айғақ, нүктемен бiтедi. Бас айнымалы компоненттер
ретiнде бола алатын бұрын суреттеп айтылған предикаттардың бiрi болып
табылады. Ереженiң басы бұл ереже анықтауы үшiн арналған айғақ
суреттейдi.
Ереженiң денесi ереженiң басы шын болды үшiн айғақтармен дəйектi
түрде келiсуi керек үшiн мақсаттар суреттейдi. Дене үтiрлермен немесе
нүктелi үтiр айырық термдердiң тiзiмiнде болады. Сонымен бiрге:
:- орнына if тердi пайдалануға,
, орнына and қолдануға,
; орынына or
қолдануға болады.
Тапсырмалар: