1-мысал. Пролог-Д жүйесiнде ұзындығы a және b болатын тiк төртбұрыштың ауданын есептейтiн программа құру қажет. Тiк төртбұрыштың ауданын есептейтiн формула белгiлi: S=a*b. Егер тiк төртбұрыштың ауданы есептелетiн болса, онда үш аргументi белгiлi предикат болу қажет. Ол қабырғалар ұзындығы мен аудан шамасы. Предикаттың аты осы қойылған критерийге байланысты оның мағынасына байланысты қойылады, бiз үшiн площадь аты сәйкес келедi:
УМНОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(X,Y,0,Z);
площадь(a,b,S)<-УМНОЖЕНИЕ(a,b,S);.
Бiрiншi УМНОЖЕНИЕ предикаты тек жазудың түрiн сипаттау үшiн қажет болды. Площадь предикатын қолдану арқылы, берiлген қабырғаларға сәйкес ауданды ғана емес, сонымен бiрге берiлген аудан мен бiр қабырғаға байланысты басқа қабырғасын да табуға болады. Бiлiм қорына мынадай сұрақ қоюға болады:
?площадь(10,20,S);
Пролог-Д жүйесiнiң жауабы: S=200,
?площадь(a,20,100);
Пролог-Д жүйесiнiң жауабы: а=5.
2-Мысал. Пролог-Д жүйесiнде қабырғаларының ұзындығы a және b болатын табаны төртбұрыш және биiктiгi һ болатын параллепипедтiң көлемiн есептейтiн программа құру қажет. Параллелепипедтiң көлемiн келесi формуламен анықтауға болады: Vпар=a*b*h. Егер параллелпипедтiң көлемiн анықтау қажет болса, онда қырларының ұзындығы a және b, биiктiгi һ және көлем шамасы болатын төрт аргументтен тұратын предикат болу қажет. Предикаттың аты осыған негiзделген болу қажет, яғни объем аты критерийдi толығымен қанағаттандырады:
УМНОЖЕНИЕ(X,Y,Z)<-УМНОЖЕНИЕ(X,Y,0,Z);
объем(a,b,h,V)<-УМНОЖЕНИЕ(a,b,S), УМНОЖЕНИЕ (S, h, V);
Осы жазуды қолдана отырып, берiлгендерге байланысты тек қана көлемiн анықтап қана қоймай, сонымен қатар кез-келген қыры мен биiктiгiн анықтауға болады. Басқа альтернативтi түрде көлемнiң формуласын басқаша мына түрде жазуға болады:
Vпар=Sосн*h.
Бұл бiлiм қорын өз бетiнше жазу қажет. Ол үшiн бiлiм қорына келесi сұрақты қоюға болады:
?объем(10,20,5,V);
Пролог-Д жүйесiнiң жауабы: V=200.
Арифметикалық предикатпен басқа да екi БОЛЬШЕ және НЕ екi предикат қолданылады. БОЛЬШЕ(Арг1,Арг2) предикаты екi бүтiн немесе айнымалыларды теңестiру үшiн сипатталған. Ол бүтiн немесе нақты бүтiн айнымалыдан тұратын екi аргументтен тұрады. Екi аргументте дәл сол кезде анықталған болу керек. Егер осы қажеттiлiк орындалмаса, онда “Функция орындалмайды“ деген қате көрсетiледi. Предикат орындалады, егер Арг1 > Арг2, ал басқаша орындалмайды. БОЛЬШЕ предикаты бiреу болғанымен, оны сандық ақпаратты теңестiруде барлық предикаттар үшiн сипаттау тиiмдi: тең-РАВНО; кiшi- МЕНЬШЕ; кiшi не тең-МИР және басқа да. Бұл төменде көрсетiлген бiлiм қорын көрсетедi:
РАВНО(X,X);
МЕНЬШЕ(X,Y)<-БОЛЬШЕ(Y,X);
МИР(X,Y)<-НЕ(БОЛЬШЕ(X,Y);
Соңғы сөйлемде НЕ предикаты қолданған, оның синтаксисi НЕ(Арг1). Бұл тұрақты предикат бiр ғана аргументтен тұрады, ол әрқашанда предикат болу қажет. НЕ предикаты тек предикат-аргументi орындалмағанда ғана орындалады.
Достарыңызбен бөлісу: |