сьо галі Далекі від цього ідеалу декларативного програмування. Нельзя ігноруваті конкретно, чітко Певний способ моделювання абстрактного оператора в реализации кожної мови. Ефективне логічне програмування требует знання й использование цього способу.
У практичному програмуванні на Пролозі необходимо звернути Рамус на ефективність програм. Встановімо Критерії ОЦІНКИ програм. Основний оцінюваній параметр - число віконуваніх уніфікацій и число СПРОБА уніфікації в процессе обчислення. Цей параметр пов язаний Із годиною роботи програми. Ще один параметр - Глибина вкладеної рекурсії. Если в процессе Обчислення Глибина стані більш максимально пріпустімої, то обчислення перервуться. На практике ця проблема є основною. Третій параметр - число породженіх структур даних.
Можна пріпустіті, что при розумному запісі детермінованого послідовного алгоритму у виде програми на Пролозі очікувана ефективність алгоритму збережеться. Звічайна результуючі програми на Пролозі НЕ ґрунтуються на уніфікація Загально увазі або Глибока Повернення.
складності могут вінікнуті при реализации алгоритмів, пов язаних з істотною Перебудова структур даних, например вікорістовуючі дерева; при цьом витрати будут зростаті логаріфмічно. Однак у багатьох випадка більш природно Було б модіфікуваті сам алгоритм, пристосовуючи его до принципом однократного прісвоювання, властівому логічнім зміннім.
ІІ. Розв язування математичних задач мовою Prolog
Пролог - мова, что Швидко розвівається. За останні роки з явилося более десятка его НОВИХ діалектів; розроблені про єктні Розширення Прологу, в якому є засоби для роботи з абстрактними типами даних. Віявілося, что на Пролозі можливе розв язання задач з використанн підходів, далеких від математичної логіки, зокрема, функціонального и про єктно-орієнтованого програмування.
Пролог, Який відносіться до реляційніх мов високого уровня, Суттєво відрізняється від процедурно мов програмування (Бейсік, Паскаль, Фортран ТОЩО) як за типами даних, так и за базовий конструкціямі, та розрахованій на Ефективне розв язання широкого кола завдань Певного класу, реалізація якіх процедурними мовами значний ускладнюється. Альо Пролог НЕ є універсальною мовою програмування, тому існує ряд класів задач, для розв язку якіх использование Прологу є малоефектівнім. До таких завдань слід Віднести обчислювальні задачі: засоби виконан обчислювальних Дій Прологу й достатньо слабкі и носячи основном допоміжній характер.
Пролог прідатній для завдань, де головне значення мают доладно структуровані нечіслові дані, а такоже для завдань, де Важлива роль відіграє поиск розв язку среди багатьох варіантів.
Процес розв язання задачі мовою програмування Prolog проходити у декілька етапів:
. Аналізуються дані умови задачі (або ще кажуть, предметна область): факти, Функції, відношення. Вібіраються Позначення для них.
. Опісуються природною мовою з точки зору істінності відношення та функції.
. Опісані відношення оформлюються як аксіомі у виде фраз (Фактів, правил), зрозуміліх Прологу для роботи з ними. Множини таких фраз складає структуру предметної області. Програма вводитися у робоче поле компілятора.
. Формулюються та віконуються Предложения до введеної програми, Завдяк чому досягається результат розв язку задачі.
2.1 розв язування логічніх завдань
приклада Деяк логічніх завдань мовою Prolog:
Пріклад1.
Написати та реалізував програму встановлення батьківщину зв'язків: Василь має доньку Ольгу, у якої дві сині Михайло и Максим. Використовуват Зовнішні и внутрішні цілі.
domains=symbol (name) (name) (name, name) (name, name) (name, name) (name, name). (Z, Y), (Z, Y),. ( Vaciliy ). ( Michail ). ( Maxim ). ( Olga ). ( Michail raquo ;, Olga ). ( Maxim raquo ;, Olga ). ( Olga raquo ;, Vasiliy ). (X, Y): - men (X), men (Y), sons (X, Y), doughter (Z, Y). (X, Y): - men (X), men (Y), sons (X, Z), sons (Y, Z), X lt; gt; Y.
Результат: Olga, Vaciliy
Приклад 2. Написати програму, что створює список міст. Віконаті програму з різнімі внутрішнімі и зовнішнімі цілямі.
domains_list=town=symbol (town_list) ([A, B, C, D, E]), (A, , raquo ;, B, , raquo ;, C, laquo ;, raquo ;, D, , raquo ;, E). ([ Kazan raquo ;, Nignekamsk raquo ;, Elabuga raquo ;, Bugulma raquo ;, Almetevsk ]).
Результат: Kazan, Nignekamsk, Elabuga, Bugulma, Almetevsk
Приклад 3. Hello World!- Prolog: