Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

II. Опишіть генеалогічне дерево Вашої сім’ї.

Лабораторна робота №1

Знайомство з Visual Prolog. Визначення відношень в програмі.

Основіні поняття: логічне програмування, предикати.

Методичні вказівки

В даний час мова Visual Prolog використовується для створення систем управління ресурсами великих комплексів (зокрема, аеропортів), обробки текстів природною мовою, експертних систем, систем медичної діагностики і багато чого іншого.

ПРОЛОГ Programming-(програмування) та Логіка - (в логіці), створений у 1973 р у Франції, Г.Марселем, А.Кальмерое. Найбільш розвиток отримав в Японії. Японці пристосували мову при використанні машин 5-го покоління в галузі штучного інтелекту.

Центральним поняттям є ставлення, яке тотожне поняттю предикат. Програма є сукупністю визначень, відносин між об'єктами в термінах умов або обмежень і метою (запит).

Процес виконання програми зводиться до доказу істинності цих відносин. Мова пристосований для проведення символічних обчислень. Пролог призначений для програмування задач штучного інтелекту (створення експертних систем, створення динамічних баз даних в бізнесі, у бухобліку, діагностичних системах, системах баз знань).

Пролог відноситься до декларованим мовам. Основою мови є об'єкти, логічні предикати і правила.

Предикат (від латинського predicatum - сказане (властивість окремого предмета), відносини.

Аристотель під предикатом розумів один з двох термінів суджень, а саме той, в якому йдеться про предмет мови. Предикат характеризує приналежність предмету деякої ознаки.

Ключові слова в Visual Prolog:

implement та end implement – єдині ключові слова, які використовуються парно

Visual Prolog розглядає код, який знаходиться між ними, як код, який належить одному класу. За ключовим словом implement обов’язково має слідувати ім’я класу.

оpen -ключове слово використовується для розширення області видимості класу. Воно повинно бути поміщено спочатку коду класу, відразу після ключового слова здійснити (з ім'ям класу і, можливо ім'ям інтерфейсу).

Constants - ключове слово, що використовується для позначення секції коду, що визначає неодноразово використовувані значення, застосовувані в коді. Наприклад, якщо строковий літерал "PDC Prolog" передбачається використовувати в різних місцях коду, тоді можна один раз визначити невелике слово для використання в таких місцях:

constants

pdc="PDC Prolog".

Визначення константи завершується крапкою (.). На відміну від змінних Прологу константи повинні починатися з малої літери (нижній регістр).

domains — объявление доменов (типов данных);

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

class predicates - секція містить оголошення предикатів, які визначаються в тексті програми в розділі clauses. І знову, оголошення предиката - це ім'я, яке присвоюється предикату, і набір аргументів, кожен з яких повинен відповідати або стандартному (зумовленої), або оголошеному домену.

сlauses Серед усіх розділів, існуючих в тексті програм на Visual Prolog, це єдиний розділ, який близько збігається з традиційними програмами на Пролозі. Він містить конкретні визначення оголошених у розділі class predicates предикатів, причому синтаксично їм відповідні.

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

Cтворення проекту «Родинні відношення»

File > New In New Package. З’явиться вікно Create Project Item.

Зліва вибираємо елемент Text File, в полі Name пишимо назву family, а в полі Parent Directory впишем слово Exe

В файлі family.txt в розділі сlauses описати родинні зв’язки в Вашій сім’ї - правила.


implement main
open core, console


class facts - relatives
parent: (string Батько, string Дитина).
spouse: (string Чоловік, string Жінка).
male: (string).
female: (string).

class predicates
father: (string Батько, string Дитина) nondeterm anyflow.
mather: (string Мати, string Дитина) nondeterm (o,o).
clauses
father(X, Y):-
parent(X, Y),
male(X).

mather(X, Y):-
parent(X, Y),
female(X).

run():-
init(),
file::consult("family.txt", relatives),
father(X, Y),
write("батько - ", X, ", дитина- ", Y), nl,
fail;
mather(X, Y),
write("мати - ", X, ", дитина - ", Y), nl,
fail;
if father("Alexander", "Peter") then
write("\nAlexander is father of Peter")
else
write("\nAlexander is not father of Peter")
end if,
_ = readLine().

end implement main

goal
mainExe::run(main::run).

Запустіть програму по команді Build | Run in the Window:

I. Створіть та продемонструйте роботу відповідей на наступні питання:

1) Часткове просте питання (чи являється Олександр батьком Петра?):

Батько ("Олександр", "Петро").

2) Загальне просте питання (знайти всіх чоловіків.

Чоловік(Ч).

3) Складене загальне питання (знайти синів Марії):

Матір(“Марія”, S), чоловік(S).

4) Просте загальне питання з відбором інформації за допомогою анонімної змінної (хто з жінок заміжня?)

чоловік(_, W)

II. Опишіть генеалогічне дерево Вашої сім’ї.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...