Page 10 - 4800
P. 10
auto = car(symbol,integer),
packing = box(integer, integer, integer); bottle(integer)
описує дві області auto і packing. Область auto відповідає двокомпонентній структурі з
функтором car, а область packing відповідає одній з двох можливих структур box і
bottle, що розрізняються не тільки іменами, але і кількістю компонентів.
г) file = name1; name2 ; ... name_n
використовується, коли необхідно посилатися на файли по їхніх символічних іменах.
Наприклад, розглянемо побудову структури даних для збереження інформації
про комп'ютери. При цьому кожен комп'ютер буде розглядатися як набір вхідних у
нього пристроїв, серед яких можуть бути: процесори з указівкою їхнього найменування
і частоти, вінчестери із указівкою їхнього обсягу і фірми виготовлювача, також
монітори визначеного типу. Область визначення доменів для цього прикладу буде мати
вигляд
domains
name , firm , type = symbol
freq , vol = integer
device = processor(name, freq); disk(firm, vol); monitor(type)
computer = device*
У цьому описі домен computer є списком елементів типу device, тобто кожен
елемент цього списку може мати структуру типу або processor, або disk, або monitor, що
містять одну або два компоненти, кожна з яких має стандартний символьний чи цілий
тип.
1.3.2 Секція predicates
У секції predicates описуються предикати і типи (домени) аргументів цих
предикатів. Імена предикатів повинні починатися з рядкової латинської букви, за якої
слідує послідовність букв, цифр і символів підкреслення (до 250 знаків). В іменах
предикатів не можна використовувати символи пробілу, мінуса, зірочки, зворотної (і
прямій) риски. Оголошення предикатів має форму:
predicates
predicateName_1 (domen_11, domen_12,..., domen_1m)
predicateName_n (domen_n1, domen_n2,..., domen_nk)
де domen_ij – або стандартні домени, або домени, оголошені в секції domains.
Оголошення домену аргументу й опис типу аргументу – те саме. Кількість доменів
(аргументів) предиката визначають арність (розмірність) предиката. Предикат може не
мати аргументів і мати тільки ім'я. Звичайно вибирається таке ім'я предиката, щоб воно
відображало визначений вид взаємозв'язку між аргументами предиката. Приклад опису
предикатів:
predicates
student( string,real)
start
good_student( string)
Можна використовувати кілька описів того самого предиката. При цьому всі
описи повинні слідувати один за іншим і повинні мати однакове число аргументів.
Нехай потрібно визначити відношення між трьома аргументами, перші два з яких
відповідають доданкам, а третій – сумі двох перших. Цей предикат може бути
описаний у наступному виді:
predicates
add(integer,integer,integer)
add(real,real,real)
і дозволить його аргументам набувати значень як з області цілих, так і дійсних чисел.
1.3.3 Секція clauses
У секції clauses розміщаються факти і правила, з якими буде працювати Пролог,
намагаючись довести мету програми.
10