Республикасы білім жəне ғылым министрлігі



Pdf көрінісі
бет4/8
Дата12.03.2017
өлшемі1,43 Mb.
#8954
1   2   3   4   5   6   7   8

1. Білім 

 

25

«Логикалық  бағдарламалау  негіздері»  пəнін  үйрену  нəтижесінде  студенттер 



білуі  керек:  ЭЕМ-ді  заманауи  жəне  болашақ  бағдарламалық  қамтамасыз  етудегі 

логикалық  бағдарламалауды  рөлі  мен  орны:  логикалық  бағдарламалаудың  негізгі 

конструкциялары  мен  ұстанымдары;  Пролог  тілінің  негізгі  түсініктері;  прологтық 

конструкциялардың  синтаксисі  мен  семантикасы;  мəліметтердің  рұқсат  етілетін 

типтері;  Visual  Prolog  бағдарламасының  құрылымы;  Пролог  құралдарымен  білімді 

ұсыну  ұстанымдары;  ақпараттық-логикалық  үлгілер  құру  кезеңдері;  Прологтың 

декларативті  жəне  есептеуіш  үлгілері;  Прологты  бағдарламалаудың  негізгі  əдістері; 

ұстанымдары; мəліметтердің күрделі құрылымдарын өңдеу; терезелерді, графиктерді 

жəне  дыбысты  қолдану  тəсілдері;  логикалық  тапсырмаларды  шешудегі  Прологтың 

мүмкіндіктері,  мəліметтер  базаларын  жəне  білім  базаларын  басқару  жүйесін  құру, 

эксперттік  жүйелер  құру,  өңдеу:  табиғи-тілдік  конструкциялар;  орта  оқу  орынтегі 

информатиканың 

базалық 

жəне 


факультативті 

курстарында 

логикалық 

бағдарламалаудың əдістемелік ұстанымдарын білу. 



2. Арнайы қабілеттер мен дағдылар

Пəнді  игерген  соң  студенттердің  қолынан  келуі  тиіс:  Visual  Prolog 

бағдарламалау жүйесімен жұмысты бастай жəне аяқтай білу; қолданушының талабы 

бойынша  турбо-қабықша  конфигурациясының  баптауын  орындау;  мəтіндік 

редактордың құралдарын қолдана отырып бағдарламаны теру жəне редакциялау; ішкі 

жəне  сыртқы  мақсаттық  пайымдауларды  қолдана  отырып  диалог  режимінде 

бағдарламаны орындау; трассировка режимінде бағдарламаны реттеу (бағдарламаны 

сатылап  орындау);  бағдарламаны  дискіде  мəтіндік  файл  түрінде  сақтау  жəне  оны 

дискіден  компьютердің  жедел  жадына  «жүктеу»;  бағдарламаны  жəне  орындалатын 

файл ды ехе типіне  құрастыру; тапсырманы дұрыс қоюды сауатты орындау; Visual 

Prolog-тың  синтаксис  жəне  семантика  ережелеріне  сəйкес  бағдарламаларды  құру; 

бағдарламаны орындау нəтижесін экранға жəне басып шығару құрылғысына берілуін 

ұйымдастыру; мəліметтердің рұқсат етілетін типтері бойынша негізгі операцияларды 

орындау;  қарапайым  мəліметтер  базалары  мен  білім  базаларын  құру,  оларға 

сұранымдармен  байланысу;  тапсырмаларды  шешудің  ақпараттық-логикалық 

үлгілерін құру; құрылған үлгіні жүзеге асыратын бағдарламаны əзірлеу жəне орындау, 

алынған  нəтижелерге  талдау  жасау;  ақпаратты  автоматтандырылған  іздеу 

тапсырмаларын  шешу;  əр  түрлі  пəн  салаларының  білім  базаларын  өңдеу  бойынша 

қарапайым эксперттік жүйе құру. 

3. Жалпы кəсіби қабілеттер мен дағдылар

Логикалық бағдарламалауды үйрену студенттердің болашақ мамандар ретінде 

қажет  болатын  жалпы  кəсіби  қабілеттері  мен  дағдыларының  дамуына  септігін 

тигізеді; 

оқулықтарда 

жүргізілетін 

жəне 

əдебиеттерде 



жарияланатын 

бағдарламаларды оқу; кəсіби қарым-қатынастың (ауызша жəне жазбаша сөз сөйлеу) 

түрлі  тəжірибесін  оқу  кезеңінде  алу;  түрлі  типтер  мен  деңгейдегі  білім  беру 

ұйымдарының жұмыстарына қатысу. В.А.Каймин мен Ю.С.Завальский [1991, 23 

б.]  жалпы  орта  білім  беретін  жəне  математикалық  оқу  орынтердің 

оқушыларына  арналған  «Информатика  мен  есептеуіш  техника  негіздері» 

курсы  бойынша  эксперименттік  программа  шығарды.  Формальді  логиканың 

жеке  элементтерін  үйренуді  Прологтың  негізгі  ұғымдарын  параллельді 



 

26

үйренумен  қоса  қарастыра  отырып  бағдарлама  Прологты  практикалық 



қолдануға арналған программалау тілі ретінде үйренуге бағытталған. 

3.  Пəн  пререквизиттері:  Жасанды  интеллект,  сараптаушы  жүйелер, 

логикалық бағдарламалау 



4. Пəн постреквизиттері: Математикалық логика, информатика, мəліметтер 

қоры, жүйелік бағдарламалау. 



5. Күнтізбелік-тақырыптық жоспар

 

Пəн 

тақырыптарының 

аталуы 

а

п



т

а

 

Аудиториялық 

сабақтар  

Тапсырма түрі 

(сипаттамасы

Барл


ығы 

(сағ)  

Дəріс 



(сағ.)  

Пр/сем./зе

ртх./ 

студ саб 



(сағ.) 

СОӨЖ  

СӨ

Ж  



1   Кіріспе. Компьютерлік 

интеллект жəне 

роботтық техника 













2  Мақсат. Берілгендер. 

Білім қоры. Факті жəне 

ереже ұғымдары. 



1 









3  Жеңілдету жəне шығару 

механизмдері. 

Талқылаудың тікелей 

жəне кері тізбектері 





1 







4   Білімді 

көрсету 

моделдері. 

Фрейм. 

Логикалық 



модель. 

Семантикалық 

тор. 

Өнімдік модель. 





1 







5   2-Бөлім

Сараптаушы 

жүйе. Жүйе құрылымы 





1 







6   Сараптаушы  жүйелерді 

классификациялау. 

Сараптаушы 

жүйені 

дайындау 





1 







7  Есепті тұйық формада 

көрсету. Есепті шешіу 

кезеңдері. Бағалау. 

Түйістіру 



1 









Бөлім.          

Логикалық  

бағдарламаның  өзіндік  

қасиеттері жəне негізгі 

ұғымдары 





1 







9   Визуал Пролог ортасы 





1 









 

27

жəне мəліметтердің 



берілуі 

10 


Ортақ тағайындаудағы 

стандартты  

предикаттар жəне 

пролог бағдарламасын 

басқару 

1



1 







11  


Визуал Пролог 

ортасында рекурсия 

жəне циклдерді 

ұйымдастыру 



1



1 







12  


Визуал Пролог 

логикалық 

бағдарламалау 

ортасындағы тізімдер 



1



1 







13  


Визуал Пролог 

логикалық 

бағдарламалау 

ортасындағы жолдар 



1



1 







14 


 

Визуал Пролог 

логикалық 

бағдарламалау 

ортасындағы 

мəлімметер қоры 



1



1 







15 


 

Визуал -  Пролог 

жүйесінің графикалық 

мүмкіндіктері 



1



1 







 


 

28

 



2.Visual Prolog декларативті программалау тілінің зертханалық 

жұмыстары

Қарастырылып  отырған  зертханалық  жұмыстар  «Жасанды  интеллект 

негіздері» 

пəнінде 

қолданылады. 

Зертханалық 

жұмыстар 

жұмыс 

бағдарламасы  негізінде  дайындалды.  10-  зертханалық  жұмыс  15сағатқа 



арналған. 

 

2.1.Зертханалық жұмыс 1.Visual Prolog  логикалық программалау 

тілінің орнату жəне танысу

Мақсаты: Программа ортасымен танысу. 



 

Visual Prolog логикалық программалау тілінің ортасы

Жұмысты бастау үшін міндетті түрде Test Goal деп аталатын визуальды 

утилитін  ашу  керек.  Бұл  жұмыс  Project-Test  Goal  командасының  көмегімен 

немесе + пернелерімен жүзеге асырылады. Test Goal жақсы жұмыс 

жасауы  үшін  арнайы  енгізілген  жобалар  қолданылады.  Əрдайым  келесі 

TestGoal -жобасын құрып соны пайдаланған жөн. 

Үлгілерді орындауға арналған TestGoal-жобасы

Кейбір  анықталмаған  компилятор  Visual  Prolog    Test  Goal  жобасын 

қолдануды талап етеді.  

Ол үшін келесі əрекеттерді орындаңыз: 

1. Визуалды Visual Prolog өнім орталығын енгізіңіз.  

VDE  алғаш  енгізгеніңізде жоба бірден  енбейді, жəне  1-суреттегі  құбылысты 

көресіз.  

2. Жаңа жоба құрыңыз. 

Project-New  Project  командасын  таңдаңыз,  Application  Expert  сұхбат 

терезе пайда болады. 

 

 

 



1-сурет. Визуальды орта. 

 

3. Жобаның аты мен негізгі каталогын анықтаңыз. Base Directory келесі 



түрде ат беріңіз: 

C:\Program files\VIP52\DOC\Examples\TestGoal 



 

29

Бұл  анықтама  болашақта  енгізілетін  мəтін  үлгілеріне  өте  ыңғайлы. 



Project Name алаңында"TestGoal" деп алған жөн. Сондай-ақ Multiprogrammer 

Mode  жалаушасын  құрыңыз  жəне    Name  of.PRJ  File  алаңында  тышқанды 

басыңыз. Алаңда  TestGoal.prj жобасы пайда болады. 

 

 



 

2-сурет. Application Expert диалог терезесінің жалпы құрылымы. 

 

Жобаның мақсатын анықтаңыз. 



3-суретте  көрсетілген  Target    параметрларын  қойған  жөн.  Енді  жоба 

файлын құру үшін Create тетігін басыңыз. 

4. TestGoal-жобасын құруда қажетті компилятор опцияларын енгізіңіз. 

Диалогтық терезе Compiler Options командасын белсендендіру үшін  Options-

Project-Compiler Options командасын таңдаңыз. 

Warnings ашыңыз. Келесі əрекеттерді орындаңыз. 

• Nondeterm қосқышын енгізіңіз. Бұл Visual Prolog компиляторы үшін қажет.  

 

 



 

3-сурет.Диалогты терезе Application Expert Target құрылымында. 

 

•  Non  Quoted  Symbols  Strong  Type  Conversion  Check  и  Check  Type  of 



Predicates.  жалаушаларын  алып  тастаңыз.  Бұл  басшылық  берген  үлгілерді 

орындауда маңызды емес ескерту компиляторларға  əсер етеді.  



• Компилятор опциясын сақтау үшін  ОК тетігін басыңыз.  

Бұл  əрекеттердің  нəтижесінде  диалогтық  терезе  Compiler  Options  4-

суреттегідей көрінеді. 

 


 

30

 



 

4-сурет. Компилятор опциясын енгізу. 



 

Редактор терезесінің ашылуы

Жаңа  редакторлық  терезе  құру  үшін  менюдегі  File-New  командасын 

қолданамыз. Нəтижесінде жаңа Noname деп аталатын терезе пайда болады. 

Визуальды 

орталығындағы 

– 

стандартты 



мəтін 

редакторы. 

Басқа 

редакторлардағыдай,  курсор  мен  тышқанды  пайдалануға  болады.  Ол  Edit 



менюдағы Cut, Copy и Paste, Undo и Redo командаларын қолдайды. Сондай-

ақ,  Edit  менюында  осы  əрекеттер  үшін  «ыстық»  комбинация  көрсетілген. 

Айтылған  редактор  көмекші  VDE  (редактор  терезесіндегі    клавишасы) 

жүйесінде орналасқан.  

Бағдарламаны енгізу жəне мəтіндеу. 

Сіздің  жүйеңіз  дұрыс  жұмыс  жасауын  тексеру  үшін    келесі  мəтінді 

терезеге енгізу қажет:  

GOAL  


write("Hello world"), nl. 

Пролог  терминінде  бұл  GOAL  деп  аталады  жəне  ол  бағдарламаның 

орындалуы  үшін  осы  жеткілікті.  GOAL  орындау  үшін    Project|Test  Goal 

командасын  енгізуіңіз  керек  немесе+  комбинациясын  басыңыз. 

Егер  сіздің  енгізген  жүйеңіз  дұрыс  болса,  онда  монитор  экранында  5-

суреттегідей көрініс пайда болады. 

 

 

 



5 сурет.  "Hello world" Тестік бағдарлама. 

 

31

Бағдарламаның  орындалу  қорытындысы  жоғарғы  жақта  жеке 



терезелерде 

орналасады, 

(суретте 

ол 


 

Inactive 

C:\Vip\Doc\Examples\TestGoal\Obj\goal$000.exe деп аталады), жəне оны басқа 

GOAL –ды тестілеу кезінде жабу қажет. 

Мысалдарды тестілеу

Мысалдарды  C:\Program  files\VIP52\DOC\EXAMPLES  каталогынан  табуға 

болады.. 

Test Goal мысалында тестілеу

Визуальді  өнім  орталығында  кез-келген  мысалды  ашып,  Test  Goal 

утилитасын  пайдалану  арқылы  тестілеу  жүргізіңіз.  Ол  үшін  келесі 

қадамдарды орындаңыз: 

1. Visual Prolog визуальді өнім орталығын енгізіңіз. 

2.  Арнайы  TestGoal-проектасын  ашу  үшін  Project|Open  Project  меню 

командасын қолданыңыз. 

3.  chCCeNN.pro.-нің    кез  келген  файлын  ашу  үшін  File|Open  меню 

командасын қолданыңыз. 

4.  Project|Test  Goal  менюінде  енгізілген  мысалдарды  тестілеу  үшін  

мынадай  командаларды  қолдан:  (немесе  мына  клавиштерді  басыңыз 

+). 

Test  Goal    GOAL  бағдарламасында  барлық  мүмкін  болатын 

қорытындыларды  тауып  жəне  GOAL  бағдарламасында    қолданылатын 

барлық өзгерістерді көрсетеді. 



Test Goal утилиті құрылымына комментарий 

Визуальді  өнім  орталығының  утилитасы    GOAL-ды    арнайы 

орындаушы  файл  бағдарламасы    ретінде    көрсетеді  жəне    Test  Goal    оны 

орындауға  жібереді.  Бұл  утилита    берілген  GOAL  кодын  іштей  кеңейтіп, 

енгізілген  бағдарламалардың  барлық  жағдайдан  шығуына  мүмкіндік 

жасауына  жəне    қолданылған  өзгерістердің    мағыналарын  көрсетеді.  Test 

Goal    утилитасы  бұл  кодты  берілген  жобаны    компилятор  опциясына 

қолданады. 

Қателерді өңдеу 

Егер  сіз  бағдарлама  барысында  қателік  жіберсеңіз    жəне  оны 

жойғыңыз  келсе,  онда  Errors  (Warnings)  терезесі  пайда  болып  онда 

жіберілген қателердің тізімі беріледі. (6-сурет) 



 

 

32

 



 

6-сурет. Қатені жөндеу. 

Қатені екі рет бассаңыз, қатенің алғашқы мəтініне қайта келесіз. Visual 

Prolog  интерактивті  анықтамалық  жүйесін  шығару  үшін    клавишасын 

басасыз.  Анықтамалық  терезе  ашылғаннан  кейін,  Search  тетігін  басыңыз. 

Сосын  қате  нөмірін  теріңіз,  сонда  экранда  ол  туралы  толық  ақпарат    ала 

аласыз. 

Пролог жəне құрылым бағдарламасының синтаксистік тілі

 

Пролог бағдарламасы төмендегі кеңейтілген құрылымда болады. 



 

domains  

/* ... 

Домендерді хабарлау  



... */  

predicates  

/* ... 

Предикаттарды хабарлау  



... */ 

goal 


/* ... 

подцель_1, подцель_2, жəне т.б..  

... */  

clauses  

/* ... 

Сөйлем (фактілер жəне ереже)  



...*/ 

 

Пролог  бағдарламаның  мақсатын  шешетін  Clauses  бөлімінде  фактілер  



мен ережелер бар,  

Predicates  секциясында предикаттармен осы предикаттардың аргумент 

типтері хабарланады.  

Предикаттардың  атауларымен    алу,  жұлдызша  пробел  символдарын 

пайдалануға болмайды.   

Предикаттар хабарландыруы келесі форманы құрайды: 


 

33

predicates  



predicateName (argument_type1, argument_type2,...,argument_tуреN) 

Мұндағы:  argument_type1,  ...,  argument_typeN  –  стандартты  домен 

немесе  domains  секциясындағы  хабарланған  домендер.  Хабарланған 

домендер аргументтері мен аргумент типінің бейнелері екеуі бір. 

 

Бақылау сұрақтары 



1.

 

Visual Prolog тілінің ортасы мен интерфесі. 



2.

 

Тілдің құрауыштары мен утилиттері. 



 

Есеп  беру  мазмұны  жəне  формасы:  Тапсырмалар  нұсқасын  құрастыру. 

Тапсырманы орындау реті. Орындау нəтижелері. Қортынды. 

 

2.1. Зертханалық жұмыс 2.Visual Prolog  логикалық программалау 

тілінің негізі. 

Мақсаты: Фактілерережелер жəне сұрауларды орналастыру əдістері. 

 

Ұсыныстар 



Пролог тiлін құрайтын  тек екі түрлі ұғым бар: ереже немесе факті. Бұл 

ұғымдар    прологта  ұсыныс  (clause)  терминiмен  белгiлi.  Прологтағы 

программалардың негізі ұсыныстардан тұрады. 

Факті  объекттердiң  арасындағы  қатынасты    немесе  қасиеті  көрсетеді. 

Факті  өзiне-өзі  жеткiлiктi.  Прологқа    айғақтың  расталуы  үшiн  қосымша 

дəлелдеулер  керек болмайды жəне де факті логикалық қорытындының негізі 

ретінде қолданылды. 

Ережелерді  қарастырсақ.  Проглогта    бір  фактінің  сенімділігінен 

басқада  бірнеше  фактілер  табуға  болады.  Ереже  –  бұл  берілгендерді 

логикалық  түрде  суреттейтін  прологтың  құрылымы.  Ереже  -  бұл    нақтылы 

қасиет немесе қатынас, басқада қатынастар белгілі болғанда. Бұл қатынастар  

үтiрлермен бөлiнген. 

Ережелерге бірнеше мысалдар келтірейік. 

1-Мысал.  Кейбір  тағамдардың  Диана  мəзіріне  сəйкес  келетіндігіне 

қорытынды жасай алатын ережелер. 

Диана-вегетарианшы ол тек қана өзінің дəрiгерiнің айтқанымен тамақтанады. 

(Diane is a vegetarian and eats only what her doctor tells her to eat ) 

Алдыңғы  ереже  мен  мəзірді  біле  отырып,  мəзірдегі  тағамдарды  Диана 

таңдауын алдын ала қорытынды жасай  аласыз. Сіз бұл жұмысты іске асыру 

үшін тағамның берілген шектерге сəйкес келетіндігін тексеруіңіз керек: 

•  Food_on_menu көкөніс  болып табылады ма? 

•  Food_on_menu дəрігердің тізіміне кіреді ме? 

•  шешiм:  егер  екi  жауап  оң  болса,  Диана  Food_on_menu-  тапсырыс  бере 

алады. 

Пролгогтағы  ұқсас  қатынас  ережемен  анықталуы  керек,  өйткенi 



қорытынды фактіге сай негiзделген. Ереженi жазудың  бiр нұсқасы: 

 

34

diane_can_eat(Food_on_menu):-vegetable(Food_on_menu), 



on_doctor_list(Food_on_menu). 

 

vegetable(Food_on_menu)  -дан  кейiн    үтір  тұратынына  көңiл  аударыңыз.  Ол 



бiрнеше  мақсаттардың  конъюнкциясын  айқындайды    жəне  "жəне"  сияқты 

оқылады; 

екi 

ереже 


де 

diane_can_eat(Food_on_menu) 



үшін  

vegetable(Food_on_menu)  жəне  on_doctor_list(Food_on_menu  )  ақиқат  болуы 

керек. 

2-Мысал. Егер Personl Person2-нiң ата-анасы болып табылса, сiз ақиқат 

фактісін жазғыңыз келеді деп болжаймыз. Керек факті осылай көрiнедi: 

parent(paul, samantha). 

Бұл  айғақ  бойынша  Пол,  Самантаның  ата-анасы  екендігін  білдіреді. 

Бiрақ  Visual  Prolog  мəліметтер  қорында  факілер  бар  деп  болжайық.  Ол 

айғақтар  əкелік  қатынасты  қалыптастырады.  Мысалы,  "Пол  Самантаның 

əкесі": 

father(paul, samantha). 

Енді  сiзде    аналық  қатынас  қалыптастырушы  айғақ  болсын  дейік, 

"Джулия - Самантаның анасы": 

mother(julie, samantha). 

Егер де сіздерде бiрнеше фактілер бар болып, жəне олар аталық-аналық 

қарым-қатынастарды  қалыптастыратын  болса,онда  мəліметтер  қорындағы 

əрбір ағайынды қатынасқа уақытты өлтірудің қажеті жоқ. 

Сіз білетіндей, Personl Personа-ның ата-анасы, егер  Personl-Person2-нің  

əкесi  немесе  Personl  Person2-нің  анасы  болса,  онда  неге  бұл  шектерді 

біріктіретін  ережелерді  жазбасқа?  Бұл  шарттарды    табиғи  тiлде 

қалыптастырғаннан кейін оларды пролог ережесі бойынша жазу жеткілікті. 

parent(Personl, Person2):- father(Personl, Person2). 

parent(Personl, Person2):- mother(Personl, Person2). 

 

Бұл пролог ережелері 



Personl    Person2-нiң  ата-анасы  болады,  егер  Person1  Person2-нің  əкесі 

болса жəне 

Personl    Person2-нiң  анасы  болады,егер    Personl  Person2-нiң  анасы 

болcа. 


3-Мысал.  Егер  адамға  машина (likes) ұнаса  жəне  машина  сатылса  (for 

sale), онда ол машинаны сатып ала алады. 

Бұл  ретте  қатынас  пролог  тіліне  келесі  ереже  бойынша    ауыстырыла 

алады: 


can_buy(Name, Model):-person(Name),  

car(Model), likes(Name, Model), for_sale(Model). 

 

Бұл ережелер келесi қатынастарды сипаттайды: 



Name  сатып ала алады (can_buy ) Model, егер Name адам(person) жəне  

Model  машина  (car)  болса,  жəне  Model  сатылса  (for_sale)  Name  Model  –ді 



 

35

ұнатады  (likes).  Егер    бұл  ереже  4  шартты  қанағаттандырса,  онда  ол  ақиқат 



болады. 

Автомобилдi 

сату 

проблемасының 



шешудің 

жолын 


іздейтін 

ch02e02.pro-программасы көрсетілген. Тексеріп көріңіз: 



 

predicates 

can_buy(symbol, symbol) 

person(symbol) 

car(symbol) 

likes(symbol, symbol) 

for_sale(symbol) 

clauses 

can_buy(X,Y):-person(X), car(Y), likes(X,Y), for_sale(Y). 

person(kelly). 

person(]udy). 

person(ellen). 

person(mark). 

car(lemon). 

car(hot_rod). 

likes(kelly, hot_rod). 

ikes(judy, pizza). 

likes(ellen, tennis). 

likes(mark, tennis). 

for_sale(pizza). 

for_sale(lemon). 

for_sale(hot_rod). 

 

Джуди  жəне  Келли  не  сатып  ала  алады?  Hot_rod-ты  кім  сатып  алуы 



мүмкін? Келесі мақсаттарды GOAL:  -бөлiмiнде сынап көрiңiз. 

can_buy(Who, What). can_buy(judy, What). can_buy(kelly, What). can_buy(Who, 

hot_rod). 

Бұл программаға басқа фактілер мен  жаңа ережелер қосайық. Өзіңіздің 

алдында  құрған  сұраныстарыңыз  бойынша  программаны  тексеріп  көріңіз. 

Қорытындының нəтижелері сіздің күткеніңізді  ақтады ма, əлде жоқ па? 

 

Жаттығулар



1. Visual Prolog-та келесі ережелеріне сəйкестендіріп жазыңыз: 

eats(Who, What):- food(What ), likes(Who, What). 

pass_class(Who ):- did_homework(Who ), good_attendance(Who ). 

owns(Who, What):- bought(Who, What). 

2. Берілген сөйлемдерден Visual Prolog ережелерін құрыңыз: 

 



адамның асқазаны бос болса, онда ол аш; 

 



егер    жақсы  ақы  төлеленетін  жəне    көңiлдi  жұмыс  болса,онда  ол 

барлығына ұнайды; 

 

автокөлiкті кім сатып алса,онда сол басқарады. 



 

36

Предикаттар 



Прологтағы    қатынас  предикат  деп  аталады.  Аргументтер  –  бұл  осы 

қатынастар  мен  байланыстырылатын  объекттер;    айғақта  likes(bill,  cindy) 

қатынас; likes- бұл предикат, ал bill жəне cindy –аргументтер.  

Əртүрлі  сандардық    аргументтерімен  берілген  бірнеше  предикат 

мысалдары: 

 

pred (integer, symbol) 



person (last, first, gender) 

run() 


birthday (firstName, lastName, date) 

 

Алдыңғы  мысалда  көрсетілгендей  предикаттарда  аргумент  болмауы 



мүмкін,  бірақ  ондай  предикаттардың  қолданылуы  шекеулі.  Mr.  Rosemont 

атын  анықтау  үшiн  person(rosemont,  male,  male)  сұрауларын    қолдануы 

мүмкiн.  Бiрақ  сұрауларда  run  аргументінің  дəлелдерiнсiз  не  iстейдi? 

Программада  run  ұсынысы  барма  анықтайық,жəне  егер  run  ереженің  басы 

болса, онда берілген ережені есептеуге болады.Кей жағдайларда бұл пайдалы 

болады.  Мысалы,  егер  сiз  əртүрлi  соған  сəйкес  жұмыс  iстейтiн  программа 

құрғыңыз келсе,онда бұл run -ның ұсынысында болады. 

Айнымалылар 

Қарапайым  сұрауда,кімнің  теннисті  жақсы  көретіндігін  табу  үшін 

айнымалылар қолданамыз. 

Мысалы: 

likes. (X, tennis) 

Бұл  сұрауда  Х  əрiпін  белгiсiз  адамды  табу  үшiн  айнымалы  ретінде 

қолданамыз.  Айнымалының  аты  Visual  Prolog  кейiн  (бас  немесе  кiшi) 

əрiптердiң  кез  келген  саны  тұра  алатын  (немесе  астын  сызу  символы)  

цифрлар  немесе  асты  сызулы  символдардан  басталуы    керек.  Дұрыс 

айнымалының аты төменде келтiрiлген: 

My_first_correct_variable_name Sales_10_ll_86 

келесi үш - терiсi: 

1stattempt 

second_attempt 

"Disaster " 

Атауларын  əртүрлi  регистрдiң  айнымалы  əрiптерімен  қолданған  

ыңғайлы: 

IncoraeAndExpenditureAccount 

Мағынасы түсiнiкті таңдау айнымалының атын оқу үшiн программаны 

өте ыңғайлы iстейдi. 

Мысалы: 


likes(Person, tennis) 

жақсы,оған қарағанда 

likes(Х,tennis). 


 

37

өйткенi  Person  х  қа  қарағанда  көбiрек  мағына  береді.  Мақсатты  ендi  сынап 



көрiңiз: 

GOAL likes (Person, tennis). 

Visual Prolog жауап бередi: 

Pers on=ellen Person=mark 

2 Solutions 

Өйткенi,  мақсат  екi  шешiм  ellen  жəне  markтiң  мəндерiмен  айнымалы 

Personдарды дəйект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ру үшін 

қолданылады. 

Ch02e03.pro  -нiң  программасы  қарап  шыға  алады,  сонымен  қатар 

айнымалы өз мəндерiн алады. 

 

predicates 



likes(symbol, symbol) 

clauses 


likes(ellen, reading). 

likes(John, computers). 

likes(John, badminton). 

likes(leonard, badminton). 

likes(eric, swimming). 

likes(eric, reading). 

 

Сұрауларды  қарап  шығамыз:  жүзу  мен  оқуды  жақсы  көретiн  адам  бар 



ма? 

likes(Person, reading), likes(Person, swimming). 

 

Пролог      программадағы    айғақтарды  басынан  соңына  дейін  iздестiру 



арқылы  сұраудың екі бөлiгiн де шеше бастады. Сұраудың бірінші бөлімі: 

likes(Person, reading) 

Person  еркiн  айнымалы;  пролог  шешiмдi  табар  алдында  оның  мəнi 

белгiсiз.  Басқа  жағынан,  екiншi  аргумент,  reading  атымен  белгілі.  Пролог 

бiрiншi 

сұраулардың 

бiр 

бөлiгiне 



сəйкес 

келетiн 


айғақ 

iздейдi. 

Программадағы бiрiншi айғақ 

likes (ellen, reading) 



 

38

Демек  пролог 



еркін 

Person 


айнымалысын 

ellenның 

мəнiмен 

байланыстырады,  (айғақтағы  reading  сұраулардағы  readingге  сəйкес  келедi) 

бiрiншi  сұраулардың  бiр  бөлiгiн  қанағаттандырады  айғақты  тиiстi  мəнге 

ұластырады.  Дəл  сол  уақытта  пролог  көрсеткіші  айғақтардың  тізіміне 

бағытталады,  ол  іздеу  процедурасының  қаншалықты  алға  басқандығын 

көрсетеді. 

Бұдан  əрi,  (жузу  мен  оқуды  ұнататын  адамға  іздеу  салу)  сұрауларды 

толық шешу үшiн екiншi сұраудың бiр бөлiгi шешілуi керек. Person ellen мен 

байланысты болғандықтан,проглог айғақты іздеуі тиіс. 

likes (ellen, swimming) 

Пролог бұл айғақты программаның басынан іздейді,бірақ сəйкестік жоқ 

(өйткені  программада  мұндай  айғақ  жоқ).  Егер  Person  ellen  мəнi  болса 

сұраудың екінші бөлімі жалған болады. 

Ендi 


пролог 

айнымалы 

Personдарды 

босатады 

жəне 

бiрiншi 


сұраулардың бiр бөлiгiнiң басқа шешiмiн табуға талаптанады. Басқа айғақты 

іздестіру  бірінші  бөлімнің  сұранысын  қанағаттандырады,  (белгіленген 

позицияға қайта оралу, қайта іздеу деп аталады) айғақтардың тiзiмiндегi нұсқ 

ағыштан басталады. 

Пролог  оқуды  жақсы  көретiн  жəне  likes(eric,  reading)  айғағын  табатын  

адамды  iздейдi.  Person  айнымалысы  қазір  eric  мəнiмен  байланысты,  жəне 

пролог  екінші  бөлімнің  сұранысы  бойынша  айғақтар  программасында  қайта 

iздеуді бастайды. 

likes(eric, swimming) 

Пролог  сəйкестендірілген  (программадағы  соңғы  ұсыныс)  жəне 

сұраныс толығымен қанағаттандырылады. 

Person=eric. 1 Solution. 




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет