• No results found

ÏÎ×ÀÒÊÈ ØÒÓ×ÍÎÃÎ

N/A
N/A
Protected

Academic year: 2022

Share "ÏÎ×ÀÒÊÈ ØÒÓ×ÍÎÃÎ "

Copied!
172
0
0

Повний текст

(1)

Î. Ì. Ñï³ð³í

ÏÎ×ÀÒÊÈ ØÒÓ×ÍÎÃÎ

²ÍÒÅËÅÊÒÓ

Íàâ÷àëüíèé ïîñ³áíèê

äëÿ ñòóäåíò³â ô³çèêî-ìàòåìàòè÷íèõ ñïåö³àëüíîñòåé âèùèõ ïåäàãîã³÷íèõ íàâ÷àëüíèõ çàêëàä³â

Æèòîìèð - 2004

(2)

ÓÄÊ 681.142.2(075.5) ÁÁÊ 73ÿ73

Ñ72

Ðåêîìåíäîâàíî ̳í³ñòåðñòâîì îñâ³òè ³ íàóêè Óêðà¿íè ÿê íàâ÷àëüíèé ïîñ³áíèê äëÿ ñòóäåíò³â ô³çèêî-ìàòåìàòè÷íèõ

ñïåö³àëüíîñòåé âèùèõ ïåäàãîã³÷íèõ íàâ÷àëüíèõ çàêëàä³â, ïðîòîêîë ¹14/18.2-717 â³ä 16.04.2003ð.

Ðåöåíçåíòè:

Ðàìñüêèé Þ.Ñ., êàíäèäàò ô³ç.-ìàò. íàóê, ïðîôåñîð êàôåäðè îñíîâ

³íôîðìàòèêè ³ îá÷èñëþâàëüíî¿ òåõí³êè Íàö³îíàëüíîãî ïåäàãîã³÷íîãî óí³âåðñèòåòó ³ì. Ì.Ï. Äðàãîìàíîâà;

Ëÿøåíêî Á.Ì., êàíäèäàò ô³ç.-ìàò. íàóê, äîöåíò êàôåäðè ³íôîðìàòèêè Æèòîìèðñüêîãî äåðæàâíîãî óí³âåðñèòåòó ³ìåí³ ²âàíà Ôðàíêà;

Ëèñîãîð ².À., ìåòîäèñò ëàáîðàòî𳿠³íôîðìàòèêè òà îá÷èñëþâàëüíî¿

òåõí³êè Æèòîìèðñüêîãî βÏÏÎ.

Ñï³ð³í Î.Ì.

Ñ72 Ïî÷àòêè øòó÷íîãî ³íòåëåêòó: Íàâ÷àëüíèé ïîñ³áíèê äëÿ ñòóä.

ô³ç.-ìàò. ñïåö-òåé. âèùèõ ïåä. íàâ÷. çàêë-³â – Æèòîìèð: Âèä-âî ÆÄÓ, 2004. - 172 ñ.: ðèñ.

ISBN 966-8456-00-9

Ïîñ³áíèê ì³ñòèòü òåîðåòè÷í³ â³äîìîñò³ ç ìîâè ëîã³÷íîãî ïðîãðàìóâàííÿ Prolog (âåðñ³ÿ Turbo Prolog 2.0), îñíîâ øòó÷íîãî

³íòåëåêòó òà åêñïåðòíèõ ñèñòåì; ïðèêëàäè âèêîíàííÿ çàâäàíü, òåêñòè ëàáîðàòîðíèõ ðîá³ò (êîíòðîëüí³ ïèòàííÿ, çàâäàííÿ, âèìîãè äî çàõèñòó ëàáîðàòîðíèõ ðîá³ò). Ïîñ³áíèê ìîæå áóòè âèêîðèñòàíèé íà ôàêóëüòàòèâíèõ çàíÿòòÿõ ç ³íôîðìàòèêè ó çàãàëüíîîñâ³òí³õ øêîëàõ.

Äëÿ ñòóäåíò³â ô³çèêî-ìàòåìàòè÷íèõ ñïåö³àëüíîñòåé âèùèõ ïåäàãîã³÷íèõ íàâ÷àëüíèõ çàêëàä³â.

ÓÄÊ 681.142.2(075.5) ÁÁÊ 73ÿ73

ISBN 966-8456-00-9 © Ñï³ð³í Î.Ì., 2004.

(3)

3 Передмова

Íàâ÷àëüíèé ïîñ³áíèê íàïèñàíèé â³äïîâ³äíî äî ÷èííî¿ ïðîãðàìè ç ³íôî- ðìàòèêè äëÿ ñïåö³àëüíîñòåé "ìàòåìàòèêà ³ ô³çèêà", "ô³çèêà ³ ìàòåìàòèêà"

âèùèõ ïåäàãîã³÷íèõ íàâ÷àëüíèõ çàêëàä³â. Ðîçãëÿä îêðåìèõ ïèòàíü âèõîäèòü çà ðàìêè ïðîãðàìíèõ âèìîã ùîäî âèâ÷åííÿ ïî÷àòê³â øòó÷íîãî ³íòåëåêòó. Öå äຠìîæëèâ³ñòü âèêîðèñòîâóâàòè ïîñ³áíèê ÿê ñêëàäîâó ÷àñòèíó íàâ÷àëüíî- ìåòîäè÷íîãî çàáåçïå÷åííÿ êóðñó ³íôîðìàòèêè âóçó, à òàêîæ äëÿ ÷èòàííÿ ñïåöêóðñ³â, ïðîâåäåííÿ ôàêóëüòàòèâíî¿ òà ãóðòêîâî¿ ðîáîòè ó çàêëàäàõ îñâ³òè.

Îñíîâó íàâ÷àëüíîãî ïîñ³áíèêà ñêëàâ êóðñ ëåêö³é ç îñíîâ øòó÷íîãî ³íòå- ëåêòó êóðñó ³íôîðìàòèêè, ÿêèé ÷èòàâñÿ àâòîðîì íà ô³çèêî-ìàòåìàòè÷íîìó ôàêóëüòåò³ Æèòîìèðñüêîãî äåðæàâíîãî óí³âåðñèòåòó ³ìåí³ ²âàíà Ôðàíêà íà ñïåö³àëüíîñòÿõ "ìàòåìàòèêà ³ ô³çèêà", “ìàòåìàòèêà ³ ³íôîðìàòèêà”.

Ó ïðîöåñ³ íàïèñàííÿ ïîñ³áíèêà àâòîð êåðóâàâñÿ òàêèìè ïîëîæåííÿìè:

1. Ôîðìóâàííÿ çíàíü, óì³íü òà íàâè÷îê ç ïî÷àòê³â øòó÷íîãî ³íòåëåêòó â êóðñ³ ³íôîðìàòèêè âóçó º ñêëàäîâîþ ÷àñòèíîþ çàâäàííÿ ôîðìóâàííÿ ïî÷à- òê³â ³íôîðìàö³éíî¿ êóëüòóðè ñòóäåíò³â ô³çèêî-ìàòåìàòè÷íèõ ôàêóëüòåò³â.

Íàçâàí³ êîìïîíåíòè ïîâèíí³ áóòè ñôîðìîâàí³ ÿê íà òåîðåòè÷íîìó ð³âí³, ùî äîçâîëÿº îð³ºíòóâàòèñÿ ó çàãàëüíèõ ïèòàííÿõ ç ïðîáëåì øòó÷íîãî ³íòåëåêòó:

³ñòîð³ÿ ðîçâèòêó, òåîðåòè÷í³ îñíîâè, êëàñè÷í³ ïðîáëåìè òà çàäà÷³, ñó÷àñíèé ñòàí, òåíäåíö³¿ òà ïåðñïåêòèâè ðîçâèòêó; òàê ³ íà ð³âí³ ïðàêòè÷íî¿ ðåàë³çàö³¿

îêðåìèõ çàäà÷ ç ïðîáëåì øòó÷íîãî ³íòåëåêòó íà îñíîâ³ ³ñíóþ÷èõ òåõíîëîã³é.

2. Ðîçãëÿä ïèòàíü ïîäàííÿ çíàíü ó ñèñòåìàõ øòó÷íîãî ³íòåëåêòó (ëîã³-

÷í³ ìåòîäè, ñåìàíòè÷í³ ìåðåæ³, ôðåéìè; ëîã³÷íèé âèâ³ä) ïðîâîäèòüñÿ îïîñå- ðåäêîâàíî ó ïðîöåñ³ âèâ÷åííÿ îäí³º¿ ç ìîâ ëîã³÷íîãî ïðîãðàìóâàííÿ (ó äàíî- ìó âèïàäêó ìîâà Ïðîëîã, ¿¿ ä³àëåêò Òóðáî-Ïðîëîã 2.0).

3. Âèâ÷åííÿ åêñïåðòíèõ ñèñòåì, ¿õ ðîçðîáêè ìîæëèâå ÿê ç âèêîðèñòàí- íÿì ³ñíóþ÷èõ îáîëîíîê åêñïåðòíèõ ñèñòåì, òàê ³ îïîñåðåäêîâàíî - ó ïðîöåñ³ ðîçãëÿäó (àáî íà îñíîâ³) ìîâè ëîã³÷íîãî ïðîãðàìóâàííÿ Ïðîëîã.

4. Åôåêòèâíå âèêîðèñòàííÿ ïîñ³áíèêà ñòóäåíòàìè ï³ä ÷àñ ñàìîñò³éíîãî âèâ÷åííÿ äàíîãî êóðñó. Òîìó ïðèêëàäè ïðîãðàì º çàâåðøåíèìè ïðîãðàìíèìè ïðîäóêòàìè, ÿê³ êîðåêòíî ïðàöþþòü ï³ñëÿ ââåäåííÿ ó ñåðåäîâèùå Òóðáî- Ïðîëîãó âåðñ³¿ 2.0 ô³ðìè Borland International. Êð³ì òîãî, êîæíà íàâåäåíà ó ïîñ³áíèêó ïðîãðàìà ñóïðîâîäæóºòüñÿ â³äïîâ³äíèìè êîìåíòàðÿìè.

Ïîñ³áíèê ì³ñòèòü îñíîâí³ â³äîìîñò³ ïðî ñèñòåìè øòó÷íîãî ³íòåëåêòó, åêñïåðòí³ ñèñòåìè: áàçè çíàíü, ìåõàí³çìè âèâîäó â åêñïåðòíèõ ñèñòåìàõ, ðîç- ðîáêó åêñïåðòíèõ ñèñòåì çàñîáàìè ìîâè Ïðîëîã.

Ó ïîñ³áíèêó îïèñàíèé òåîðåòè÷íèé òà ïðàêòè÷íèé ìàòåð³àë äî âèêîíó- âàíèõ ëàáîðàòîðíèõ ðîá³ò, ùî âêëþ÷ຠð³çíîð³âíåâ³ çàâäàííÿ äëÿ ñòóäåíò³â.

Òåêñòè ïðîãðàì íà Òóðáî-Ïðîëîç³ íàïèñàí³ òàê, ùîá ïîëåãøèòè ¿õ ðîçó- ì³ííÿ òèìè, õòî âîëî䳺 óêðà¿íñüêîþ ìîâîþ. Îêðåì³ ïðîãðàìè àáî ¿õ ÷àñòèíè çàïèñàí³ àíãë³éñüêîþ ìîâîþ äëÿ âèïàäê³â, êîëè âèêîðèñòîâóþòüñÿ âáóäîâàí³ (ñòàíäàðòí³) ïðåäèêàòè Òóðáî-Ïðîëîãó âåðñ³¿ 2.0 àáî äåÿê³ ïðîöåäóðè º çàãà- ëüíîïðèéíÿòèìè ³ ÷àñòî âæèâàþòüñÿ ó ïðàêòèö³ ïðîãðàìóâàííÿ íà Ïðîëîç³.

(4)

4

ЛОГІЧНЕ ПРОГРАМУВАННЯ

§1. ЗАГАЛЬНІ ВІДОМОСТІ

1.1. Логічне і процедурне програмування

Ëîã³÷íå ïðîãðàìóâàííÿ - öå â³äíîñíî íîâèé ïåðñïåêòèâíèé íà- ïðÿìîê ñó÷àñíîãî ïðîãðàìóâàííÿ, ùî âèíèê ó ðàìêàõ ðîá³ò ç³ ñòâî- ðåííÿ øòó÷íîãî ³íòåëåêòó. Ñâîþ íàçâó ëîã³÷íå ïðîãðàìóâàííÿ îäåð- æàëî â³ä ìàòåìàòè÷íî¿ ëîã³êè ³ áàçóºòüñÿ íà îäíîìó ç ¿¿ ðîçä³ë³â - ëî- ã³ö³ ïðåäèêàò³â ïåðøîãî ïîðÿäêó.

Îñíîâíà ìåòà ñòâîðåííÿ ëîã³÷íîãî ïðîãðàìóâàííÿ - ï³äâèùåííÿ

“³íòåëåêòóàëüíîñò³” êîìï’þòåð³â. Îäíàê ðîëü ëîã³÷íîãî ïðîãðàìóâàííÿ öèì íå îáìåæóºòüñÿ: êð³ì óñüîãî ³íøîãî, âîíî áóëî âçÿòî çà êîíöåï- òóàëüíó îñíîâó â³äîìîãî ÿïîíñüêîãî ïðîåêòó ÅÎÌ 5-ãî ïîêîë³ííÿ.

Ìåòà äàíîãî ïðîåêòó - ñòâîðåííÿ ñèñòåì îáðîáêè ³íôîðìàö³¿, ùî áà- çóþòüñÿ íà çíàííÿõ ³ ìîæóòü äàâàòè åêñïåðòí³ êîíñóëüòàö³¿ êîðèñòó- âà÷àì.

³äîìî, ùî äëÿ òîãî, ùîá ñêëàñòè ïðîãðàìó ðîçâ’ÿçêó äåÿêî¿ çà- äà÷³ ìîâîþ ïðîöåäóðíîãî òèïó, íåîáõ³äíî ðîçðîáèòè ¿¿ àëãîðèòì ³ ó ïîäàëüøîìó òðàíñëþâàòè éîãî â íàá³ð áàçîâèõ êîíñòðóêö³é (öèêëè, ðîçãàëóæåííÿ, ïðîöåäóðè-ï³äïðîãðàìè òà ³í.) çà äîïîìîãîþ äîñèòü îá’ºìíîãî íàáîðó îïåðàòîð³â îáðàíî¿ ìîâè. ³äïîâ³äíî äî öüîãî, ïðî- ãðàì³ñò ïîâèíåí ñïî÷àòêó ïðîäóìàòè âåñü ïëàí ðîçâ’ÿçêó çàäà÷³, à ïî- ò³ì äåòàë³çóâàòè éîãî äî íàéìåíøèõ ïîäðîáèöü. Êð³ì òîãî, ïðîöåäóð- í³ ìîâè, ó ñâî¿é á³ëüøîñò³, äîçâîëÿþòü îïåðóâàòè ò³ëüêè òèìè òèïàìè äàíèõ, ÿê³ ìîæóòü çáåð³ãàòèñÿ ó ïàì’ÿò³ ÅÎÌ, ³ ò³ëüêè òèìè îïåðàö³- ÿìè, ÿê³ âîíà ó çìîç³ âèêîíóâàòè. ßê ïðàâèëî, ö³ òèïè äàíèõ åëåìåí- òàðí³, îïåðàö³¿ íàä íèìè äîñèòü ïðèì³òèâí³, òîìó ñêëàäàííÿ íàâ³òü ïðîñòî¿ ïðîãðàìè íà ìîâàõ íèçüêîãî ð³âíÿ (äî ÿêèõ â³äíîñÿòüñÿ ïðî- öåäóðí³) ïåðåòâîðþºòüñÿ ó äîâãèé êîï³òêèé ïðîöåñ ³ ïðèçâîäèòü äî âåëèêî¿ ê³ëüêîñò³ ïîìèëîê, ïîøóê ³ âèïðàâëåííÿ ÿêèõ ÷àñòî âèìàãຠíàâ³òü á³ëüøå ÷àñó, í³æ áåçïîñåðåäíº íàïèñàííÿ ïðîãðàìè.

Ïðè âèêîðèñòàíí³ ìîâè ëîã³÷íîãî ïðîãðàìóâàííÿ îñíîâíà óâàãà ïðèä³ëÿºòüñÿ îïèñàííþ ñòðóêòóðè ïðèêëàäíî¿ çàäà÷³, à íå ðîçðîáö³ íàêàç³â êîìï’þòåðó ïðî òå, ùî éîìó ïîòð³áíî ðîáèòè. Òóò â³äñóòíº òðàäèö³éíå ïîíÿòòÿ àëãîðèòìó ðîçâ’ÿçêó çàäà÷³. Äëÿ òîãî, ùîá ðîçâ’ÿçàòè äåÿêó çàäà÷ó, íåîáõ³äíî äîñèòü äåòàëüíî îïèñàòè äàí³ óìî-

(5)

5 âè çàäà÷³ ³, íàïðèêëàä, øëÿõîì çàïèò³â äî ïðîãðàìè îäåðæàòè ïîòð³á- í³ â³äïîâ³ä³. Ïðè öüîìó ïðîãðàì³ñò íå âêàçóº, “ÿê” ïåðåâ³ðèòè òâåð- äæåííÿ, ñôîðìóëüîâàíå ó âèãëÿä³ çàïèòó, - ïðîãðàìà ñàìà àáî äîâåäå

³ñòèíí³ñòü òâåðäæåííÿ, àáî ïîâ³äîìèòü ïðî òå, ùî òâåðäæåííÿ º õèá- íèì, àáî ùî ïðî íüîãî í³÷îãî íå ìîæíà ñêàçàòè íà îñíîâ³ äàíèõ óìîâ.

Òîìó ëîã³÷íå ïðîãðàìóâàííÿ âèìàãຠ³íøîãî ñòèëþ ìèñëåííÿ, â³äìîâè â³ä ïðèéíÿòèõ ïðîãðàì³ñòñüêèõ ñòåðåîòèï³â: çàì³ñòü òîãî, ùîá çàäàòè ñêëàäíó ïîñë³äîâí³ñòü êîìàíä, ÿê³ á âêàçóâàëè ìàøèí³ íà âè- êîíàííÿ òèõ ÷è ³íøèõ ä³é äëÿ ðîçâ’ÿçêó çàäà÷³, íåîáõ³äíî îïèñàòè ¿¿

çì³ñò ó òåðì³íàõ îá'ºêò³â ³ â³äíîøåíü ì³æ íèìè. Îòæå, çàì³ñòü àëãî- ðèòìó ðîçâ'ÿçêó çàäà÷³ ïðîãðàì³ñò ñêëàäຠ¿¿ ëîã³÷íó ñïåöèô³êàö³þ.

Äëÿ ïåâíî¿ ìîâè ëîã³÷íîãî ïðîãðàìóâàííÿ ñïåöèô³êàö³ÿ çàäà÷³ (îïè- ñàííÿ ïðîáëåìè) ðîçãëÿäàºòüñÿ ÿê ôàêòè÷íà ïðîãðàìà. Çàóâàæèìî, ùî òàêèì ï³äõîäîì äî ðîçâ’ÿçóâàííÿ çàäà÷ âèçíà÷àºòüñÿ ñóòü äåêëà- ðàòèâíîãî ïðîãðàìóâàííÿ.

Íàéá³ëüø ïîâíî ³ ñòðîãî ³äå¿ ëîã³÷íîãî ïðîãðàìóâàííÿ ðåàë³çóâà- ëèñü ó ìîâ³ ïðîãðàìóâàííÿ Ïðîëîã. Ïðî öå ãîâîðèòü ³ íàçâà ìîâè - ÏÐÎãðàìóâàííÿ íà îñíîâ³ ËÎóêè. Ðîçðîáêà ìîâè Ïðîëîã, ïåðâ³ñíèé âàð³àíò ÿêî¿ áóëî ñòâîðåíî À.Êîëüìåðîå ó 1972 ð. ó Ìàðñåëüñüêîìó óí³âåðñèòåò³, çðîáèëà ëîã³÷íå ïðîãðàìóâàííÿ ïðàêòè÷íèì ³íñòðóìåí- òîì, äîñòóïíèì øèðîêîìó çàãàëó ïðîãðàì³ñò³â. Ïîòð³áíî çàçíà÷èòè, ùî Ïðîëîã íå ºäèíà ìîâà ïðîãðàìóâàííÿ, íà ÿê³é ìîæíà ïèñàòè ïðî- ãðàìè ç âèêîðèñòàííÿì êîíöåïö³é ëîã³÷íîãî ïðîãðàìóâàííÿ1.

1.2. Короткі відомості з логіки предикатів

Òåîðåòè÷íîþ îñíîâîþ ìîâè Ïðîëîã º ðîçä³ë ôîðìàëüíî¿ ëîã³êè - ëîã³êà ïðåäèêàò³â ïåðøîãî ïîðÿäêó.

Атомарні формули

Ó ëîã³ö³ ïðåäèêàò³â åëåìåíòàðíèì îá’ºêòîì, ùî âîëî䳺 ³ñòèííî- ñíèì çíà÷åííÿì º àòîìàðíà ôîðìóëà. Àòîìàðíà ôîðìóëà ñêëàäàºòüñÿ ç³ ñèìâîë³÷íîãî ïîçíà÷åííÿ ïðåäèêàòó òà òåðì³â, ùî âèñòóïàþòü ó ðîë³ àðãóìåíò³â öüîãî ïðåäèêàòó. Ó çàãàëüíîìó âèïàäêó ïîçíà÷åííÿ ïðåäèêàòó - öå ³ì’ÿ â³äíîøåííÿ, ùî ³ñíóº ì³æ àðãóìåíòàìè.

Ïðåäèêàò - òàêà ÷àñòèíà âèðàçó, çì³íà ÿêî¿ íå ìîæå íå âèêëèêà- òè çà ñîáîþ ñåðéîçíî¿ çì³íè ñìèñëó ³ íàâ³òü ìîæå ïðèâåñòè äî áåç- ãëóçäÿ.

Àðãóìåíò - öå òàêà ÷àñòèíà âèðàçó, ÿêà ìîæå çì³íþâàòèñü ó òèõ ìåæàõ, äîêè âèðàç çàëèøàºòüñÿ ìîæëèâèì äëÿ ðîçóì³ííÿ.

1 Íàïðèêëàä, DUC, ESP, HCPRVR, Ïàðëîã, KL1 òîùî.

(6)

6

Àòîìàðíà ôîðìóëà çàïèñóºòüñÿ ÿê ïîçíà÷åííÿ ïðåäèêàòó, çà ÿêèì ó äóæêàõ ðîçì³ùóºòüñÿ äåê³ëüêà àðãóìåíò³â. Êîæåí àðãóìåíò - öå òåðì. Çàãàëüíèé âèãëÿä àòîìàðíî¿ ôîðìóëè:

P(t1, t2,..., tn), äå P - ïîçíà÷åííÿ ïðåäèêàòó, t1, t2,..., tn - òåðìè.

Òåðì - öå àáî êîíñòàíòà, àáî çì³ííà, àáî âèêîðèñòàííÿ ôóíêö³¿.

“Âèêîðèñòàííÿ ôóíêö³¿” çàïèñóºòüñÿ ÿê ñèìâîë³÷íå ïîçíà÷åííÿ ôóíêö³¿, çà ÿêèì â äóæêàõ ðîçì³ùóºòüñÿ ñïèñîê àðãóìåíò³â. Êîæåí àðãóìåíò ôóíêö³¿ ñàì º òåðìîì. Çàãàëüíà ôîðìà âèêîðèñòàííÿ ôóíêö³¿:

f(t1, t2,..., tn), äå f - ïîçíà÷åííÿ ôóíêö³¿, t1, t2,..., tn - òåðìè.

Ó ëîã³ö³ ïðåäèêàò³â ïðèéíÿò³ íàñòóïí³ ïîçíà÷åííÿ:

- ë³òåðè a, b, c îçíà÷àþòü êîíñòàíòè;

- ë³òåðè x, y, z îçíà÷àþòü çì³íí³;

- ë³òåðè f, g, h îçíà÷àþòü ôóíêö³¿;

- ë³òåðè P, Q, R îçíà÷àþòü ïðåäèêàòè.

Правильно побудовані формули

Ïðàâèëüíî ïîáóäîâàíà ôîðìóëà (ÏÏÔ) îòðèìóºòüñÿ ó ðåçóëüòà- ò³ êîìá³íóâàííÿ àòîìàðíèõ ôîðìóë ³ç ëîã³÷íèìè ç’ºäíóâà÷àìè.

Òàáëèöÿ ëîã³÷íèõ ç’ºäíóâà÷³â:

Ñèìâîë Ñìèñë Ñèìâîë Ñìèñë

~

àáî “í³”

(çàïåðå÷åííÿ)

Þ ñë³äóâàííÿ (³ìïë³êàö³ÿ)

& àáî Ù “³” Û “òîä³ ³ ò³ëüêè òîä³, êîëè”

Ú “àáî”

Ïðàâèëüíî ïîáóäîâàíà ôîðìóëà âèçíà÷àºòüñÿ íàñòóïíèì ÷èíîì:

- àòîìàðíà ôîðìóëà º ÏÏÔ;

- ÿêùî À ³ Â - ÏÏÔ, òî ÏÏÔ áóäóòü ³ ôîðìóëè:

ÏÏÔ ×èòàºòüñÿ òàê

A “íå À”

A & B “À ³ ”

A Ú B “À àáî ”

A Þ B “À ³ìïë³êóº ” (“ÿêùî À, òî ”) A Û B “À òîä³ ³ ò³ëüêè òîä³, êîëè ”

$

x A “³ñíóº x òàêå, ùî À”

"x A “äëÿ äîâ³ëüíîãî x, À”

(7)

7 Òóò $x, "x - êâàíòîðè çì³ííèõ. ßêùî â àòîìàðí³é ôîðìóë³ ÿê òåðì âèñòóïຠçì³ííà, òî öå çíà÷èòü, ùî ó äàíîìó ì³ñö³ ìîæå áóòè á³ëüø í³æ îäèí åëåìåíò ç îáëàñò³, ÿêà ³íòåðïðåòóºòüñÿ àòîìàðíèìè ôîðìóëàìè. Äëÿ ÏÏÔ êâàíòîð $x îçíà÷àº, ùî â îáëàñò³ ³íòåðïðåòà- ö³¿ ³ñíóº õî÷à á îäèí åëåìåíò, ÿêèé ïðè ï³äñòàíîâö³ íà ì³ñöå çì³ííî¿, çðîáèòü äàíó ÏÏÔ ³ñòèííîþ. Àíàëîã³÷íî, êâàíòîð "x îçíà÷àº, ùî ÏÏÔ áóäå ³ñòèííîþ ïðè ï³äñòàíîâö³ äîâ³ëüíîãî åëåìåíòà.

Çàóâàæåííÿ 1.

1.1. ²ìïë³êàö³þ A Þ B ìîæíà çàì³íèòè ÿê AÚB (³ íàâïàêè). Ö³êàâî, ùî ïðè õèáíîìó À ³ äîâ³ëüíîìó (õèáíîìó àáî ³ñòèííîìó)  âñå òâåðäæåííÿ (³ì- ïë³êàö³ÿ) ³ñòèííå. ²íøèìè ñëîâàìè, “ç õèáíîãî ïðèïóùåííÿ ñë³äóº, ùî çà- âãîäíî (ìîæëèâèé ³ õèáíèé, ³ ³ñòèííèé âèñíîâîê)”;

1.2. Äëÿ ôîðìàëüíèõ òâåðäæåíü âèêîðèñòîâóþòü ïåâí³ ïðàâèëà, íàïðèêëàä, .

) (

; )

(

; А B А B А B А B

B

А= Ú = Ù Ù = Ú

Фразова форма

Ôðàçîâà ôîðìà ëîã³êè ïðåäèêàò³â - öå ñïîñ³á çàïèñó ôîðìóë, ïðè ÿêîìó âèêîðèñòîâóþòüñÿ ò³ëüêè ç’ºäíóâà÷³ &, Ú ,.

Ïîçèòèâíà ÷è íåãàòèâíà àòîìàðíà ôîðìóëà íàçèâàºòüñÿ ë³òåðà- ëîì. Êîæíà ôðàçà - öå ìíîæèíà ë³òåðàë³â, ñïîëó÷åíèõ ñèìâîëîì Ú. Íåãàòèâí³ ë³òåðàëè ðîçì³ùóþòüñÿ ó ê³íö³ êîæíî¿ ôðàçè, à ïîçèòèâí³ - íà ïî÷àòêó.

Ôðàçà, ùî ì³ñòèòü ò³ëüêè îäèí ïîçèòèâíèé ë³òåðàë, íàçèâàºòüñÿ ôðàçîþ Õîðíà.

Íàïðèêëàä, CÚEÚFÚG.

Ôðàçè ìîæíà çàïèñóâàòè ç âèêîðèñòàííÿì çâîðîòíî¿ ñòð³ëêè ³ì- ïë³êàö³¿, ùî ñòî¿òü ì³æ ïîçèòèâíèìè ³ íåãàòèâíèìè ë³òåðàëàìè. ˳òå- ðàëè, ùî ðîçì³ùåí³ ïî ð³çí³ ñòîðîíè â³ä ñòð³ëêè, ñïîëó÷àþòüñÿ êîìà- ìè.

Íàïðèêëàä, F E D

CÚ Ú Ú ìîæíà çàïèñàòè ÿê C,D¬E,F(íå ôðàçà Õîðíà);

G F E

CÚ Ú Ú ìîæíà çàïèñàòè ÿê C¬E,F,G (ôðàçà Õîðíà).

ijéñíî, âðàõîâóþ÷è "Çàóâàæåííÿ 1", ìàºìî:

G F E

CÚ Ú Ú = CÚ(EÙFÙG) = CÜ(EÙFÙG).

Правило резолюції

Ïðàâèëî ðåçîëþö³¿ âêàçóº, ÿê îäåðæàòè íîâó ôðàçó ç äâîõ äàíèõ ôðàç. Äîâåäåíî, ùî ï³ä ÷àñ âèêîðèñòàííÿ ëèøå ïðàâèëà ðåçîëþö³¿

(8)

8

ìîæíà âèâåñòè äîâ³ëüíèé íàñë³äîê ³ç ìíîæèíè àêñ³îì, ÿê³ ïîäàí³ ó ôðàçîâ³é ôîðì³.

Ïðàâèëî ðåçîëþö³¿ 䳺 íàñòóïíèì ÷èíîì.

Äâ³ ôðàçè ìîæóòü áóòè ðåçîëüâîâàí³ ì³æ ñîáîþ, ÿêùî îäíà ç íèõ ì³ñòèòü ïîçèòèâíèé ë³òåðàë, à ³íøà - â³äïîâ³äíèé íåãàòèâíèé ë³òåðàë ç îäíèì ³ òèì æå ïîçíà÷åííÿì ïðåäèêàòó ³ îäíàêîâîþ ê³ëüê³ñòþ àðãó- ìåò³â, ³ ÿêùî àðãóìåíòè îáîõ ë³òåðàë³â ìîæóòü áóòè óí³ô³êîâàí³ (òîáòî ïîãîäæåí³) îäèí ç îäíèì.

Ïðè öüîìó, êîíñòàíòà óí³ô³êóºòüñÿ ç êîíñòàíòîþ, ÿêùî âîíè îäíàêîâ³ ³ ñòîÿòü íà îäíàêîâèõ ïîçèö³ÿõ ó ïåðåë³êó àðãóìåíò³â â³äïî- â³äíèõ ïðåäèêàò³â; çì³ííà óí³ô³êóºòüñÿ ç äîâ³ëüíîþ êîíñòàíòîþ, ³ ÿê- ùî â îäí³é ³ ò³é æå ôðàç³ çì³ííà çóñòð³÷àºòüñÿ á³ëüøå îäíîãî ðàçó, òî ðåçîëüâåíòà áóäå ì³ñòèòè äàíó êîíñòàíòó íà òèõ ì³ñöÿõ, äå ðîçãëÿäó- âàíà çì³ííà çíàõîäèëàñü ó ôðàç³, ùî ðåçîëüâóºòüñÿ.

Çàóâàæåííÿ 2.

Ó ôðàçîâ³é ôîðì³ íå âèêîðèñòîâóºòüñÿ ÿâíà êâàíòèô³êàö³ÿ çì³ííèõ. Îäíàê, íåÿâíî âñ³ çì³íí³ êâàíòèô³êîâàí³. Íàïðèêëàä, ó ôðàç³ Q(x,y)ÚR(x,y) ðî- çó쳺òüñÿ "x"y(Q(x,y)ÚR(x,y)).

Ðîçãëÿíåìî ïðèêëàäè â³äïîâ³äíèõ òåîð³é, ïîáóäîâàíèõ ³ç äâîõ ôðàç:

1. Ôðàçà P(a,b)ÚQ(c,d,e) ³ ôðàçàQ(c,d,x)ÚR(c,d,x). Ðåçîëü- âåíòà - P(a,b)ÚR(c,d,e) ñòຠíîâîþ (òðåòüîþ) ôðàçîþ äàíî¿ òåîð³¿.

2. ÔðàçàP(a)ÚQ(b,c) ³ ôðàçà Q(c,c)ÚR(b,c) íå ðåçîëüâóþòüñÿ (àðãóìåíòè ïðåäèêàò³â Q ³ Qíå óí³ô³êóþòüñÿ).

1.3. Розв’язання задач на Пролозі

Ïðîëîã - ìîâà, ùî øâèäêî ðîçâèâàºòüñÿ. Çà îñòàíí³ ðîêè ç’ÿâèëîñÿ á³ëüøå äåñÿòêà éîãî íîâèõ ä³àëåêò³â; ðîçðîáëåí³ îá’ºêòí³ ðîçøèðåííÿ Ïðîëîãó, â ÿêîìó º çàñîáè äëÿ ðîáîòè ç àáñòðàêòíèìè òèïàìè äàíèõ. Âèÿâèëîñÿ, ùî íà Ïðîëîç³ ìîæëèâå ðîçâ'ÿçàííÿ çàäà÷

ç âèêîðèñòàííÿì ï³äõîä³â, äàëåêèõ â³ä ìàòåìàòè÷íî¿ ëîã³êè, çîêðåìà, ôóíêö³îíàëüíîãî ³ îá’ºêòíî-îð³ºíòîâàíîãî ïðîãðàìóâàííÿ.

Ïðîëîã, ÿêèé â³äíîñèòüñÿ äî ðåëÿö³éíèõ ìîâ âèñîêîãî ð³âíÿ, ñóòòºâî â³äð³çíÿºòüñÿ â³ä ïðîöåäóðíèõ ìîâ ïðîãðàìóâàííÿ (Áåéñ³ê, Ïàñêàëü, Ôîðòðàí òîùî) ÿê çà òèïàìè äàíèõ, òàê ³ çà áàçîâèìè êîíñ- òðóêö³ÿìè, òà ðîçðàõîâàíèé íà åôåêòèâíå ðîçâ’ÿçàííÿ øèðîêîãî êîëà çàäà÷ ïåâíîãî êëàñó, ðåàë³çàö³ÿ ÿêèõ ïðîöåäóðíèìè ìîâàìè çíà÷íî óñêëàäíþºòüñÿ. Àëå Ïðîëîã íå º óí³âåðñàëüíîþ ìîâîþ ïðîãðàìóâàí- íÿ, òîìó ³ñíóº ðÿä êëàñ³â çàäà÷, äëÿ ðîçâ’ÿçêó ÿêèõ âèêîðèñòàííÿ Ïðîëîãó º ìàëîåôåêòèâíèì. Äî òàêèõ çàäà÷ ñë³ä â³äíåñòè îá÷èñëþ-

(9)

9 âàëüí³ çàäà÷³: çàñîáè âèêîíàííÿ îá÷èñëþâàëüíèõ ä³é Ïðîëîãó äîñèòü ñëàáê³ ³ íîñÿòü ïåðåâàæíî äîïîì³æíèé õàðàêòåð.

Ïðîëîã ïðèäàòíèé äëÿ çàäà÷, äå ãîëîâíå çíà÷åííÿ ìàþòü ñêëàäíî ñòðóêòóðîâàí³ íå÷èñëîâ³ äàí³, à òàêîæ äëÿ çàäà÷, äå âàæëèâó ðîëü â³- ä³ãðຠïîøóê ðîçâ’ÿçêó ñåðåä áàãàòüîõ âàð³àíò³â.

Ïðîöåñ ðîçâ’ÿçàííÿ çàäà÷³ íà Ïðîëîç³ ïðîõîäèòü ó äåê³ëüêà åòàï³â.

1. Àíàë³çóþòüñÿ äàí³ óìîâè çàäà÷³ (àáî ùå êàæóòü, ïðåäìåòíà îáëàñòü): ôàêòè, ôóíêö³¿, â³äíîøåííÿ. Âèáèðàþòüñÿ ïîçíà÷åííÿ äëÿ íèõ.

2. Îïèñóþòüñÿ ïðèðîäíîþ ìîâîþ ç òî÷êè çîðó ³ñòèííîñò³ â³ä- íîøåííÿ òà ôóíêö³¿.

3. Îïèñàí³ â³äíîøåííÿ îôîðìëþþòüñÿ ÿê àêñ³îìè ó âèãëÿä³ ôðàç (ôàêò³â, ïðàâèë), çðîçóì³ëèõ Ïðîëîãó äëÿ ðîáîòè ç íèìè. Ìíî- æèíà òàêèõ ôðàç ñêëàäຠïðîãðàìó, ùî ìîäåëþº ñòðóêòóðó ïðåäìåò- íî¿ îáëàñò³. Ïðîãðàìà ââîäèòüñÿ ó ðîáî÷å ïîëå êîìï³ëÿòîðà Òóðáî- Ïðîëîã.

4. Ôîðìóëþþòüñÿ òà âèêîíóþòüñÿ çàïèòè äî ââåäåíî¿ ïðîãðàìè, çàâäÿêè ÷îìó äîñÿãàºòüñÿ ðåçóëüòàò ðîçâ’ÿçêó çàäà÷³.

Âàðòî çàçíà÷èòè, ùî çà çàìîâ÷óâàííÿì Ïðîëîã ïðàöþº ç ïðèïó- ùåííÿì ïðî çàìêíóò³ñòü ñâ³òó (òåîð³¿, ïðåäìåòíî¿ îáëàñò³). Öå îçíà÷ຠíàÿâí³ñòü çàïåðå÷åííÿ äåÿêî¿ ôðàçè, ÿêùî âîíà íå ïðåäñòàâëåíà ó ïðîãðàì³. Òîáòî, íà äîâ³ëüíèé çàïèò ïî ïåðåâ³ðö³ ³ñòèííîñò³ ôðàçè äàºòüñÿ ïîâ³äîìëåííÿ Yes àáî No. Àëüòåðíàòèâîþ çàìêíóòîñò³ º ïðè- ïóùåííÿ ïðî â³äêðèò³ñòü ñâ³òó, çà ÿêèì ó ðàç³ â³äñóòíîñò³ äåÿêî¿ ôðà- çè ó ïðîãðàì³ ââàæàºòüñÿ, ùî äàíà ôðàçà íå ³ñòèííà ³ íå õèáíà, òîáòî íåäîêàçîâà.

Íàçâåìî äåÿê³ îáëàñò³, äå âèêîðèñòîâóºòüñÿ ìîâà ëîã³÷íîãî ïðî- ãðàìóâàííÿ Ïðîëîã:

· ñòâîðåííÿ äèíàì³÷íèõ ðåëÿö³éíèõ áàç äàíèõ;

· ïåðåêëàäè ç îäí³º¿ ìîâè íà ³íøó;

· ðåàë³çàö³ÿ åêñïåðòíèõ ñèñòåì ³ îáîëîíîê åêñïåðòíèõ ñèñòåì;

· óïðàâë³ííÿ âèðîáíè÷èìè ïðîöåñàìè;

· äîâåäåííÿ òåîðåì ³ ïàêåòè øòó÷íîãî ³íòåëåêòó;

· ðîçðîáêà øâèäêèõ ïðîòîòèï³â ïðèêëàäíèõ ïðîãðàì;

· ñòâîðåííÿ ïðèðîäíî-ìîâíèõ ³íòåðôåéñ³â äëÿ ³ñíóþ÷èõ ñèñòåì.

(10)

10

§2. РОБОТА З ПРОГРАМОЮ НА ТУРБО-ПРОЛОЗІ

2.1. Робоче середовище Турбо-Пролог версії 2.0

ϳñëÿ çàïóñêó ñèñòåìè Òóðáî-Ïðîëîã âåðñ³¿ 2.0 (ôàéë prolog.exe) ³ ïîÿâè ïîâ³äîìëåííÿ ïðî ³í³ö³àë³çàö³þ ñèñòåìè íà åêðàí³ ç’ÿâëÿþòüñÿ ãîëîâíå ìåíþ òà ÷îòèðè â³êíà:

Ðåäàãóâàííÿ - äëÿ ââîäó òåêñòó ïðîãðàìè;

ijàëîãó - äëÿ ââîäó çàïèò³â ³ âèäà÷³ ðåçóëüòàò³â;

Ïîâ³äîìëåíü - äëÿ âèäà÷³ ïîâ³äîìëåíü êîìï³ëÿòîðà;

Òðàñóâàííÿ - äëÿ âèäà÷³ ³íôîðìàö³¿ ïðî õ³ä âèêîíàííÿ ïðîãðàìè.

Òàê ÿê ðîçì³ð â³êîí ìîæå çì³íþâàòèñÿ, òî àêòèâí³ â³êíà ìîæóòü ïåðåêðèâàòè ïàñèâí³.

Êîìàíäè ãîëîâíîãî ìåíþ:

File - Êîìàíäè äëÿ óïðàâë³ííÿ ôàéëàìè Edit - Ðåäàãóâàííÿ ïðîãðàìè

Run - Çàïóñê ïðîãðàìè Compile - Êîìï³ëÿö³ÿ ïðîãðàìè Options - Ïàðàìåòðè êîìï³ëÿö³¿

Setup - Çì³íà ïàðàìåòð³â ñèñòåìè

Ðîçãëÿíåìî äåòàëüí³øå äåÿê³ êîìàíäè ãîëîâíîãî ìåíþ.

File - Öå ìåíþ ì³ñòèòü äåâ’ÿòü êîìàíä îáðîáêè ôàéë³â.

Load Çàâàíòàæóº ôàéë äëÿ îáðîáêè.

²ñíóþ÷èé òåêñòîâèé ôàéë çàâàíòàæóºòüñÿ ó áóôåð ðåäàêòî- ðà, ï³ñëÿ ÷îãî öåé ôàéë (ïî÷àòêîâèé òåêñò ïðîãðàìè) ìîæíà ðåäàãóâàòè, êîìï³ëþâàòè àáî çàïóñêàòè íà âèêîíàííÿ. ϳñëÿ âèêîíàííÿ äàíî¿ êîìàíäè ñèñòåìà çàïèòóº ³ì'ÿ ôàéëó, çàäàòè ÿêå ìîæíà àáî ââîäîì ç êëàâ³àòóðè àáî, íàòèñíóâøè Enter ó â³äïîâ³äü íà çàïðîøåííÿ File Name, ïåðåéòè êóðñîðîì ó â³ä- ïîâ³äíèé êàòàëîã òà íà ïîòð³áíèé ôàéë. Ç êëàâ³àòóðè ìîæíà òàêîæ ââåñòè ìàñêó, çà ÿêîþ áóäå âèâåäåíî äëÿ âèáîðó â³ä- ô³ëüòðîâàíèé ñïèñîê ôàéë³â. Ïîÿâà ïîâ³äîìëåííÿ "Save current text (y/n):" ("Çáåðåãòè ïîòî÷íèé òåêñò (òàê/í³):") ãîâîðèòü ïðî òå, ùî êîðèñòóâà÷ íàìàãàºòüñÿ çàâàíòàæèòè íîâèé ôàéë àáî âèéòè ç ñèñòåìè, ïîïåðåäíüî íå âèêîíàâøè îïåðàö³þ çáåðåæåííÿ çì³íåíîãî ïî÷àòêîâîãî òåêñòó ïðîãðà- ìè. Äàë³ íåîáõ³äíî íàòèñíóòè â³äïîâ³äíó êëàâ³øó.

Pick Âèâîäèòü ñïèñîê ôàéë³â, ùî çàâàíòàæóâàëèñü íà äàíî- ìó ñåàíñ³ ðîáîòè äëÿ ¿õ ïîâòîðíîãî âèáîðó òà îáðîáêè.

²ì'ÿ íàéâèùîãî ôàéëó ç³ ñïèñêó â³äïîâ³äຠôàéëó, ùî çíàõî- äèòüñÿ â äàíèé ìîìåíò ó áóôåð³ ðåäàêòîðà. Âèá³ð åëåìåíòó -

(11)

11 -load file-- ãåíåðóº çàïðîøåííÿ File Name, 䳿 ç ÿêèì àíàëîã³-

÷í³ ä³ÿì ó êîìàíä³ Load.

New file Î÷èùຠâ³êíî ðåäàãóâàííÿ äëÿ ââåäåííÿ òà ðåäàãóâàí- íÿ òåêñòó íîâî¿ ïðîãðàìè.

Çà çàìîâ÷óâàííÿì äëÿ íîâîãî ôàéëó âñòàíîâëþºòüñÿ ³ì'ÿ WORK. pro, ÿêå ï³çí³øå ïðè çáåðåæåíí³ ìîæíà çì³íèòè, âè- áðàâøè êîìàíäó Write to.

Save Çáåð³ãຠâ ðîáî÷îìó êàòàëîç³ ôàéë ïðîãðàìè.

Write to Çàïèñóº ó íîâèé ôàéë (êàòàëîã) òåêñò ïðîãðàìè ç â³ê- íà ðåäàãóâàííÿ.

Òåêñò ïðîãðàìè, ùî ðåäàãóºòüñÿ çáåð³ãàºòüñÿ ó íîâîìó ôàéë³ àáî ïåðåçàïèñóºòüñÿ ó ôàéë, ùî âæå ³ñíóº.  îñòàííüîìó âè- ïàäêó ñèñòåìà çàïèòóº ï³äòâåðäæåííÿ íåîáõ³äíîñò³ éîãî ïå- ðåçàïèñó.

Directory Íàäຠìîæëèâ³ñòü âèáîðó ëîã³÷íîãî ïðèñòðîþ òà êàòà- ëîãó äëÿ ïåðåãëÿäó ôàéë³â.

Change dir Çì³íþº ïîòî÷íèé êàòàëîã.

OS shell Âèêëèêຠîïåðàö³éíó ñèñòåìó (ÎÑ).

Óïðàâë³ííÿ ïåðåäàºòüñÿ îïåðàö³éí³é ñèñòåì³. Äëÿ ïîâåðíåí- íÿ ó Òóðáî-Ïðîëîã íåîáõ³äíî â ÎÑ âèêîíàòè êîìàíäó exit.

Edit - Ñòâîðåííÿ íîâî¿ òà ìîäèô³êàö³ÿ òåêñòó ³ñíóþ÷î¿ ïðîãðàìè.

Ïðàöþº ÿê òåêñòîâèé ðåäàêòîð. Ïðè ðîáîò³ ó ðåäàêòîð³ º ìîæëèâ³ñòü äëÿ âèêëèêó âìîíòîâàíî¿ äîïîìîãè (F1). Êð³ì ðåäàãóâàííÿ âèõ³äíîãî òåêñòó ïîòî÷íî¿ ïðîãðàìè ìîæíà â³ä- ðåäàãóâàòè áóäü-ÿêèé ³íøèé ôàéë, íå çíèùóþ÷è ïðè öüîìó òåêñò ïîòî÷íîãî ôàéëà. Êð³ì òîãî, ìîæíà ïåðåíåñòè ó òåêñò ïðîãðàìè, ùî ðåäàãóºòüñÿ, ïîòð³áíèé ôðàãìåíò (àáî âåñü òåêñò) ïðîãðàìè ç ³íøîãî ôàéëà. Îáèäâ³ ö³ ìîæëèâîñò³ âè- êîíóþòüñÿ âèêëèêîì ç â³êíà ðåäàãóâàííÿ äîïîì³æíîãî ðåäà- êòîðà (ðåæèìè Xedit, Xcopy).

Run - Ñòâîðåíà çà äîïîìîãîþ ðåäàêòîðà ïðîãðàìà êîìï³ëþºòüñÿ òà âèêîíóºòüñÿ.

ϳñëÿ óñï³øíîãî âèêîíàííÿ ö³º¿ êîìàíäè àêòèâ³çóºòüñÿ ä³à- ëîãîâå â³êíî. ßêùî â îïåðàòèâí³é ïàì’ÿò³ çíàõîäèòüñÿ ñêîì- ï³ëüîâàíà ïðîãðàìà, òåêñò ÿêî¿ íå ìîäèô³êóâàâñÿ ï³ñëÿ îñòàííüî¿ êîìï³ëÿö³¿ àáî îñòàííüîãî âèêîíàííÿ, òî ÷åðãîâà êîìï³ëÿö³ÿ (ïåðåêîìï³ëÿö³ÿ) íå âèêîíóºòüñÿ.

Compile- Êîìï³ëþºòüñÿ ïðîãðàìà, òåêñò ÿêî¿ ì³ñòèòü â³êíî ðåäàãóâàííÿ.

Memory Ñêîìï³ëüîâàíà ïðîãðàìà (îòðèìàíèé êîä) ðîçì³ùóºòü- ñÿ â îïåðàòèâí³é ïàì’ÿò³.

(12)

12

OBJ file Ñêîìï³ëüîâàíà ïðîãðàìà ìຠôîðìàò îá’ºêòíîãî ôàéëà, ùî çàïèñóºòüñÿ â OBJ äèðåêòîð³¿.

Öÿ äèðåêòèâà ìîæå âèêîðèñòîâóâàòèñÿ ó âèïàäêó, êîëè ñòâîðþºòüñÿ ïðîåêò ³ ïåðåä éîãî êîìïîíîâêîþ ïîòð³áíî â³ä- ðåäàãóâàòè (àáî â³äêîìï³ëþâàòè) äåê³ëüêà ìîäóë³â. Ïðè êîìï³ëÿö³¿ ó ôàéë.OBJ (ÿêùî ïðîãðàìà º ÷àñòèíîþ ïðîåêòó) íà ïî÷àòêó âèõ³äíîãî òåêñòó ïðîãðàìè íåîáõ³äíî íàïèñàòè êëþ÷îâå ñëîâî project ðàçîì ç ³ìåíåì ïðîåêòó.

EXE file Ñêîìï³ëüîâàíà ïðîãðàìà ìຠôîðìàò âèêîíóâàíîãî ôàéëà, ùî çàïèñóºòüñÿ â EXE äèðåêòîð³¿.

Àâòîìàòè÷íî âñòàíîâëþþòüñÿ çâ’ÿçêè (êîìïîíîâêà). ßêùî ïðîãðàìà, ÿêà êîìï³ëþºòüñÿ, º ÷àñòèíîþ ïðîåêòó, òî ïðîöåñ âñòàíîâëåííÿ çâ'ÿçê³â çàäàºòüñÿ îïèñîì ïðîåêòó.

Project Êîìï³ëþºòüñÿ ïðîåêò ç³ âñ³ìà ìîäóëÿìè.

Ñïî÷àòêó êîìï³ëþþòüñÿ âñ³ ìîäóë³, ÿê³ âõîäÿòü äî ñêëàäó ïðîåêòó, à ïîò³ì âñòàíîâëþþòüñÿ çâ'ÿçêè ì³æ íèìè.

Link only Âñòàíîâëþþòüñÿ çâ’ÿçêè ôàéëà (ôàéë ò³ëüêè êîìïîíóºòüñÿ).

Êîìïîíóºòüñÿ îá'ºêòíèé ôàéë, ÿêèé â³äïîâ³äຠâèõ³äíîìó òåêñòó, ùî çíàõîäèòüñÿ ó äàíèé ìîìåíò ó ðåäàêòîð³. ßêùî ïîòî÷íèé âèõ³äíèé òåêñò º ÷àñòèíîþ ïðîåêòó (ì³ñòèòü äèðå- êòèâó project), òî êîìïîíóºòüñÿ âåñü ïðîåêò.

Options - Íàñòóïí³ êîìàíäè äîçâîëÿþòü âèçíà÷èòè ïàðàìåòðè:

Link options Âñòàíîâëåííÿ çâ’ÿçê³â ï³ä ÷àñ êîìï³ëÿö³¿.

Edit PRJ file Ðåäàãóâàííÿ ôàéëó ïðîåêòó.

Compiler directives Äèðåêòèâ êîìï³ëÿòîðà.

Setup - Íàäຠìîæëèâ³ñòü çì³íèòè íàñòóïí³ ïàðàìåòðè ñèñòåìè:

Colors Âèçíà÷åííÿ êîëüîð³â åëåìåíò³â â³êîí, ãîëîâíîãî ìåíþ, ðÿäêà çíà÷åíü ôóíêö³îíàëüíèõ êëàâ³ø òîùî.

Window size Âñòàíîâëåííÿ ðîçì³ðó ³ ðîçì³ùåííÿ â³êîí.

Directories Âèçíà÷åííÿ ðîáî÷èõ êàòàëîã³â.

Miscellaneous Àäàïòåð, åêðàí, êëàâ³àòóðà (ôóíêö³¿ ñëóæáîâèõ êëàâ³ø òà ¿õ êîìá³íàö³é), ðÿäîê ôóíêö³îíàëü- íèõ êëàâ³ø äëÿ ð³çíèõ ðåæèì³â ðîáîòè êîìï³- ëÿòîðà.

Load SYS file Çàâàíòàæåííÿ ôàéëà SYS ç ïàðàìåòðàìè.

Save SYS file Çàïèñ ïîòî÷íèõ ïàðàìåòð³â ó ôàéë³ SYS.

(13)

13

2.2. Програма на Турбо-Пролозі

Об’єкти та структури даних

Ïðîãðàìè íà ìîâ³ Ïðîëîã îïåðóþòü äàíèìè äâîõ îñíîâíèõ òèï³â:

÷èñëàìè òà àòîìàìè. Àòîì - öå ðÿäîê ñèìâîë³â, ùî ïîçíà÷ຠäåÿêèé àáñòðàêòíèé îá’ºêò. Àòîì ïî÷èíàºòüñÿ ç ðÿäêîâî¿ (ìàëî¿) ë³òåðè ³ ñêëàäàºòüñÿ ç ë³òåð, öèôð òà ñèìâîëó ï³äêðåñëåííÿ. ßêùî àòîì ïîâè- íåí ì³ñòèòè ³íø³ ñïåö³àëüí³ çíàêè àáî ïî÷èíàòèñÿ ç ïðîïèñíî¿ ë³òåðè, òî â³í áåðåòüñÿ â àïîñòðîôè.

×èñëà ìîæóòü áóòè ä³éñíèìè òà ö³ëèìè. ×èñëà ³ àòîìè ìîæóòü îá’ºäíóâàòèñÿ ó êîíãëîìåðàòè – ñòðóêòóðè òà ñïèñêè.

Ñòðóêòóðà - öå êîíñòðóêö³ÿ, ùî ñêëàäàºòüñÿ ç ³ìåí³ ñòðóêòóðè ³ íàáîðó ¿¿ åëåìåíò³â, ÿê³ â³äîêðåìëþþòüñÿ êîìàìè ³ áåðóòüñÿ ó êðóãë³ äóæêè. Åëåìåíòàìè ñòðóêòóð ìîæóòü áóòè ÷èñëà, àòîìè, çì³íí³, ³íø³ ñòðóêòóðè òà ñïèñêè. ʳëüê³ñòü åëåìåíò³â ñòðóêòóðè ô³êñîâàíà ³ íå ìîæå çì³íþâàòèñÿ ïðè âèêîíàíí³ ïðîãðàìè.

Ñïèñêè ÿâëÿþòü ñîáîþ îá’ºäíàííÿ åëåìåíò³â ïåâíîãî âèäó, ÿê³ â³äîêðåìëþþòüñÿ êîìàìè ³ áåðóòüñÿ ó êâàäðàòí³ äóæêè. Ñïèñêè â³äð³- çíÿþòüñÿ â³ä ñòðóêòóð òèì, ùî íå ìàþòü ³ìåí, ³ òèì, ùî ê³ëüê³ñòü ¿õ åëåìåíò³â ìîæå çì³íþâàòèñÿ ïðè âèêîíàíí³ ïðîãðàìè.

Åëåìåíòàìè ñòðóêòóð ìîæóòü áóòè çì³íí³.

Çì³ííà ó ìîâ³ Ïðîëîã, íà â³äì³íó â³ä ïðîöåäóðíèõ ìîâ ïðîãðàìó- âàííÿ, íå ðîçãëÿäàºòüñÿ ÿê âèä³ëåíà ä³ëÿíêà ïàì’ÿò³ ÅÎÌ; âîíà ñëó- æèòü äëÿ ïîçíà÷åííÿ îá’ºêòó, íà ÿêèé íå ìîæíà ïîñèëàòèñÿ ïî ³ìåí³.

¯¿ ìîæíà ââàæàòè ëîêàëüíèì ³ìåíåì äåÿêîãî îá’ºêòó. Çíà÷åííÿ çì³í- í³é ìîæå ïðèñâî¿òèñÿ ó òðàäèö³éíîìó ðîçóì³íí³ ò³ëüêè ëîêàëüíî, â ìåæàõ îäí³º¿ ôðàçè ïðîãðàìè. Çì³ííà ïîâèííà ïî÷èíàòèñÿ ç ïðîïèñ- íî¿ (âåëèêî¿) ë³òåðè àáî ñèìâîëó ï³äêðåñëåííÿ ³ ì³ñòèòè ò³ëüêè ñèì- âîëè ë³òåð, öèôð ³ ï³äêðåñëåííÿ.

Çì³ííà, ùî ñêëàäàºòüñÿ ò³ëüêè ç ñèìâîëó ï³äêðåñëåííÿ, º àíîí³ì- íîþ ³ âèêîðèñòîâóºòüñÿ ó òîìó âèïàäêó, êîëè ³ì’ÿ çì³ííî¿ íå ñóòòºâå.

Ïðèêëàäè äàíèõ:

§ àòîìè: хома, ‘Хома’, 10_00, ‘2_5’;

§ ÷èñëà: 1, 1.5, 0.00006, 1.2Е-23;

§ ñòðóêòóðè: має(петро, ‘ЕОМ’), вчиться(ольга, 10_Б);

§ ñïèñêè: [1,3,5,8], [петро, хома, леся, дмитро], [к11_A,к11_Б, к11_В];

§ çì³íí³: Х, Хома, _, _час.

²íîä³ îá’ºêòè äàíèõ ó Ïðîëîç³ (÷èñëà, àòîìè, çì³íí³) íàçèâàþòü òåðìàìè, à ñòðóêòóðè - ñêëàäåíèìè òåðìàìè. Òåðì ìຠ³ì'ÿ - ôóíê- òîð, à ê³ëüê³ñòü éîãî àðãóìåíò³â âèçíà÷ຠàðí³ñòü òåðìó. Íàïðèêëàä, àòîì хома º òåðìîì ç ôóíêòîðîì хома ³ àðí³ñòþ 0, ñòðóêòóðà має(петро,

‘ЕОМ’) º òåðìîì ç ôóíêòîðîì має ³ àðí³ñòþ 2.

(14)

14

Типи даних

Äëÿ êîìï³ëÿòîðà âèêîðèñòîâóþòüñÿ áàçîâ³ òà ñïåöèô³÷í³ òèïè äàíèõ.

Áàçîâ³ òèïè äàíèõ:

char îêðåìèé ñèìâîë (8-á³òîâèé ASCII- ñèìâîë), ùî ì³ñòèòüñÿ â àïîñòðîôàõ. Ñèìâîë ASCII ïîçíà÷àºòüñÿ ïî÷àòêîâèì ñèìâîëîì \, çà ÿêèì çàïèñóºòüñÿ êîä ñèìâîëó àáî ñàì ñèìâîë;

integer ö³ëå ÷èñëî ó ä³àïàçîí³ â³ä -32768 äî 32767;

real ä³éñíå ÷èñëî ó ä³àïàçîí³ [+1E-307; +1E+308] - äëÿ äîäàòí³õ

÷èñåë ³ [-1E+308; -1E-307] - äëÿ â³ä'ºìíèõ;

symbol ïîñë³äîâí³ñòü ë³òåð, öèôð ³ çíàê³â ï³äêðåñëåííÿ, ÿêà

ïî÷èíàºòüñÿ ç ðÿäêîâî¿ (ìàëî¿) ë³òåðè àáî ì³ñòèòüñÿ ó ëàïêàõ;

string ïîñë³äîâí³ñòü1 ñèìâîë³â, ùî ì³ñòèòüñÿ ó ëàïêàõ;

file ³ì’ÿ ôàéëà.

Ñïåöèô³÷í³ òèïè äàíèõ:

ref - öèôðîâ³ ïîñèëàííÿ áàçè äàíèõ;

place - â ïàì’ÿò³ àáî â ðîçøèðåí³é ñèñòåì³ ïàì’ÿò³ àáî ó ôàéë³;

dbasedom - òèï äàíèõ, ùî ãåíåðóºòüñÿ äëÿ òåðì³â ó ãëîáàëüí³é

(çîâí³øí³é) áàç³ äàíèõ;

bt_selector - ñåëåêòîð á³íàðíîãî äåðåâà;

db_selector - âèçíà÷åíèé êîðèñòóâà÷åì ñåëåêòîð çîâí³øíüî¿ áàçè

äàíèõ;

bgi_ilist -

Алфавіт

Äëÿ Òóðáî-Ïðîëîãó àëôàâ³ò ñêëàäàºòüñÿ ç òàêèõ ñèìâîë³â:

1. àíãë³éñüê³ ³ ðîñ³éñüê³2 ë³òåðè 2. öèôðè 0,1,2,...,9

3. çíàêè àðèôìåòè÷íèõ ä³é +, -, *, /, mod, div 4. çíàêè â³äíîøåíü <, >, =, <=,>=,<>,><

5. äóæêè (, ), [, ]

6. çíàêè äëÿ êîìåíòàð³â /*, */, % 7. îáìåæóâà÷³ . , ; ' " :-

8. ñïåö³àëüí³ çíàêè (ñèìâîëè) !, ?, #, @, _, ~, º, ¿, ´ òà ³í.

1 Äàí³ òèïó symbol íà â³äì³íó â³ä äàíèõ òèïó string çàïàì’ÿòîâóþòüñÿ ó âíóòð³øí³é ñèìâîëüí³é òàáëèö³, ÿêà ðîçì³ùóºòüñÿ â îïåðàòèâí³é ïàì’ÿò³. Äëÿ ïîáóäîâè ö³º¿ òàáëèö³ íåîáõ³äíèé äîäàòêîâèé ÷àñ, àëå ¿¿ âèêîðèñòàííÿ çàáåçïå÷óº íàéá³ëüø øâèäêèé ïîøóê.

2 Ïðè âèêîðèñòàíí³ â ³ìåíàõ àòîì³â äåÿêèõ óêðà¿íñüêèõ ñèìâîë³â (¿,³,º,´) âèíèêຠïîìèëêà êîìï³ëÿö³¿. Òîìó áóäåìî ¿õ óíèêàòè àáî çàì³íþâàòè ïîä³áíèìè ðîñ³éñüêèìè.

(15)

15 Синтаксис програми

Ïðîãðàìà íà ìîâ³ Ïðîëîã ñêëàäàºòüñÿ ç ìíîæèíè ôàêò³â òà ïðà- âèë ³ ¿¿ ìîæíà ðîçãëÿäàòè ÿê ìåðåæó â³äíîøåíü, ùî ³ñíóþòü ì³æ òåð- ìàìè. Ôàêòè òà ïðàâèëà íàçèâàþòüñÿ ôðàçàìè ïðîãðàìè.

Ôàêò - öå òâåðäæåííÿ ïðî òå, ùî âèêîíóºòüñÿ äåÿêå êîíêðåòíå â³äíîøåííÿ àáî îïèñóºòüñÿ äåÿêà âëàñòèâ³ñòü îá’ºêòó (ôðàçà áåç óìîâ). Ôàêòè º ñòðóêòóðè, êîæíà ç ÿêèõ çàâåðøóºòüñÿ ñèìâîëîì “êðà- ïêà”. Âîíè ÿâëÿþòü ñîáîþ ò³ äàí³, ç ÿêèìè îïåðóº ïðîãðàìà. Ôàêò, ùî ñêëàäàºòüñÿ ç³ ñòðóêòóðè ç îäíèì åëåìåíòîì, îïèñóº äåÿêó âëàñòèâ³ñòü.

Ôàêò, ùî ìຠàðí³ñòü á³ëüøó 1, îïèñóº â³äíîøåííÿ ì³æ îá’ºêòàìè.

Ïðàâèëî - öå ôàêò, ³ñòèíí³ñòü ÿêîãî çàëåæèòü â³ä ³íøèõ ôàêò³â.

Ïðàâèëî º êîíñòðóêö³ÿ âèäó:

висновок :-

умова 1, умова 2,..., умова n.

Òóò висновок, умова 1, умова 2,..., умова n - ñòðóêòóðè; òåðì висновок º çàãîëîâêîì ïðàâèëà, òåðìè умова 1, умова 2,..., умова n - ï³äö³ëÿìè ïðàâè- ëà. Ôîðìàëüíèé çàïèñ ïðàâèëà ³íòåðïðåòóºòüñÿ òàê: “Òâåðäæåííÿ ви- сновок º ³ñòèííèì, ÿêùî îäíî÷àñíî ³ñòèíí³ òâåðäæåííÿ умова 1, умова 2,..., умова n” àáî “Äëÿ òîãî, ùîá òâåðäæåííÿ висновок áóëî ³ñòèííèì, íåîáõ³äíî, ùîá áóëè ³ñòèííèìè òâåðäæåííÿ умова 1, і умова 2, ³ ò.ä. ³

умова n”.

Ñóêóïí³ñòü ôàêò³â ³ ïðàâèë, ÿê³ çàïèñàí³ ó ïðîãðàìó ó âèãëÿä³ òå- ðì³â ç îäíèì ³ òèì æå ôóíêòîðîì ³ ìàþòü îäíó ³ òó æ ê³ëüê³ñòü àðãó- ìåíò³â, âèçíà÷ຠïåâíèé ïðåäèêàò.

Íàéïðîñò³øà Ïðîëîã-ïðîãðàìà - öå ìíîæèíà ôàêò³â. Ìíîæèíó ôà- êò³â ùå íàçèâàþòü áàçîþ äàíèõ ïðîãðàìè.

Êð³ì ôàêò³â ³ ïðàâèë, ùî âèçíà÷àþòüñÿ ïðîãðàì³ñòîì, ìîæíà âè- êîðèñòîâóâàòè é ³íø³, òàê çâàí³, ñòàíäàðòí³ ïðåäèêàòè, ÿê³ âèêîíóþòü ð³çíîìàí³òí³ äîïîì³æí³ ä³¿.

Îòæå, çàì³ñòü äåñÿòê³â ð³çíîìàí³òíèõ îïåðàòîð³â ó ïðîöåäóðíèõ ìîâàõ Ïðîëîã ìຠîäèí âèä îïåðàòîðà - ïðàâèëî.

Структура програми

Äëÿ ïðîãðàìè íà Òóðáî-Ïðîëîç³ íåîáõ³äíà íàÿâí³ñòü ïåâíèõ ðîç- ä³ë³â êîìï³ëÿòîðà - îãîëîøåííÿ ïðîãðàìíèõ ñåêö³é domains, predicates,

clauses òîùî);.

Ïðîãðàìà íà Òóðáî-Ïðîëîç³ ìîæå ñêëàäàòèñÿ ç òàêèõ ðîçä³ë³â:

constants Îãîëîøåííÿ àòîì³â-êîíñòàíò. Ðîçä³ë íå îáîâ'ÿçêîâèé.

domains Îãîëîøåííÿ òèï³â äàíèõ äëÿ àðãóìåíò³â ïðåäèêàò³â.

Çì³ñò ðîçä³ëó ìîæå áóòè â³äñóòí³ì, àëå äëÿ êðàùî¿

÷èòàáåëüíîñò³ öþ äèðåêòèâó âêëþ÷àþòü ó ïðîãðàìó.

global domains Îãîëîøåííÿ ãëîáàëüíèõ òèï³â. Ðîçä³ë ìîæå áóòè â³ä-

ñóòí³ì.

(16)

16

database Îãîëîøåííÿ ïðåäèêàò³â äèíàì³÷íî¿ áàçè äàíèõ. Ðîç-

ä³ë ìîæå áóòè â³äñóòí³ì.

global database Îãîëîøåííÿ ïðåäèêàò³â ãëîáàëüíî¿ äèíàì³÷íî¿ áàçè

äàíèõ. Ðîçä³ë ìîæå áóòè â³äñóòí³ì.

predicates Îãîëîøåííÿ ïðåäèêàò³â. ßêùî òèïè äàíèõ äåÿêèõ

ïðåäèêàò³â ïåðåâèçíà÷åí³, òî íåîáõ³äíî ¿õ ïîïåðåäíüî îïèñàòè ó ðîçä³ë³ domains. Ðîçä³ë îáîâ’ÿçêîâèé.

global predicates Îãîëîøåííÿ ãëîáàëüíèõ ïðåäèêàò³â äëÿ ð³çíèõ ìîäó-

ë³â ïðîåêòó. Ðîçä³ë ìîæå áóòè â³äñóòí³ì.

goal Âèçíà÷åííÿ ö³ë³ (ìåòè). Ïðè íàÿâíîñò³ ó äàíîìó ðîç-

ä³ë³ òåêñòó çàïèòó êîìï³ëÿòîð, âèêîíóþ÷è ïðîãðàìó, àâòîìàòè÷íî íàìàãàºòüñÿ ïîãîäèòè öåé çàïèò. ßêùî ó ïðîãðàì³ â³äñóòí³é äàíèé ðîçä³ë, òî êîðèñòóâà÷ ìîæå ââîäèòè çàïèòè äî ïðîãðàìè.

clauses Ó öåé ðîçä³ë çàïèñóþòüñÿ ôðàçè, òîáòî ì³ñòèòüñÿ ñàì

òåêñò ïðîãðàìè. Ðîçä³ë, ÿê ïðàâèëî, íåîáõ³äíèé.

Îïö³¿ êîìï³ëÿòîðà (çàïèñóþòüñÿ ïåðåä ðîçä³ëàìè ïðîãðàìè):

code Îïö³ÿ çì³íè ìàêñèìàëüíî ìîæëèâîãî ðîçì³ðó ïðîãðàìè, ùî ðîçì³ùóºòüñÿ ó îïåðàòèâí³é ïàì’ÿò³. Äëÿ ÅÎÌ ç íå- âåëèêîþ îïåðàòèâíîþ ïàì’ÿòòþ íåîáõ³äíî çìåíøóâàòè ì³ñöå äëÿ ïðîãðàìíîãî êîäó, çàëèøàþ÷è á³ëüøå ì³ñöÿ äëÿ ñòåêó. ×èñëî, ùî ñë³äóº çà code çàäຠïàðàãðàôè: 1 ïàðàã- ðàô 16 áàéò³â. Çà çàìîâ÷óâàííÿì âåëè÷èíà code - 1024 (16Ê).

diagnostics Âèäà÷à êîðèñòóâà÷ó ä³àãíîñòè÷íî¿ òàáëèö³ ç³ ñïèñêîì

ïðåäèêàò³â òà ¿õ íàéâàæëèâ³øèìè âëàñòèâîñòÿìè. Òàáëè- öÿ âèäàºòüñÿ çà óìîâè, ùî ó ïðîãðàì³ º ðîçä³ë goal.

include Íàäຠìîæëèâ³ñòü óñòàâèòè òåêñò ôàéëà ³íøî¿ ïðîãðàìè

ó ïðîãðàìó, ùî êîìï³ëþºòüñÿ. ²ì’ÿ ôàéëà çàäàºòüñÿ ó ôî- ðìàò³ DOS. Öÿ îïö³ÿ äîçâîëÿº íàïèñàòè ñï³ëüí³ äëÿ ð³ç- íèõ ïðîãðàì ÷àñòèíè îäèí ðàç òà ï³äêëþ÷àòè ¿õ äî öèõ ïðîãðàì ïðè êîìï³ëÿö³¿.

nobreak ³äì³íÿº îïèòóâàííÿ êëàâ³àòóðè íà ïîÿâó ïåðåðèâàííÿ

(Ctrl+C, Ctrl+Break) ï³ä ÷àñ âèêîíàííÿ êîæíîãî ïðåäèêà- òó ïðîãðàìè.

nowarnings Çàãëóøóº ïîïåðåäæåííÿ êîìï³ëÿòîðà ïðî òå, ùî ó ïðîãðà-

ì³ çì³ííà çóñòð³÷àºòüñÿ îäèí ðàç àáî ùî âîíà íå çâ’ÿçàíà.

project Âèêîðèñòîâóºòüñÿ ïðè ìîäóëüíîìó ïðîãðàìóâàíí³. Â

îïèñàíí³ ïðîåêòó âèçíà÷àþòüñÿ âñ³ ìîäóë³.

shorttrace Âêëþ÷ຠñêîðî÷åíå òðàñóâàííÿ. Ïðîãðàìà ïðè öüîìó âè-

êîíóºòüñÿ ó ðåæèì³ “çà êðîêàìè”. Ïðîãðàìà îïòèì³çóºòüñÿ.

(17)

17

trace Ïîâíå òðàñóâàííÿ. Âíóòð³øíÿ îïòèì³çàö³ÿ â³äêëþ÷àºòüñÿ.

Äëÿ òðàñóâàííÿ ó ïåâíîìó ì³ñö³ ïðîãðàìè çàïèñóºòüñÿ íà

¿¿ ïî÷àòêó trace ³ â³äêëþ÷àºòüñÿ òðàñóâàííÿ trace(off); ó ïîòð³áíîìó ì³ñö³ ïðîãðàìè òðàñóâàííÿ âêëþ÷àºòüñÿ trace(on). Äëÿ òðàñóâàííÿ “çà êðîêàìè” íåîáõ³äíî ñêîðèñ- òàòèñÿ êîìàíäîþ ôóíêö³îíàëüíîãî ìåíþ (êëàâ³øà F10).

Çàóâàæåííÿ 3.

à) Ïðè çàïèñ³ ðîçä³ë³â ïðîãðàìè íåîáõ³äíî âðàõîâóâàòè, ùî:

- êîíñòàíòè, äîìåíè òà ïðåäèêàòè ïîâèíí³ áóòè îãîëîøåí³ äî òîãî, ÿê âîíè áóäóòü âèêîðèñòîâóâàòèñÿ;

- ïðîãðàìà ìîæå ìàòè íå á³ëüøå îäíîãî ðîçä³ëó goal;

- âñ³ ãëîáàëüí³ îãîëîøåííÿ ïîâèíí³ áóòè çðîáëåí³ äî ëîêàëüíèõ;

- ðîçä³ëè database ìîæóòü ìàòè ³ìåíà, àëå çàäàíå ³ì'ÿ ÿê íàçâà ðîç- ä³ëó â ïðîãðàì³ ìîæå áóòè âèêîðèñòàíå ëèøå îäèí ðàç;

á) Ùîá ñïîñòåð³ãàòè ïðîòîêîë òðàñóâàííÿ îäíî÷àñíî ç âèêîíàííÿì ïðîãðàìè

“çà êðîêàìè”, íåîáõ³äíî, ùîá â³êíà êîìï³ëÿòîðà (äèâ. ñòîð. 10) íå ïåðåêðèâàëèñü, à â³êíî òðàñóâàííÿ áóëî íåîáõ³äíîãî ðîçì³ðó.

2.3. Виконання програми

Âèêîíàííÿ ïðîãðàìè íà ìîâ³ Ïðîëîã º äîâåäåííÿì ³ñòèííîñò³ (ïîãîäæåííÿì) äåÿêîãî ëîã³÷íîãî òâåðäæåííÿ ó ìåæàõ äàíî¿ ñóêóïíî- ñò³ ôàêò³â ³ ïðàâèë.

Ëîã³÷íå òâåðäæåííÿ, ùî äîâîäèòüñÿ, ôîðìóëþºòüñÿ ó âèãëÿä³ íà- áîðó ïðåäèêàò³â, ç’ºäíàíèõ ì³æ ñîáîþ ñèìâîëîì “êîìà” (ëîã³÷íå “³”) àáî ñèìâîëîì “êðàïêà ç êîìîþ” (ëîã³÷íå “àáî”). Òàêå òâåðäæåííÿ ç òî÷êè çîðó Ïðîëîã-ïðîãðàìè º çàïèòîì, ÿêèé íåîáõ³äíî:

- ï³ä ÷àñ çàïóñêó êîìï³ëÿòîðà (êîìàíäà Run ãîëîâíîãî ìåíþ) ââåñòè ó ä³àëîãîâå â³êíî ï³ñëÿ ïîâ³äîìëåííÿ Goal: (Ö³ëü:),

- àáî çàïèñàòè ÿê ÷àñòèíó òåêñòó ïðîãðàìè ó ðîçä³ë³ goal.

Âèêîíàííÿ çàïèòó – öå ºäèíà ìîæëèâ³ñòü âèêîíàòè ïðîãðàìó ³ â³äøóêàòè â³äïîâ³äü äî çàäà÷³, ùî ðîçâ’ÿçóºòüñÿ.

Âèêîðèñòàííÿ êîíñòàíòè ÿê àðãóìåíòó ó ïðåäèêàòàõ çàïèòó äຠçìîãó çàäàòè âõ³äí³ äàí³ äî ïðîãðàìè, à âèêîðèñòàííÿ çì³ííî¿ – îòðèìàòè âèõ³äí³ äàí³. Âòàêèé ñïîñ³á äàí³ ìîæíà ââåñòè ò³ëüêè äî ïî÷àòêó ðîáîòè ïðîãðàìè, à îäåðæàòè ðåçóëüòàòè – ï³ñëÿ çàê³í÷åííÿ.

Äëÿ ââîäó, âèâîäó äàíèõ ó ïðîöåñ³ ðîáîòè ïðîãðàìè âèêîðèñòî- âóþòüñÿ ñòàíäàðòí³ ïðåäèêàòè ââîäó-âèâîäó, ñåðåä ÿêèõ:

readint (Х), readreal (Х), readln (Х) - äëÿ ââåäåííÿ ç ïîòî÷íîãî ïðèñòðîþ ââîäó â³äïîâ³äíî ö³ëèõ, ä³éñíèõ ÷èñåë òà ðÿäêà ñèìâîë³â;

write (Зн1, Зн2, Зн3,...) – âèâîäèòü çàäàí³ çíà÷åííÿ Зн1, Зн2, Зн3,... íà ïî- òî÷íèé ïðèñòð³é âèâîäó, äå Зн1, Зн2, Зн3,... - êîíñòàíòè àáî çì³íí³;

(18)

18

nl – ïåðåâîäèòü âèõ³äíèé ïîò³ê íà íàñòóïíèé ðÿäîê ïîòî÷íîãî ïðèñòðîþ âèâîäó.

Ïðåäèêàòè ââîäó-âèâîäó íàçèâàþòü ïîçàëîã³÷íèìè. ¯õ 䳿 ó ïðî- öåñ³ ðîçâ'ÿçêó ëîã³÷íèõ ö³ëåé ïîðîäæóþòü ïîá³÷í³ åôåêòè. Ïîá³÷íèé åôåêò - öå òàêà ä³ÿ ïðåäèêàòó, ÿêà íå àíóëþºòüñÿ ïðè ïîâåðíåíí³ ó ðàç³ ðîáîòè ìåõàí³çìó ïîâåðíåííÿ Òóðáî-Ïðîëîãó (ñòîð. 20).

Приклад 1. ³äîìî òå, ùî Ïåòðî òà Îëüãà íàâ÷àþòüñÿ ó 10 êëàñ³, Õîìà òà Ëåñÿ - ó 9 êëàñ³. Îäèí ó÷åíü çíຠ³íøîãî, ÿêùî âîíè â÷àòüñÿ â îäíîìó êëàñ³. Ââàæàºòüñÿ, ùî ïåâíèé ó÷åíü íå ìîæå çíàòè ñàì ñåáå.

domains /* pr_1. pro */

учень = symbol клас = integer predicates

вчиться ( учень, клас) знае ( учень, учень) clauses

вчиться ( хома , 9 ).

вчиться ( петро , 10 ).

вчиться (ольга, 10 ).

вчиться ( леся , 9 ).

знае ( Х , Y ) :-

вчиться ( Х , Клас ) , вчиться ( Y , Клас ) , Х <> Y.

Êîìåíòàð. Ó ïðîãðàì³ îãîëîøóþòüñÿ ïðåäèêàòè вчиться/2 ³ знае/2, àðãóìåíòè учень òèïó “ðÿäîê ñèìâîë³â” ³ клас òèïó “ö³ëå ÷èñëî”. Óìîâà òîãî, ùî ó÷åíü X íàâ÷àºòüñÿ â îäíîìó é òîìó æ êëàñ³ ç ó÷íåì Y çàáåç- ïå÷óºòüñÿ îäíàêîâèì ³ìåíåì çì³ííî¿ ó â³äïîâ³äíèõ óìîâàõ ïðàâè- ëà.

Організація запитів

ϳñëÿ òîãî, ÿê êîìï³ëÿòîð âèêîíຠêîìàíäó Run ãîëîâíîãî ìåíþ, ìîæíà ââåñòè ó ä³àëîãîâå â³êíî çàïèò äî ïðîãðàìè.

Ïðîñòèé çàïèò ñêëàäàºòüñÿ ç ³ìåí³ ïðåäèêàòó, çà ÿêèì ó äóæêàõ ì³ñòèòüñÿ ñïèñîê àðãóìåíò³â.

ßêùî ââåäåíî çàïèò ç êîíñòàíòàìè, òîáòî ó çàïèò íå âõîäÿòü çì³íí³, òî êîìï³ëÿòîð äຠîäíó ç â³äïîâ³äåé Yes àáî No. ßêùî ó çàïèò âõîäÿòü çì³íí³, òî êîìï³ëÿòîð íàìàãàºòüñÿ â³äøóêàòè âñ³ òàê³ ¿õ çíà-

÷åííÿ, ïðè ÿêèõ çàïèò áóäå ³ñòèííèì. Ïðè â³äïîâ³ä³ çì³íí³é ïðèñâîþ- ºòüñÿ çíàéäåíå çíà÷åííÿ àáî (ó âèïàäêó, êîëè ïîòð³áíå çíà÷åííÿ çì³ííî¿ íå çíàéäåíî) âèäàºòüñÿ ïîâ³äîìëåííÿ No Solution.

ßêùî íåîáõ³äíî îäåðæàòè ò³ëüêè îäíó â³äïîâ³äü íà çàïèò ³ç çì³í- íèìè, ïîòð³áíî ïðè ôîðìóëþâàíí³ çàïèòó âèêîðèñòàòè â³äñ³êàííÿ.

(19)

19 ßêùî ó çàïèò âõîäèòü àíîí³ìíà çì³ííà (_), òî öå ð³âíîñèëüíå íàêàçó êîìï³ëÿòîðó çíåõòóâàòè çíà÷åííÿ àðãóìåíòó. Òàêà çì³ííà áóäå ïîãîäæåíà áóäü ç ÷èì, àëå íå áóäå ìàòè í³ÿêîãî çíà÷åííÿ, òîáòî âèõ³- äí³ äàí³ çà äîïîìîãîþ òàêî¿ çì³ííî¿ íå âèâîäèòèìóòüñÿ.

Ñêëàäåíèé çàïèò óòâîðþºòüñÿ ç äåê³ëüêîõ ïðîñòèõ çàïèò³â, ç’ºäíàíèõ ì³æ ñîáîþ òàêèìè çíàêàìè: “êîìà” àáî ñïîëó÷íèêîì (and) - ëîã³÷íå “³”; “êðàïêà ç êîìîþ” àáî ñïîëó÷íèêîì (or) - ëîã³÷íå “àáî”.

Ìîæëèâ³ çàïèòè äî ïðîãðàìè:

Çàïèò ²íòåðïðåòàö³ÿ Ðåçóëüòàò

вчиться (хома, 9) Чи вчиться Хома у 9-му класі? Yes вчиться (ольга, 9) Чи вчиться Ольга у 9-му класі? No вчиться (хома, К) Де (у якому класі) вчиться Хо-

ма?

K=9 1 Solution вчиться (Х,10) Хто вчиться у 10-му класі? Х= петро

Х= ольга 2 Solutions знае (петро, Х) Кого знає Петро? Х= ольга

1 Solution знае (Х, Y) Знайти тих, хто знає один одно-

го? X= хома, Y= леся

X= петро, Y= ольга X= ольга, Y= петро X= леся, Y= хома 4 Solutions вчиться (Х, 9) , знае (леся, Х) Серед тих, хто вчиться у 9-му

класі, відшукати тих, кого знає Леся?

Х= хома 1 Solution вчиться (Х, 9) , знае (Х, ольга) Хто вчиться у 9-му класі і знає

Ольгу?

No Solution вчиться (Х, 9) ; знае (петро, Х) Відшукати тих, хто вчиться у 9-

му класі або тих, кого знає Петро?

Х= хома Х= леся Х= ольга 3 Solution вчиться (Х, _) , знае (ольга, Х) Кого серед тих, які вчаться у

будь-якому класі, знає Ольга?

Х= петро 1 Solution

Çàóâàæåííÿ 4.

Êîìï³ëÿòîð Òóðáî-Ïðîëîã ìîæå âèêîíóâàòè ïåâí³ çàïèòè äî ïðîãðàì, ÿê³ íå ì³ñòÿòü äèðåêòèâè goal, ³ ïîä³áíî äî äåÿêèõ âåðñ³é ïðîöåäóðíèõ ìîâ ìîäåëþºòüñÿ ðåæèì áåçïîñåðåäí³õ îá÷èñëåíü. Íàïðèêëàä, íå- çàëåæíî â³ä òåêñòó ïðîëîã-ïðîãðàìè ìîæíà îá÷èñëèòè çíà÷åííÿ âèðàçó 3,2-2,95, âèêîíàâøè ó ä³àëîãîâîìó â³êí³ Òóðáî- Ïðîëîãó çàïèò X=sqrt(3.2-2.95). Îäåðæèìî â³äïîâ³äü X=0.5.

Посилання

СУПУТНІ ДОКУМЕНТИ

Ìàìóòîâ Â.. ç’ÿâèëèñÿ íîâ³ ìîæëèâîñò³ äëÿ çàëó÷åííÿ ³íâåñòèö³é, ÿê³ â íåäîñòàòíüîìó ñòóïåí³ âèêîðèñòîâóþòüñÿ íà ïðàêòèö³. «Íàÿâí³ñòü

íå ñàì Êèí äèí Õîì ’ÿê Ñìîð äî âñüêèé, ÿêèé îäðó æó - âàâ ñÿ âæå ÿê ìiíiìóì âäðó ãå, à éîãî áàòü êî, Òèò ²âà íî âè÷, âíiñ âiíî âèé çà ïèñ ñâî¿é «ítâtñòúöt», îñêiëüêè

Íàïðèêëàä, ó äåðæàâíèõ ñëóæáîâö³â ðîçì³ð äîäàòêîâî¿ îïëà÷óâàíî¿ â³äïóñòêè çàëåæèòü â³ä ñòàæó ðîáîòè, à ñàìå: äåðæàâíèì ñëóæáîâöÿì, ÿê³ ìàþòü

Ó ïðîöåñ³ ðîçêðèòòÿ é ðîçñë³äóâàííÿ çëî÷èí³â ïðîòè ìîðàëüíîñò³ ó ñôåð³ ñòàòåâèõ ñòîñóíê³â, íà íàø ïîãëÿä, ñë³ä âèä³ëèòè:

Îäèí èç íèõ, ðåøàþùèé ïðîáëåìó ñîçäàíèÿ áûñòðîäåéñòâóþùåãî ìåòîäà ìîäåëèðîâàíèÿ îäèíî÷íûõ êîíñòàíòíûõ äåôåêòîâ äëÿ îöåíêè

ßêùî áëèçüêî 20 ðîê³â òîìó öèìè ïèòàííÿìè çàéìà- ëèñÿ ïåðåâàæíî çàõ³äí³ â÷åí³, ÿê³ çðîáèëè âàãî- ìèé âíåñîê ó ðîçâèòîê ñòðàòåã³÷íîãî ìåíåäæ- ìåíòó

Ïðîâåäåíèé àíàë³ç ïîä³é, ÿê³ âïëèíóëè íà ðîçâèòîê êàð'ºð ìåíåäæåð³â ì³æíàðîäíèõ êîìïàí³é ïîêàçàâ, ùî íàéá³ëüøèé âïëèâ çä³éñíèëè ñóòòºâ³ çì³íè â

Êîíöåïòóàëüíèé íàïðÿì â îðãàí³зàö³ї îбë³êó, íà äóìêó àâòîð³â, ïî÷èíàєòüñÿ з³ ñòâîðåííÿ «äåðåâà ö³ëåé», фîðìóâàííÿ «ñòðàòåã³÷íîãî

Àâòîð ïîñèëàºòüñÿ íà òðàäèö³éí³ äëÿ ïðîöåñóàëüíîãî ïðàâà ãðóïè ôàêò³â, ÿêèìè îá´ðóíòîâóºòüñÿ ï³äñòàâà äëÿ ïîçîâó: ôàê- òè, ùî áåçïîñåðåäíüî ñâ³ä÷àòü

Äðóãèé ï³äõ³ä ðîçãëÿäຠ«ïðîôåñ³éíå âè- ãîðàííÿ» ÿê äâîâèì³ðíó ìîäåëü, ùî ñêëàäà- ºòüñÿ, ïî-ïåðøå, ç åìîö³éíîãî âèñíàæåí- íÿ òà,

The article presents the prerequisites for the development of algorithmization of the synthesis of structural elements in the process of design and technological solutions

Äëÿ êîîðäèíàö³¿ ä³é öåíòðàëüíèõ îðãàí³â âëàäè ³ óñóíåííÿ ïåðåøêîä ó ä³ÿëüíîñò³ òåõíîïàðê³â áóëî ñòâîðåíî Êîì³ñ³þ ç îðãàí³çàö³¿

³íôëÿö³ÿ âíóòð³øíüî âáóäîâàíà ó ìåõàí³çì ñó÷àñíî¿ ðèíêîâî¿ åêîíîì³êè. Íå êîæíå ï³äâèùåííÿ ö³í є ïîêàçíèêîì ³íôëÿö³¿. Ц³íè ìîæóòü

Àâåð’ÿíîâ ââàæàº, ùî ìåõàí³çì äåðæàâíîãî óïðàâë³ííÿ – öå ñó- êóïí³ñòü â³äïîâ³äíèõ äåðæàâíèõ îðãàí³â, îðãàí³çîâàíèõ ó ñèñòåìó äëÿ

Ìè áà÷èìî, ùî êë³ðèíãîâ³ ÷ëå- Ó ñòàòò³ íàäàíî îá´ðóíòóâàííÿ äîö³ëüíîñò³ òà íåîáõ³äíîñò³ âèêîðèñòàí- íÿ ïîñëóã öåíòðàëüíîãî

Ó ñòàòò³ äîâåäåíî, ùî àäì³í³ñòðàòèâíî-ïðàâîâèé ñòàòóñ ïîì³÷íèêà ñóää³ – öå ñóêóïí³ñòü éîãî ïðàâîñóá’ºêòíîñò³, ïðîôåñ³éíèõ çàâäàíü, çîáîâ’ÿçàíü ³ ïðàâ

Éîãî ñàìîáóòí³ñòü ³ îðèã³- íàëüí³ñòü ïîëÿãàëè â òîìó, ùî íà â³äì³íó â³ä ñâî¿õ ïîïåðåäíèê³â, ÿê³ ìàëî óâàãè ïðèä³ëÿëè ïèòàííÿì çì³ñòó

416] ââàæàº, ùî ôîðìóâàííÿ âèòðàò ñèñòåì³ îáë³êó äëÿ ïî- òðåá óïðàâë³ííÿ çä³éñíþºòüñÿ çà îêðåìèìè îá’ºêòàìè: âèäàìè ïðîäóêö³¿, ðîá³ò, ïîñëóã,

æ³íî÷î¿ þðèäè÷íî¿ îñâ³òè íà óêðà¿í- ñüêèõ çåìëÿõ ïî÷àòêó ÕÕ ñò., ùî ìîæå ñòàòè ïðèêëàäîì äëÿ ñòàíîâëåííÿ ñó÷àñ- íî¿ ñèñòåìè âèùî¿ îñâ³òè â

Öå, ó ñóêóïíîñò³ ñâ³ä÷èòü, ùî íàéá³ëü- øèé âïëèâ íà åêîíîì³÷íå çðîñòàííÿ ìຠñàìå äîâãîñòðîêîâå êðåäèòóâàííÿ, à îáñÿãè ðåñóðñ³â áàíê³â çàëåæàòü

Êð³ì óñòàíîâëåíèõ ïðîöåñóàëüíèõ âèìîã ùîäî ïðîòîêîëó ïðî àäì³í³- ñòðàòèâíå ïðàâîïîðóøåííÿ, â³í ïîâèíåí â³äïîâ³äàòè é çì³ñòîâèì âèìîãàì, ÿê³ ìîæíà

Íå ò³ëüêè çàõ³äíèé çäîðîâèé ñïîñ³á æèòòÿ, àëå ³ àäàïòàö³éíèé ï³äõ³ä â ö³ëîìó íå ìîæå â³äáóòèñÿ â ñàìîäîñòàòí³é ôîðì³ âæå ïî îäí³é.. Îñòàíí³é

Та одна без другої Хліба не одріже. Та одна без другої Не