Розв’язування математичнихзадач за допомогою мови логічного програмування - Prolog
Курсовая работа, 22 Декабря 2014, автор: пользователь скрыл имя
Краткое описание
Майже всі сучасні комп’ютери засновані на ранніх, розроблених у 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 застосовують для об’явлення констант. Вживають синтаксис:
<Ідентифікатор> = <Макровизначення>.
При цьому вводяться такі обмеження:
- в одному рядку повинна бути визначена лише одна константа;
- заборонена рекурсія при визначенні константи;
- в описі констант система не розпізнає великі та малі літери;
- ідентифікатори констант є глобальними і можуть бути об’явлені тільки один раз.