39
female(tammy).
parent(bill,joe).
parent(sue,joe).
parent(joe,tammy).
Аноним айнымалысы кез келген басқа өзгерiстердiң орынында
қолданылады жəне оған ешқандай мағына берілмейді.
Мысалы, бiзге келесi сұрауда қандай адамдар ата-ана бола
алатындығын бiлу керек бірақ, сiзге олардың балалары қызықты емес.
Прологтағы əрбір сұраныста сізге сызылған символды падаланған кезде
айнымалының мағынасы туралы ақпараттың қажеті жоқ.
goal
parent(Parent, _).
Мұндай сұранысты алғаннан кейін пролог былай деп жауап береді:
(Test Goal)
Parent=bill Parent=sue Parent=joe 3 Solutions
Бұл жағдайда пролог үш ата-ананы тауып бередi, бiрақ ол parent -тың
ұсынысында екiншi дəлелмен сабақтас мəндердi бермейдi.
Анонимді айнымалыларды айғақтар ретінде пайдалануға болады.
Прологтiң келесi айғақтары:
owns(_, shoes). eats (_ ).
Табиғи тiлде бекiтулердi өрнек үшiн қолдана алды:
Əрбір адамда аяқ киім бар. (Everyone owns shoes ) Əрбiр адам
тамақтана алады. (Everyone eats )
Аноним айнымалысы кез келген мəлiметтерге қарама-қарсы келеді.
Құрама мақсаттар: конъюнкция жəне дизъюнкция
Көріп отырғаныңыздай, құралған мақсаттарды іздеудің нəтижесі үшін
қолдануға болады, екі ішкі мақсат А жəне В ақиқат (конъюнкция ), ішкі
мақсат үтір арқылы ажыратамыз. Егер іздеудің нəтижесінде ақиқат А жəне В
ішкі мақсат (дизъюнкция) болса бұл ішкі мақсат нүктелі үтір арқылы
ажыратамыз.
Төменде программаның мысалы көрсетілген:
predicates
car(symbol,long,integer,symbol,long)
truck(symbol,long,integer,symbol,long)
vehicle(symbol,long,integer,symbol,long)
clauses
car(Chrysler,130000,3,red,12000).
car(ford,90000,4,gray,25000).
car(datsun,8000,1,red,30000).
truck(ford,80000, 6,blue,8000).
truck(datsun,50000,5,orange, 20000) .
truck(toyota,25000,2,black,25000).
40
vehicle(Make,Odometer,Age,Color,Price):-сar(Make,Odometer,Age,Color,Price);
truck(Make,Odometer,Age,Color,Price).
TestGoal-дың жобасына осы программаны жүктеңiз, содан соң мақсат
қойыңыз:
Goal
car(Make, Odometer, Years_on_road, Body, 25000).
Берілген мақсат айтылған ұсыныстардан бағасы $25 000 тұратын
машина (саr ) тұратын машина табуға тырысады. Пролог былай жауап береді:
Make=ford, Odometer=90000,
Years_on_road=4,
Body=gray
1 Solution.
Дегенмен берілген мақсат біршама жасанды. Жасанды болғандықтан
тез арада мынандай типті сұрақ қойылады:
Тізімде $25000-дан кем тұратын машина бар ма?( Is there a car listed that costs
less than $25000)
Мұндай мақсатты шешу үшін сіз Visual Prolog-та келесi құралған
мақсатты бере аласыз:
Сar (Make, Odometer, Years_on_road, Body, Cost) % ішкі мақсат А жəне Cost
< 25000. % ішкі мақсат В.
Бұл конъюнкция болып табылады. Құралған мақсатты шешу үшін
пролог ішкі мақсаттарды кезек бойынша рет-ретімен шешуге тырысады.
Бастапқыда ол мынаны шешуге талаптанады:
Сar (Make, Odometer, Years_on_road, Body, Cost), содан соң
Cost < 25000.
Cost айнымалысы екі подцельдерде ұқсас мəндерге ие. Енді осының
барлығын Test Goalмен істеп көріңіздер.
Ескерту
Cost < 25 000 ішкі мақсаты Visual Prolog жүйесінде құралған «кем»
қатынасына сəкес келеді. Кем қатынасы басқа да екі сандық объектілерге
пайдаланылатын қатынастардан ешқандай айымашылығы жоқ, бірақ та, ол
қатынастымына символмен (<) жəне де екі объектінің арасында қатыстыра
отырып жазған дұрыс.
Қарастырсақ келесі өрнек ақиқат болып табыла ма? Табиғи тілде ол
былай деп сипатталады: Тiзiмде $25 000-дан кем тұратын автомобиль немесе
$20 000-дан кем тұратын жүк машинасы бар ма?
Мына тапсырмада келесі құралған мақсаттарда пролог тиісті нəтижені
іздестіруді қайта орындайды:
Сar (Make, Odometer, Years_on_road, Body, Cost ), Cost<25000% ішкі мақсат
А немесе
truck (Make, Odometer, Years_pn_road, Body, Cost), 20000
мақсат В.
41
Құралған мақсаттағы бұл тип дизъюнкция болып табылады. Берілген
мақсат екі альтернативті ішкі мақсаттарды, бір ережеге екі ұсыныстың
біріктірілгеніне сəйкес келуі мүмкін келеді деп есептейді. Пролог екi ішкі
мақсаттарды да қанағаттандыратын нəтижелердің барлығын іздейді.
Рұхсат етілген құралған мақсатта пролог келесі ішкі мақсаттардан
құралған бірінші ішкі мақсаты іздеуге тырысады. ("автомобильді іздеу"):
car(Make, Odometer, Years_on_road, Body, Cost) жəне
Cost < 25000.
Егер
автомобиль
табылса
мақсат-ақиқат,егер
табылмаса(жүк
машинасын іздеу) – пролог келесі ішкі мақсатан тұратын екінші құрама
мақсаттарды шешуге тырысады:
truck(Make, Odometer, Years_on_road, Body, Cost),
жəне
Cost < 20000.
Visual Prolog программасы
Visual Prolog синтаксисі қасиеттер жəне өзара байланыстарды анықтау
үшін жасалған. Көбінесе (айғақтар жəне ереже) ұсыныс, предикаттар,
айнымалы жəне мақсаттарды қарастардыңыз.
Прологтың басқа болжамдардан айырмашылықтары, Visual Prolog -
бақылаушы типтердің компиляторы: əрбiр предикат үшiн қолданылатын
объекттердiң
типін
хабарлайды.
Сонымен
бiрге,
Visual
Prolog
бағдарламаларына
бұл
типтерді
орындайтын
жылдамдығы
машина
кодтарына сəйкес келуге мүкіндік береді,ал басқа жағдайда - Pascalдың
тiлдерiндегi ұқсас бағдарламалардың жылдамдығынан асады.
Енді Visual Prolog программасының негізгі төрт бөлімін талқылаймыз
– жарияланатын жəне сипатталатын предикаттар,сонымен қатар аргумент
типтері ,берілген жəне анықталған ережелер программаның мақсаты болып
табылады. Бұдан əрi ережелердiң синтаксисiн жəне хабарламаларды
толығырақ қарап шығамыз . Соңында ,программаның басқа да бөлiмдерiн
қысқаша қорытындылап сипаттаймыз: деректер қоры, тұрақтылар, əр түрлi
глобалдi бөлiмдер жəне компилятордың нұсқауы.
Visual Prolog – програмасының негізгі бөлімдері:
Prolog Visual тiлiндегi программа төрт негiзгiзгі программалық реттен
тұрады. Оларға мыналар жатады:
•
clauses (ұсыныстар) бөлiмі;
•
predicates (предикаттар) бөлiмі;
•
domains (домендер) бөлiмі;
•
goal (мақсаттар) бөлiмі.
Clauses бөлiмі- Visual Prolog программасының негізгі бөлігі; нақ осы
бөлімде айғақтар жəне ережелер жазылады, Visual Prolog операциясы
программаның мақсатын шешуге тырысады.
Predicates бөлiмі бұл (Visual Prologта кiрiстiрiлген предикаттарды
жарияламауға да болады) предикаттарды жəне домендердің (түрлер)
аргументтері жарияланады.
Достарыңызбен бөлісу: |