Professional Documents
Culture Documents
Л р №3
Л р №3
ПРИРОДОКОРИСТУВАННЯ
Факультет інформаційних технологій
Кафедра комп’ютерних наук
Лабораторна робота №3
(4 години)
Київ - 2023
Мета роботи: дослідження механізму виконання програми і вивчення
операцій мови Prolog в середовищі Visual Prolog: зіставлення зі зразком;
зв'язування змінних; відкат і звільнення змінних; анонімні змінні; зовнішня і
внутрішня мета.
Завдання:
1. Ознайомитись з методичною розробкою до лабораторноъ роботи.
2. Ознайомитись з рекомендованною літературою.
3. Дослідити основні процеси виконання Пролог-програми в
середовищі Visual Prolog.
4. Виконати завдання до лабораторної роботи..
5. За результатами досліджень скласти звіт з обґрунтованими
висновками.
Форма звіту
1. Тема та мета.
2. Опис завдання згідно розроблюваної студентом системи.
Рекомендована література
1. Братко И. Алгоритмы искусственного интелекта на языке PROLOG. –
М.:2004. – 640 с.
2. Eduardo Costa. Visual Prolog 7.1 for Tyros. Перевод с английского.
http://download.pdc.dk/vip/71/Costas-Tyros_rus_MS.pdf, 122 c.
3. Thomas W. de Boer. A Beginners' Guide to Visual Prolog Version 7.2,
2009. http://download.pdc.dk/vip/72/books/deBoer/VisualPrologBeginners.pdf
2
Теоретичні відомості
trace
predicates
father(symbol,symbol)
clauses
father(tom,ann).
father(bob,tom).
father(bob,liz).
m(tom).
m(bob).
f(ann).
f(liz).
5
10. Скласти програму на Пролозі, що описує відомості про осіб
предикатами типу : person("Ivan", 24, 1.73, 'm').
- ім'я (тип string: "Ivan"),
- вік (тип integer: 24),
- зріст (тип real: 1.73).
- стать (тип char, 'm' або 'f').
10.2. імена й стать людей, які мають зріст більше 1.50 (значення
параметрів рекомендується задати так, щоб вивелося кілька записів):
person(X, _, R, P), R>1.50, write(X, " ",P), nl, fail.
6
Контрольні запитання
7
Завдання для самостійної роботи
Завдання 1
Запишіть наступні факти й правила у формі, яка прийнята в мові Prolog
Завдання 2
Побудуйте по тому ж принципу власну базу знань, яка містить факти і
правила типу якщо-то про яких-небудь людей або об’єкти і зробіть із неї
кілька логічних висновків.
Контрольні питання
1. Яку інформацію містить розділ clauses?
2. Як записати в Visual Prolog твердження "Маша вивчає математику"?
3. Як записуються змінні в Visual Prolog?
4. Як перевірити правильність твердження?
5. Як реалізується дедукція в Visual Prolog?
8
Додаток А, Приклад виконання завдання
Текст програми
________________________________________________________________________________
main.pro
/*****************************************************************************
*****************************************************************************
*/
implement main
open core
constants
className = "main".
classVersion = "$JustDate: $$Revision: $".
clauses
classInfo(className, classVersion).
%domains
%gender = female(); male().
class predicates
reconsult : (string FileName).
clauses
reconsult(FileName) :-
retractFactDB( familyDB),
file::consult(FileName, familyDB).
clauses
run():-
console::init(),
console::clearOutput(),
console::setTextAttribute(3,4),
console::setConsoleTitle("Институт компьютерных технологий"),
console::setTextAttribute(11),
9
stdio::write("Лабораторная работа №4\nФакультет компьютерных систем\nГруппа 205\n
Семко \n"),
stdio::nl,
console::setTextAttribute(13),
stdIO::write("Исходные данные загружены\n"),
reconsult("art.txt"),
stdIO::write("\nВас интересует в списке мужчина или женщина : "),
Y=stdio::readLine(),
личность(X, _, _, Y),
stdIO::writef("\nИмя % - %\n", X, Y),
fail.
run():-
stdIO::write("\nВас интересуют люди из списка с ростом выше (метры) : "),
X=stdio::read(),
личность(Z, _, T, _),
T > X,
stdIO::writef("\n % имеет рост % метров \n", Z, T),
fail.
run():-
stdIO::write("\nВас интересуют люди из списка моложе (полных лет) : "),
X = stdio::read(),
_ = stdio::readLine(),
stdIO::write("\nВас интересует в списке мужчина или женщина : "),
Y=stdio::readLine(),
личность(Z, U, T, Y),
X > U,
stdIO::writef("\n % имеет рост % метров, возраст % лет \n", Z, T, U),
stdio::nl,
fail.
run():-
stdIO::write("Завершение диалога\n"),
stdio::write("Для продолжения нажмите клавишу ENTER ---> "),
_ = stdio::readLine().
end implement main
goal
mainExe::run(main::run).
________________________________________________________________________________
10
main.ph
/*****************************************************************************
*****************************************************************************
*/
#requires @"main.pack"
% publicly used packages
#include @"pfc\core.ph"
% exported interfaces
% exported classes
#include @"main.cl"
________________________________________________________________________________
main.pack
/*****************************************************************************
*****************************************************************************
*/
#include @"main.ph"
% private interfaces
% private classes
11
% implementations
#include @"main.pro"
________________________________________________________________________________
main.cl
/*****************************************************************************
*****************************************************************************
*/
class main
open core
predicates
classInfo : core::classInfo.
% @short Class information predicate.
% @detail This predicate represents information predicate of this class.
% @end
predicates
run : core::runnable.
________________________________________________________________________________
Laba_4.manifest
12
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
________________________________________________________________________________
art.txt
clauses
личность("Алексей",19,1.92,"мужчина").
личность("Алиса",22,1.74,"женщина").
личность("Ника",20,1.62,"женщина").
личность("Александр",25,1.82,"мужчина").
личность("Лана",16,1.61,"женщина").
личность("Владимир",20,1.74,"мужчина").
личность("Кирилл",20,1.72,"мужчина").
________________________________________________________________________________
13
Результат роботи програми
14
15