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



жүктеу 1,43 Mb.
Pdf просмотр
бет27/28
Дата04.01.2020
өлшемі1,43 Mb.
#25855
1   ...   20   21   22   23   24   25   26   27   28

 

68

сiз ("Maggie \" \, \ F \) personнiң барлық əйелдерiн табылу үшiн (Name, \ F \) 



personның  мақсаты  бар  person  шақыра  аласыз,  немесе  Maggieнiң  аты 

бойынша əйел сiздiң деректер қорыңызға бар болатын тексеру үшiн. 

Factsтың  бөлiмiндегi  предикаттарын  беттерiнше  табиғатына  əрдайым 

детерминация  жасамалған.  Айғақтар  өйткенi  бағдарламаның  орындауы, 

компилятор  уақытында  кез  келген  уақытта  қосыла  алады  əрдайым  iздестiру 

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

есепке  алуы  керек.  Егер  бөлiмде  үшiн  бiр  айғақтан  астам  болмайтын 

предикат  facts  барып  тұр,  онда  сiз  бұл  (егер  предикат  əрдайым  бiр-ақ  айғақ 

алуы  керек  немесе  singleнiң  маңызды  сөзi)  determнiң  маңызды  сөзiнiң 

айғағының предикатты тануын алдыңызда жазып декларация жасай аласыз. 

facts 

determ daylight_saving(integer) 



 

Айғақты  алып  үлгеретiн  деректер  базасының  детерминделген 

предикаты  үшiн  жаңа  айғақ  сiз  қатенi  алыңыз  талпынғанда  қосылғанын 

байқаймыз. 



 

Iшкдеректер базасының жаңартуы 

Деректер  базасының  предикаттары  үшiн  айғақтар  бұл  соңғы  мысалда 

көрсетiлетiн  clausesтiң  бөлiмiндегi  компиляция  уақытында  анықтала  алады. 

Фак  сенi  орындаулар  уақытында  қосылуға  жəне  предикаттар  төменде 

айтылған  қолдана  алып  тастала  аласың.  Сонымен  бiрге  айғақ  clausesтың 

бөлiмiндегi  компиляция  нақтылы  уақытында  алып  тасталуға  болады,    олар 

орындау  уақытында  қосылған  айғақтардан    негізгі  айырмашылығы  бола 

алады. 


Айғақтары  бар  жұмыс  үшiн  үйреншiктi  предикаттар  Visual  Prolog: 

assert,  asserts,  assertz,  retract,  retractall,  consult  жəне  save  -  бiр  немесе  екi 

дəлелдердi  иемдене  алады.  Мiндеттi  емес  екiншi  дəлел  iшкi  деректер 

базасының аты болады. 

/1  жəне  /2  белгi  предикаттың  осы  болжамы  үшiн  дəлелдердiң  керек  санын 

предикаттың  əрбiр  атынан  кейiн  көрсетедi.  ((i  )  */  жəне  (o,  i  )  */)  /*)  сондай 

/*лар)  түсiнiктер  предикат  ол  үшiн  параметрлердiң  (жəне  )  ағындарының 

көрсетедi. 

Бағдарламаның орындауы айғақтардың енгiзуi уақытында 

Айғақтар  орындаулар  уақытында  предикаттардың  арқылылардың 

айғақтарының  iшкi  деректер  қорына  қосыла  алады:  assert,  assertaлар  жəне 

assertz, немесе файлдан айғақтардың жүктеуi жолымен consultтар арқылы. 

Орындау  бiр  айғақтың  қосымшасы  үшiн  үш  предикат  уақытында  бар 

болады: 


asserta(

 

%   (i) 



asserta(,   facts_sectionName) 

%   (i,   i) 

assertz(

 

%   (i) 



assertz(,   facts_sectionName) 

%   (i,   i) 

assert(

 

%   (i) 




 

69

assert(,   facts_sectionName) 



%   (i,   i) 

     Asserta  предикат  осы  предикат,    assertz  үшiн  бар  айғақтардың  алдында 

айғақтарының  деректер  қорына  жаңа  айғаққа  қыстыртады  айғақтар  осы 

предикаттың  бар  айғақтарынан  кейiн  қыстыртады.  Қолдануы  assertтың 

предикаттары нəтиже бередi, assertzдың қолдануын ыңғайлы 

Деректер 

базасының 

предикаттарының 

аттары 

болғандықтан  



бағдарламаның  iшi  сирек  кездесетiн  немесе  (жергiлiктi  айғақтардың 

бөлiмдерi  үшiн)  модул,  asserta  жəне  айғақтардың  деректер  қорына  айғақ 

толықсытуы  керек  болатын  assertzдың  игi  үшiн  əрдайым  белгiлi.  Дегенмен 

түрдiң  тексеруi  айғақтардың  деректер  қор  тиiстi  мақсаттарындағымен 

жұмысын мiндеттi емес екiншi дəлелдi қолдануға боладуға қамтамасыз етiлу 

үшiн сол үшiн. 

Ғибраттанушыны бiрiншi предикат Suzanne туралы personның предикат 

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

айғақтарынан  кейiн  қояды.  Екiншi  -  personның  предикатының  барлық  бар 

айғақтарының  алдында  Michael  туралы  айғақ.  үшiншi  -  John  туралы  айғақ 

likesDatabaseнiң  айғақтарының  деректер  қорына  likesтiң  барлық  басқа 

айғақтарынан кейiн, төртiншi Shannon туралы айғақты қояды 

 

assertz(person("Suzanne", "New Haven", 35)).  



asserta(person("Michael", "New York", 26)). 

assertz(likes("John",   "money"),   likesDatabase).  

asserta(likes("Shannon",   "hard work"),   likesDatabase). 

 

Деректер базасының бұл предикаттардың шақыруынан кейiн көрiне сiз 



басталған жұмыссыз келесi айғақтармен сияқты сияқты: 

% Iшкi деректер базасы - dbasedom 

("Michael \" \, "New York \" \, 26) person. 

%.0....   person.... басқа айғақтар.  

("Suzanne \" \, "New Haven \" \, 35) person. 

% Iшкi деректер базасы - likesDatabase 

("Shannon \" \, "Hard work \" \) likes. 

%.0....  likes.. басқа айғақтар.  

("John \" \, "Money \" \) likes. 

Ылғи  бiр  айғақ  екi  рет  бекитiн  кодқа  жазуға  қапылыста  сақтаныңыз.  Iшкiсi 

деректер  базалары  ешқандай  да  қайталанбаушылықтарды  ескермейдi, 

сондықтан ылғи бiр айғақ айғақтардың iшкi деректер қорында сан рет көрiнiп 

қала алады. Қайталанбаушылыққа тексеруi бар assertтың болжамын дегенмен 

өте оңай жазу: 

 

 

facts – people 



person(string, string) 

predicates 

uassert(people) 



 

70

clauses 



uassert(person(Name, Address)):- 

person(Name, Address),  

; % OR  


assert(person(Name, Address)). 

      Файлдан айғақтарының оқуы 

    Consult  предикат  factsтың  бөлiм  суреттеп  айтылған  айғақтар  fileNameнiң 

файлынан  оқиды,  жəне  олардың  соңында  тиiстi  деректер  базасының  сiздiң 

бағдарламаңызына  қыстыртады.  Consult  предикат  бiр  немесе  екi  дəлелдi 

алады: 


consult(fileName) 

 

 



%   (i) 

consult(fileName,  databaseName) 

 

 %   (i,   i) 



 

    Егер  сiз  тек  қана  (деректер  базасының  атысыз)  бiр  дəлелмен  consult 

шақырсақ,  дегенмен  assertzдарға  қарағанда,  онда  тек  қана  бөлiмде 

(dbasedomның үндемеу бойыншасына) атсыз сипатталған айғақтар саналады. 

     Егер сiз (деректер базасының файл аты жəне аты) екi дəлелдерi бар consult 

шақырсаңыз,  онда  көрcетiлген  деректер  базасынан  тек  қана  айғақтары 

тексерiледi.  Егер  файл  бiрдеңенi  көрcетiлген  базасының  айғақтарынан  басқа 

əлi  болса,  онда  ол  бұл  жолға  дейiн  жеткенде  consultтiң  предикаты  қатенi 

қайтарады. 

Consultтың  предикаты  айғаққа  бiр-бiрдендерi  оқитынын  көңiл  аударыңыз. 

Егер  файл  он  айғақтарда  болса,  жетiншi  айғақта  қандай  болмасын 

синтаксистiк  қателiк,  consultте  болады  айғақтардың  деректер  қорына  алты 

бiрiншi айғақтарын енгiзiледi, кейiн қателiк туралы хабар сiз не бередi. 

Consultтың предикаты тек қана сол saveны құратын қалыптағы файлдары оқи 

алатынын атап өтемiз. Файлдар болуы керек: 

 



екi  тырнақшалардағы  жолдары  iшiнде  отыратын  жоғарғы  регистрдiң 

нышандары, ерекшелiкке; 

 

жолдар екi есе шығын iшiнде отыратын кемшiлiктер, ерекшелiкке; 



 

түсiнiктер; 



 

бос жолдар; 



 

(symbol ) идентификаторлар екi тырнақшаларсыз. 



Əскерилiк Аққу редакторда жасау немесе айғақтары бар файлдың өзгерiсiнде 

сақтауы керек. 

Бағдарламаның орындауы айғақтардың алып тастауы уақытында 

Retract  предикат  айғақтар  бiр  iзге  салады  жəне  олардың  iшкi  деректер 

базасынан алып тастайды. Ол келесi қалыбы болады: 

retract(

%(i) 

retract(, databaseName)     % (i, i) 



Retract  предикат    айғақпен  бағдарламаның  орындалуы   

еркiн  айнымалы  уақытында  ұластыра  дəл  келетiн  сiздiң  деректер  қорыңыз 

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



жүктеу 1,43 Mb.

Достарыңызбен бөлісу:
1   ...   20   21   22   23   24   25   26   27   28




©g.engime.org 2025
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау