Розв’язування математичнихзадач за допомогою мови логічного програмування - Prolog

Автор работы: Пользователь скрыл имя, 22 Декабря 2014 в 13:39, курсовая работа

Краткое описание

Майже всі сучасні комп’ютери засновані на ранніх, розроблених у 40-х роках ідеях Фон Неймана та його колег. Машина Фон Неймана має більшу пам’ять і процесор, оснащений локальною пам’яттю і комірками, що називаються регістрами. Процесор може завантажувати дані з пам’яті в регістри, виконувати арифметичні та логічні операції над вмістом регістрів і надсилати значення регістрів на згадку. Програма машини Фон Неймана являє собою послідовність команд виконання перерахованих операцій разом з додатковою більшістю команд управління, які впливають на вибір наступної команди.

Содержание

Вступ…………………………………………………….…………………………4
Розділ І. Мова логічного програмування – Пролог.…………………………….7
Переваги і недоліки мови Пролог………………………………....7
Числення предикатів – математична основа Прологу…………….9
Порівняльна характеристика середовищ програмування Prolog..11
Структура пролог-програми………………………………………22
1.5 Синтаксис мови програмування Prolog………………………..….27
Висновки до І розділу…………………………………………………….30
Розділ ІІ. Розв’язування задач мовою Prolog………………………………….31
Розв’язування логічних задач……………………………..………32
Розв’язування математичних задач……………………………...35
Висновки до ІІ розділу………………………………………..………….37
Загальні висновки………………………………………………………………..39
Список використаних джерел…………

Вложенные файлы: 1 файл

Курсова Пролог.docx

— 264.60 Кб (Скачать файл)

SWI - Prolog - це потужна середовище  розробки з набором графічних  інструментів ХРСЕ. Ядро системи ліцензовано під GNU LGPL , бібліотеки - під GNU GPL з додатковим умовою, що дозволяє використання в пропрієтарних додатках. Розвиток SWI - Prolog почалося в 1987 р. , і сьогодні він широко використовується в дослідницьких та освітніх цілях , а також у комерційних додатках.

SWI Prolog - досить популярна  система , в основному завдяки зручній середовищі і переносимої бібліотеці для створення графічного інтерфейсу. SWI - Prolog , як майже всі реалізації мови , здебільшого реалізує Edinburgh Prolog , але також містить окремі елементи ISO Prolog.

SWI - Prolog включає в себе  швидкий компілятор , профілювальник , набір бібліотек і зручний інтерфейс для підключення C - модулів. Він реалізований для ряду UNIX -платформ , таких , як HP , IBM Linux , для NeXT , OS / 2 , Sun і Sparc.

Prolog XREF

Логотип SWI – Prolog

 

ECLiPSe CLP

Реалізація мови програмування Prolog.

ECLiPSe ( ECLiPSe Constraint Logic Programming System ) - заснована на Prolog система , інтегруюча різні розширення логічної парадигми програмування , особливо логічного програмування з обмеженнями ( Constraint Logic Programming , CLP).

Ядро ECLiPSe є ефективною реалізацією Edinburgh Prolog. В основі лежить інкрементальний компілятор вихідних кодів в коди віртуальної машини.

Система ECLiPSe написана на Prolog і C.

 

  

TkECLiPSe - стандартна GUI- оболонка  для ECLiPSe , версія 6.0

EZY Prolog

Реалізація мови програмування Prolog.

EZY Prolog - нове покоління  інтерпретаторів мови Prolog. Він повністю був реалізований на Visual Prolog. EZY Prolog сумісний з Visual Prolog і PDC / Turbo Prolog. Підтримує инкапсуляцию.

EZY Prolog не просто інтерпретатор , вони має попередній компілятор , який дає програмісту зручний інструмент для перевірки , що програма є логічно несуперечливої ​​(контроль відповідності типів , аналіз шаблонів , використання неініціалізованої змінної , інтенсивний аналіз синтаксису ).

У EZY Prolog мається EZY Designer , який дозволяє створювати складні графічні інтерфейси користувача , зберігати його в текстовий файл (XML) і завантажувати назад при необхідності перегляду або обробки. При цьому можна не писати код для обробки графічного інтерфейсу - весь необхідний код може бути згенерований автоматично.

Що особливо примітно , у міру розвитку EZY Prolog , багато системних діалоги були написані на EZY Prolog (включаючи весь його інтерфейс).

EZY Prolog не створює виконувані  файли.

 

JIProlog

Реалізація мови програмування Prolog.

JIProlog ( Java Internet Prolog ) - багатоплатформовий інтерпретатор мови Prolog , який інтегрує мови Prolog і Java дуже простим способом. JIProlog дозволяє викликати предикати Prolog з Java і дозволяє викликати методи Java їх Prolog. JIProlog спроектований так , щоб він міг працювати з будь-якою версією Java 1.1 і більш пізніми версіями , що дозволяє інтегрувати Prolog навіть з JME.

 

Qu - Prolog.

Реалізація мови програмування Prolog.

Qu - Prolog - розширений Prolog розроблений  в першу чергу для автоматичного  доведення теорем. Має підтримку  символьних обчислень.

Qu - Prolog є багатопотоковий  і забезпечує зв'язок високого  рівня з потоками , процесами. Все це створює сильний механізм для программирующего.

Відмінні особливості Qu - Prolog :

• індексація динамічних баз даних

• динамічний збирач сміття для динамічних баз даних

• збирач сміття

• множинні потоки

• управління цілями

 

SICStus Prolog

Реалізація мови програмування Prolog.

SICStus Prolog - це сучасна система  розробки програм підтримуюча  діалект ISO Prolog. SICStus Prolog реалізований на високоефективному механізм, який може використовувати повне віртуальний простір пам'яті. SICStus Prolog ефективний і стійкий для більшості реалізованих додатків.

 

  

Вікно програми на SICStus Prolog

 

 

Strawberry Prolog

Діалект мови програмування Prolog.

Strawberry Prolog - діалект мови програмування Prolog. Його синтаксис близький ISO Prolog , але має безліч розширень , які не є частиною стандарту. За своєю задумом Strawberry Prolog повинен бути легким у використанні , тому деякі університети використовують його для курсів з Prolog.

Strawberry Prolog розробляється  інститутом математики та інформатики  болгарської академії наук. Перша версія була випущена в 1996 році.

деякі розширення

• глобальні змінні

• масиви

• визначення функцій і вбудованих предикатів

• CGI скрипти

• COM і ActiveX

• Strawberry Prolog як сервер OLE

• доступ до бази даних через ODBC

 

Arity Prolog

Реалізація мови програмування Prolog.

З комерційних реалізацій Прологу треба згадати колишній один час вельми популярним Arity Prolog. Система Arity / Prolog являє собою засіб програмування універсального призначення , яке може використовуватися для створення прикладних систем усіх типів. Пролог відрізняється від процедурних мов не тим , що він робить , а тим як він це робить.

Інтерпретатор

Пролог - програми можуть створюватися за допомогою інтерпретатора. Розробка програми при використанні інтерпретатора є повністю інтерактивною. Працюючи в інтерпретаторі , користувач , використовуючи вбудований редактор системи Arity / Prolog може редагувати одночасно до дев'яти файлів , перемикатися за допомогою єдиної клавіші від процесу редагування до прогону програми. При роботі з інтерпретатором відсутня необхідність реструктурувати програму або здійснювати її рекомпіляції та редагування зв'язків ( компоновку ). Для того щоб запустити програму на виконання, досить ввести у відповідь на запрошення інтерпретатора відповідний запит.

Компілятор

Компілятор системи Arity / Prolog дозволяє отримати більш швидкий і більш ефективний код , ніж код вироблений інтерпретатором. Компілятор виробляє на основі вихідного коду Пролог - програми об'єктний код. Отримані після компіляції об'єктні модулі потім редагуються ( компонуються ) з модулями з бібліотеки системи Arity / Prolog для отримання виконуваного образу завдання. Компілятор може використовуватися таким чином для отримання високоефективного коду , який може потім використовуватися з інтерпретатором або як самостійної програмної одиниці. Розробка програми починається частіше в середовищі інтерпретатора , оскільки він дозволяє виконувати , налагоджувати і безперервно змінювати текст цієї програми. Після того , як розробка окремих фрагментів програми закінчена , вони можуть бути відкомпільовані і вбудовані потім у інтерпретатор. Таким чином , подальша розробка програми може тривати вже з використанням цих компільованих сегментів програми.

 

B- Prolog

Реалізація мови програмування Prolog.

B- Prolog - універсальна і  ефективна система логічного  програмування , що розробляється Afany Software. Система заснована на вдосконаленому WAM , названим ATOAM , який полегшує програмну емуляцію. На додаток до ATOAM зі складальником сміття , написаним на C , система складається з компілятора й інтерпретатора , написаних вProlog , багатій бібліотеці вбудованих предикатів , реалізованих в C і Prolog. B- Prolog підтримує стандарт ISO Prolog , але володіє власними особливостями , які не доступні в традиційних системах.

Інтерактивне середовище

B- Prolog має інтерактивну  середу , через яку користувач може переглядати , компілювати , завантажувати , налагоджувати і виконувати програми. Редактор команд полегшує вибір і редагування раніше введених команд.

Двонаправлений інтерфейс з C або Java

B- Prolog має двонаправлений  інтерфейсу C і Java. Цей інтерфейс  дозволяє інтегрувати додатки  розробляються в B- Prolog до розробляються  в C , C + + , Java.

 

Правила дії

B- Prolog пропонує користувачеві  унікальну конструкцію , названу правилами дії , яка корисна при паралельному програмуванні , реалізації обмежень , розробці інтерактивних графічних інтерфейсів.

Механізм табулювання

B- Prolog підтримує механізм  табулювання , який ефективний для таких додатків як синтаксичний аналіз , рішення задач , доведення теорем , перевірка моделі , дедуктивні бази даних.

Логотип B- Prolog

 

GNU Prolog

Реалізація мови програмування Prolog.

GNU Prolog - компілятор мови  Prolog , що поширюється за ліцензією GNU GPL. Продуктивність GNU Prolog порівнянна з комерційними компіляторами ( по швидкості зовсім небагато поступається SICStus Prolog ).

Розробка GNU Prolog почалася в січні 1996 року під назвою Calypso. У березні 1999 року Calypso ( beta 7 ) був перейменований в gprolog 0.9.0.

Особливості GNU Prolog

Мова

• відповідає стандарту ISO Prolog ( целочисленная / плаваюча арифметика , потоки , динамічний код , виключення)

• безліч розширень ( глобальні змінні , підтримка виразів DCG , підтримка сокетів , інтерфейс операційної системи )

• більше 300 вбудованих предикатів

• відладчик і низькорівневий WAM відладчик

• можливість автозаповнення атомів при редагуванні в інтерактивному інтерпретаторі

• потужний двонаправлений інтерфейс між Prolog і C

Компілятор

• компілятор генерує автономні виконувані файли , які не потребують для виконання окремої середовища

• простий компілятор з командного рядка , що обробляє велику кількість файлів : файли Prolog , C , WAM та інші

• пряма генерація машинного коду в 15 разів швидше , ніж wamcc + gcc.

• більшість невикористовуваних вбудованих предикатів НЕ лінкуются (щоб зменшити розмір виконуваних файлів )

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

• ix86 / GNU / Linux

• ix86 / Win32 використовує Cygwin

• ix86 / Win32 використовує MinGW

• ix86 / Win32 використовує MSVC + +

• ix86 / SCO

• ix86 / Solaris

• ix86 / FreeBSD

• ix86 / OpenBSD

• ix86 / NetBSD

• ix86 / Darwin ( Mac OS X )

• x86_64 / GNU / Linux

• PowerPC / GNU / Linux

• PowerPC / Darwin ( Mac OS X )

• PowerPC / NetBSD

• sparc / SunOS ( 4.1.3 or higher )

• sparc / Solaris

• sparc / NetBSD

• alpha / GNU / Linux

• alpha / OSF1

• mips / irix

 

Visual Prolog

Реалізація мови програмування Prolog.

Visual Prolog - продукт датської фірми Prolog Development Center. Раніше поширювався під назвою Turbo Prolog ( Borland ) і PDC Prolog.

Prolog Development Center витратив більше трьох років на розробку системи Visual Prolog з поетапним бета- тестуванням , поставки комерційної версії якої почалися з лютого 1996 року. Visual Prolog є єдиною в світі Prolog - системою з 100% оболонкою виконаної в ідеології Visual -густо високорівневих компонент , які спрощують розробку програм для систем Windows (версія 5.x підтримувала і платформу OS2 ).

Visual Prolog автоматизує побудову складних процедур і звільняє програміста від виконання тривіальних операцій. За допомогою Visual Prolog проектування користувальницького інтерфейсу і пов'язаних з ним вікон , діалогів , меню , рядка повідомлень про станах і т.д. виробляється в графічному середовищі. З створеними об'єктами відразу ж можуть працювати різні Кодові Експерти ( Code Experts ), які використовуються для генерації базового і розширеного кодів на мові Prolog , необхідних для забезпечення їх функціонування.

Потужність мови Prolog в поєднанні з сучасною системою користувальницьких інтерфейсів ( GUI - Graphical User Interface ) робить простий і інтуїтивно зрозумілою розробку систем , заснованих на знаннях , систем підтримай прийняття рішень , які планують програм , розвинених систем управління базами даних і т.д.

Visual - середовище розробки

Середовище розробки додатків системи Visual Prolog включає текстовий редактор , різні редактори ресурсів , засоби розробки Help систем в гіпертекстовому представленні , систему відстеження змін , яка забезпечує перекомпіляцію і перегенерація тільки змінених ресурсів і модулів , ряд експертів Коду , що оптимізує компілятор і набір засобів перегляду різних типів інформації про проект. Повна інтеграція всіх засобів забезпечує підвищення швидкості розробки додатків. Отримані додатки є виконуваними. EXE програмами і не вимагають ніяких додаткових оточення і ліцензування.

Сумісні бібліотеки

Система програмування користувальницьких інтерфейсів (до 6.x VPI - Visual Programming Interface , починаючи з 7.x - об'єктно -орієнтована GUI) системи Visual Prolog є високорівневою абстракцією властивостей підтримуваних в базовій віконній системі Windows ( в 5.x - також OS2 )..

У систему включений також інтерфейс з базами даних типу SQL. Майже всі типи баз даних доступні з використанням Windows ODBC ( Open Database Connectivity ) інтерфейсу. Підтримуються також звернення до баз даних Oracle , а в платформі OS / 2 підтримано взаємодія з системою управління базами даних DB / 2

Середовище розробки Visual Prolog 4.0

 

1.4. Структура пролог-програми

Як реалізуючу систему Прологу будемо розглядати PDC Пролог. Його вибрано тому, що, на противагу більшості реалізацій Прологу, є компілятором.

Узагалі, програма PDC Прологу (надалі будемо писати просто Пролог) складається з 3-4 розділів.

Розділ clauses- головна частина програми Прологу. Тут записуються факти та правила, які будуть використані для задоволення мети програми.

Розділ predicates використовується для оголошення предикатів та доменів і опису типів їх аргументів. Коли ви оголошуєте предикат, то вказуєте Прологу, які домени аргументів належать останньому. У ньому повинні бути всі предикати, зазначені в розділі clauses.

При застосуванні вмонтованих предикатів, наприклад, таких, як write, makewindow, nl тощо, оголошувати їх нема потреби.

Опис предикату починається з імені, потім іде список типів аргументів (якщо вони існують), розділених комами та взятими в круглі дужки. Типи аргументу є або стандартними доменами, або ж доменами, які оголосили у розділі domains. Ім’я предикату повинно бути ідентифікатором.

Розділ domains використовується подібно до конструктора типів type у Паскалі. За допомогою цього розділу можна перейменувати /перевизначити/ стандартні домени й описати такі складних типів даних. Якщо у  програмі використовуються тільки стандартні домени, тоді в розділі domains узагалі нема потреби.

Розділом goal користуються для задавання вмонтованих (внутрішніх) цілей   коли  необхідно, щоб програма працювала незалежно від розвитку середовища Прологу. Іншими словами, якщо ви плануєте компілювати програму в таку, яка самостійно виконуватиметься, можете явно вказати мету виконання.

Розділ constants застосовують для об’явлення констант. Вживають синтаксис:

<Ідентифікатор> = <Макровизначення>.

При цьому вводяться такі обмеження:

  • в одному рядку повинна бути визначена лише одна константа;
  • заборонена рекурсія при визначенні константи;
  • в описі констант система не розпізнає великі та малі літери;
  • ідентифікатори констант є глобальними і можуть бути об’явлені тільки один раз.

Розділ database - це база даних. Іноді під час виконання програми необхідно змінити деякі факти, з якими працює програма. Вони знаходяться в динамічній або внутрішній базі даних. Факти, котрі розміщуються в динамічній, повинні бути описані в розділі database.

Пролог має декілька вмонтованих стандартних доменів, основні з яких наведено в додатку 1.

Можна скористатись стандартними доменами під час опису типів аргументів предикату. Їх не потрібно визначати в розділі domains.

Информация о работе Розв’язування математичнихзадач за допомогою мови логічного програмування - Prolog