Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


Curcor(R1,C)




¬ першому виклику предикату cursor дв≥ зм≥нн≥ RC - в≥льн≥; що означаЇ - предикат cursor буде викликатис€ потоковим зразком cursor (o,o). «м≥нн≥ в≥льн≥, бо зустр≥чаютьс€ вперше. јнал≥затор потоку взнаЇ також, що, €кщо зм≥нна не використовуЇтьс€ в голов≥ фрази, тод≥ ц€ зм≥нна буде вих≥дним аргументом в першому предикатному виклику в т≥л≥ фрази.

” вираз≥ R1=R+1 анал≥затор потоку встановлюЇ, що зм≥нна R прив'€зана, тому що з'€вл€Їтьс€ з предикату cursor. якщо б вона була в≥льною, тод≥ б видавалось пов≥домленн€ про помилку. R1 стане п≥сл€ цього виклику в≥домим аргументом.

¬ останньому виклику cursor зм≥нн≥ R1 зустр≥чались попередньо, тому вони обробл€ютьс€ €к аргументи входу, а виклик буде мати зразок потоку cursor (i,i).

 оли викликаЇтьс€ предикат, визначений користувачем, тод≥ в≥н обробл€Їтьс€ аналог≥чно стандартному предикату. Ќаприклад,

Predicates

Changeattribute(Integer, Integer)

Clauses

changeattribute(NewAttrib, OldAttrib):-

Attribute(OldAttrib), attribute(NewAttrib).

 

Goal

changeattribute(112, Old), write("Hello"),

attribute(Old), write("there").

¬ розд≥л≥ goal перший виклик предикату changeattrib зроблено потоковим зразком типу changeattrib(i,o) (тому що перший аргумент в≥домий - 112, а другий Old - н≥). «в≥дки, в фраз≥ дл€ changeattrib зм≥нна NewAttrib буде аргументом входу, а OldAttrib - аргументом виходу. јле, €кщо потоковий анал≥затор зустр≥чаЇ першу п≥дц≥ль attribute(OldAttrib), тод≥ предикат attribute буде викликатись потоковим зразком attribute (o), а другий виклик attribute буде мати потоковий зразок attribute(i).  ≥нцевий виклик attribute в goal будет мати потоковий зразок входу, тому що Old з'€вл€Їтьс€ ≥з changeattrib.

 

10.2. еруванн€ потоковим анал≥зом.

якщо потоковий анал≥затор взнаЇ, що стандартний предикат викликаЇтьс€ не ≥снуючим потоковим зразком, тод≥ видаЇтьс€ пов≥домленн€ про помилку. ÷е може допомогти ≥дентиф≥кувати н≥сен≥тн≥ потоков≥ зразки при створенн≥ предикат≥в користувача, €к≥ використовують стандартн≥ предикати. Ќаприклад, €кщо ви використовуЇте предикат

Z = X + Y

де зм≥нна або Y не зв'€зана, тод≥ потоковий анализатор видасть пов≥домленн€ про помилку: не ≥снуЇ потокового зразка дл€ цього предикату. ƒл€ керуванн€ такою ситуац≥Їю ми можемо використовувати стандартн≥ предикати freebound.

ѕрипустимо, ми хочемо написати предикат plus дл€ реал≥зац≥њ д≥њ додаванн€ при любих можливих потокових зразках. ѕрограма зображена на малюнку 10.1 реал≥зуЇ такий предикат.

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 291 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

≈сть только один способ избежать критики: ничего не делайте, ничего не говорите и будьте никем. © јристотель
==> читать все изречени€...

1366 - | 1315 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.009 с.