Розв’язування математичнихзадач за допомогою мови логічного програмування - 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 Кб (Скачать файл)

fib(16,x), write(‘…’), nl.

 

  1. Факторіал:

Приклад для версій Poplog 15.5 (Prolog)

Цей приклад складається з двох частин - першу частину коду слід зберегти у файлі fact.pl, розташованому в робочому каталозі Poplog, а другу - ввести вручну в інтерактивному режимі.

[-fact]. завантажує базу фактів і правил з цього файлу в поточну сесію Poplog (і виводить повідомлення fact reconsulted, щоб позначити успішність завантаження). Запит fact (16, X). Намагається знайти значення X, при якому цей предикат буде оцінений як істинний. Висновок, що потребується у прикладі, буде побічним ефектом оцінювання запиту, а основним результатом буде X = 20922789888000?. Це означає, що якщо ви не задоволені такою прив'язкою змінних, ви можете відмовитися від неї (ввівши;), і буде продовжений пошук кращої прив'язки.

% fact.pt

fact(X, F) :-

( X=0,  F-l;

Y is X-l, fact(Y,  Z),  F is X*Z),

write(X), write('! - '), write(F), nl.

% interactive

[-fact].

fact(16,X).

 

  1. Квадратне рівняння:

Приклад для версій Prolog 1.3.0

read_integer - не стандартний  предикат, а розширення GNU Prolog, тому цей приклад не буде працювати в інших реалізаціях.

q :- write('A = '),

read_integer(A),

(     A = 0, write('Not a quadratic equation');

write('B = '),

read_integer(8),

write('C = '),

read_integer(C),

D is B*B-4*A*C,

(     D = 0,write('x = '), X is -B/2/A, write(X);

D > 0, write('xl = '), XI is (-B+sqrt(D))/2/A, write(Xl), nl, write('x2=’) x2 is( -B-sqrt(D))/2/A, write(X1), nl, write(‘X2= ‘), X2 is B+sqrt(D))/2/A, write(X2);

R is –B/2/A, I is abs(sqrt(-D)/2/A),

write('xl = ('), write(R), write(', '), write(I), write(')'), nl,

write('xl = ('), write(R), write(', -'), write(I), write(')')

)

).

 

 

Висновки до ІІ розділу

Варто зазначити, що за замовчуванням Пролог працює з припущенням про замкнутість світу (теорії, предметної області). Це означає наявність заперечення деякої фрази, якщо вона не представлена у програмі. Тобто, на довільний запит по перевірці істинності фрази дається повідомлення Yes або No. Альтернативою замкнутості є припущення про відкритість світу, за яким у разі відсутності деякої фрази у програмі вважається, що дана фраза не істинна і не хибна, тобто недоказова.

Назвемо деякі області, де використовується мова логічного програмування Пролог:

• створення динамічних реляційних баз даних;

• переклади з однієї мови на іншу;

• реалізація експертних систем і оболонок експертних систем;

• управління виробничими процесами;

• доведення теорем і пакети штучного інтелекту;

• розробка швидких прототипів прикладних програм;

Загальні висновки

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

Основна мета створення логічного програмування - підвищення "інтелектуальності" комп'ютерів. Однак роль логічного програмування цим не обмежується: крім усього іншого, воно було взято за концептуальну основу відомого японського проекту ЕОМ 5-го покоління. Мета даного проекту - створення систем обробки інформації, що базуються на знаннях і можуть давати експертні консультації користувачам. Відомо, що для того, щоб скласти програму розв'язку деякої задачі мовою процедурного типу, необхідно розробити її алгоритм і у подальшому транслювати його в набір базових конструкцій (цикли, розгалуження, процедури-підпрограми та ін.) за допомогою досить об'ємного набору операторів обраної мови. Відповідно до цього, програміст повинен спочатку продумати весь план розв'язку задачі, а потім деталізувати його до найменших подробиць. Крім того, процедурні мови, у своїй більшості, дозволяють оперувати тільки тими типами даних, які можуть зберігатися у пам'яті ЕОМ, і тільки тими операціями, які вона у змозі виконувати. Як правило, ці типи даних елементарні, операції над ними досить примітивні, тому складання навіть простої програми на мовах низького рівня (до яких відносяться процедурні) перетворюється у довгий копіткий процес і призводить до великої кількості помилок, пошук і виправлення яких часто вимагає навіть більше часу, ніж безпосереднє написання програми.

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

Тому логічне програмування вимагає іншого стилю мислення, відмови від прийнятих програмістських стереотипів: замість того, щоб задати складну послідовність команд, які б вказували машині на виконання тих чи інших дій для розв'язку задачі, необхідно описати її зміст у термінах об'єктів і відношень між ними. Отже, замість алгоритму розв'язку задачі програміст складає її логічну специфікацію. Для певної мови логічного програмування специфікація задачі (описання проблеми) розглядається як фактична програма. Зауважимо, що таким підходом до розв'язування задач визначається суть декларативного програмування.

Найбільш повно і строго ідеї логічного програмування реалізувались у мові програмування Пролог. Про це говорить і назва мови - ПРОграмування на основі ЛОГіки. Розробка мови Пролог, первісний варіант якої було створено А.Кольмерое у 1972 р. у Марсельському університеті, зробила логічне програмування практичним інструментом, доступним широкому загалу програмістів. Потрібно зазначити, що Пролог не єдина мова програмування, на якій можна писати програми з використанням концепцій логічного програмування.5

Список використаних джерел

  1. Братко И. Программирование на языке Пролог для искусственного интеллекта: Пер.с англ. - М.: Мир, 1990
  2. Вивчення експертних систем у курсі основи інформатики і обчислювальної техніки: Методичні рекомендації/ Укл. Ю.С.Рамський, Н.Р.Балик.- 1С: УДПУ, 1995
  3. В. Е. Хачатрян. Логическое програмированние. Белгород, 2000
  4. Жалдак М. І., Рамський Ю.С. Інформатика: Навчальний посібник / За ред. М.І. Шкіля. - 1С: Вища школа, 1991.
  5. У.Клоксин, К. Меллиш Программирование на языке Пролог.
  6. О.М.Спірін. Початки Штучного інтелекту – Житомир: Видавництво ЖДУ, 2004. – 172 ст.
  7. С.П.Хабаров Использование Турбо-Пролога при проектировании баз даных и знаний. Санкт-Петербург,2000.
  8. Рамський Ю.С., Балик Н.Р. Методичні основи вивчення експертних систем у школі.- Київ: Логос, 1997.
  9. Рамський Ю.С. Логічні основи інформатики. - Київ, 2003
  10. Шрайнер П.А. Основы программирования на языке Пролог

Додатки

Додаток 1.

Домен

Опис

char

integer

real

символ, узятий у одинарні лапки, цілі від -32768 до 32767 числа, з необов’язковим знаком + або - , який стоїть перед деяким числом DDDDDDD, потім необов’язкова десяткова крапка (.), що стоїть перед наступним числом DDDDDDD і необов’якова експоненційна частина (е(+ ¸ -)DDD):<+: ->DDDDD<.>DDDDDDD<e<+ : ->DDD>

Приклади дійсних чисел:

42705 9999 86.74

9111.769483 521е238 67.85е+21

діапазон чисел від 1е-307 до 1е+308. При необхідності цілі числа автоматично перетворюються в дійсні.

string

довільна послідовність символів, які взяті у подвійні лапки.

symbol

Існує два формати символів:

1) послідовність букв, чисел  і підкреслень,що починаються  з великої букви;

2) послідовність символів, які взяті у подвійні лапки (випадок, коли символ не починається  з великої букви або ж коли  містяться проміжки).


 

1 Шрайнер П.А. Основы программирования на языке Пролог

 

2 Вивчення експертних систем у курсі основи інформатики і обчислювальної техніки: Методичні рекомендації/ Укл. Ю.С.Рамський, Н.Р.Балик.- 1С: УДПУ, 1995

 

3 Рамський Ю.С. Логічні основи інформатики. - Київ, 2003

 

4 С.П.Хабаров Использование Турбо-Пролога при проектировании баз даных и знаний. Санкт-Петербург,2000.

 

5 Братко И. Программирование на языке Пролог для искусственного интеллекта: Пер.с англ. - М.: Мир, 1990

 

 

 


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