34
clauses
сеp_ар (X, Y, R):- /*(1)*/
bound(X), bound(Y),
R = (X + Y) / 2.
сеp_ар (X, Y, R):- /*(2)*/
free (X), bound (Y), bound (R),
X = 2 * R - Y.
сеp_ар (X, Y, R):- /*(3)*/
free (Y), bound (X), bound (R),
Y = 2 * R - X.
Êîìåíòàð. Ïðîöåäóðà сеp_ар/3 ðåàë³çóºòüñÿ òðüîìà ïðàâèëàìè. Çà ïðàâèëîì
(1) çàáåçïå÷óºòüñÿ çíàõîäæåííÿ ñåðåäíüîãî àðèôìåòè÷íîãî äâîõ
äàíèõ ÷èñåë (R- çì³ííà ó çàïèò³) òà ïåðåâ³ðêà ôàêòó òîãî, ùî ó
òð³éö³ àðãóìåíò³â çàïèòó сеp_ар/3 îñòàíí³é àðãóìåíò º ÷èñëîì -
ñåðåäí³ì àðèôìåòè÷íèì ïåðøèõ äâîõ ÷èñåë (R - êîíñòàíòà ó çàïè-
ò³). Çà ïðàâèëîì (2) çíàõîäèòüñÿ ïåðøå ç òðüîõ ÷èñåë, ÿêùî äàíî
äðóãå ÷èñëî òà çíà÷åííÿ ñåðåäíüîãî àðèôìåòè÷íîãî äâîõ ÷èñåë (X-
çì³ííà ó çàïèò³). Çà ïðàâèëîì (3) çàïèò áóäå âèêîíàíî óñï³øíî,
ÿêùî ó çàïèò³ X-÷èñëî, Y-çì³ííà, R-÷èñëî..
Операції перетворення
Îïåðàö³¿ ïåðåòâîðåííÿ ðåàë³çóþòüñÿ ñòàíäàðòíèìè ïðåäèêàòàìè:
char_int (Символ, Число) - ïåðåòâîðþº ñèìâîë ó ö³ëå ÷èñëî - ASCII êîä
ñèìâîëó àáî íàâïàêè.
Символ - òèï char.
Число - òèï integer.
Ïðîòîòèï: (i, î), (o, i), (i, i).
str_int (Рядок, Число) - ïåðåòâîðþº ðÿäîê ñèìâîë³â ó ö³ëå ÷èñëî àáî íà-
âïàêè. Ðÿäîê ñèìâîë³â íå ìîæå ì³ñòèòè ³íøèõ ñèìâîë³â,
êð³ì ñèìâîë³â-öèôð; ñèìâîë "ïðîá³ë" ìîæå ì³ñòèòèñÿ ò³ëüêè
íà ïî÷àòêó àáî ó ê³íö³ ðÿäêà.
Рядок - òèï string.
Число - òèï integer.
Ïðîòîòèï: (i, î), (o, i), (i, i).
str_char (Рядок, Символ) - ïåðåòâîðþº ðÿäîê ñèìâîë³â, ùî ñêëàäàºòüñÿ ç
ºäèíîãî ñèìâîëó, ó ñèìâîë àáî íàâïàêè.
Рядок - òèï string.
Символ - òèï char.
Ïðîòîòèï: (i, î), (o, i), (i, i).
str_real (Рядок, Число) - ïåðåòâîðþº ðÿäîê ñèìâîë³â ó ä³éñíå ÷èñëî àáî
íàâïàêè. Ðÿäîê ñèìâîë³â íå ìîæå ì³ñòèòè ³íøèõ ñèìâîë³â,
êð³ì ñèìâîë³â-öèôð, ñèìâîëó "äåñÿòêîâà êðàïêà" òà ñèìâîëó
E (ñèìâîë, ùî âêàçóº íà ïîðÿäîê ÷èñëà ïðè éîãî ïðåäñòàâ-
ëåíí³ ó ïëàâàþ÷³é ôîðì³); ñèìâîë "ïðîïóñê" ìîæå ì³ñòèòèñÿ