Экспертная система : Животные. Turbo Prolog
Данная статья показывает базовые принципы работы с языком программирования Turbo Prolog. Программа, представленная для изучения, моделирует экспертную систему, основанную на базе знаний. Информационное наполнение базы знаний - сведения о животных, разделенные по ряду признаков: летает, умеет плавать, имеет окраску, приручено человеком.
Алгоритм экспертной системы был защищен и получил 100% оценку при сдаче.
При изучении алгоритма экспертной системы желательно владение языком программирования Turbo Prolog в следующем объеме: термы, работа с базой - знаний, добавление-удаление термов, работа с монитором, формирование базовых алгоритмов, понимание этапов выполнения программы, написанной на языке логики.
Стоит обратить внимание также на статьи Экспертная система : Выход из опасной пещеры. Turbo Prolog и Экспертная система : Виды боевых искусств. Turbo Prolog
Ханойские башни Вывод числовой последовательности по возрастанию Работа со списками. Вставка нового элемента в список Нахождение максимального и минимального чисел в последовательности Программа, печатающая сама себя Сказка про репку (Пролог-вариант) и т.д. Купить исходные коды программ:
Заказать исходники |
Экспертная система : Животные. Turbo Prolog
%trace /* Экспертная система: Животные Автор : Шаров Евгений Николаевич All Rights Reserved. Today and Forever... Animal's Life from Prolog-Mashine for You. "Логическое программирование" */ database yes(string) no(string) maybe(string) predicates repeat run animal(string) is(string) positive(string) negative(string) xpositive(string) xnegative(string) ask(string,char) remember(string,char) delete_all clauses repeat. repeat:-repeat. %----------------------------------------------------------------------------- % описываем животных animal("пингвин"):-positive("плавает"),positive("имеет окраску"), negative("приручено человеком"), negative("умеет летать"),is("птица"). animal("гусь"):-positive("плавает"),positive("имеет окраску"), positive("приручено человеком"), positive("умеет летать"),is("птица"). animal("дикая утка"):-positive("плавает"),positive("имеет окраску"), negative("приручено человеком"), positive("умеет летать"),is("птица"). animal("страус"):-negative("плавает"),positive("имеет окраску"), negative("приручено человеком"), negative("умеет летать"),is("птица"). animal("стриж"):-negative("плавает"),positive("имеет окраску"), negative("приручено человеком"), positive("умеет летать"),is("птица"). animal("соловей"):-negative("плавает"),positive("имеет окраску"), negative("приручено человеком"), positive("умеет летать"),is("птица"). animal("щегол"):-negative("плавает"),positive("имеет окраску"), negative("приручено человеком"), positive("умеет летать"),is("птица"). animal("волнистый попугайчик"):-negative("плавает"), positive("имеет окраску"), positive("приручено человеком"), positive("умеет летать"),is("птица"). animal("заяц"):-positive("плавает"),positive("имеет окраску"), negative("умеет летать"), positive("имеет большие когти и зубы"), negative("приручено человеком"), is("млекопитающее"). animal("крот"):-negative("умеет летать"),negative("имеет окраску"), positive("имеет большие когти и зубы"), negative("приручено человеком"), negative("плавает"),positive("слепое от рождения"), is("млекопитающее"). animal("зебра"):-negative("умеет летать"),positive("имеет окраску"), negative("имеет большие когти и зубы"), positive("имеет рога"), negative("приручено человеком"), positive("плавает"),is("млекопитающее"), is("парнокопытное"). animal("корова"):-negative("умеет летать"),positive("имеет окраску"), negative("имеет большие когти и зубы"), positive("имеет рога"), positive("приручено человеком"), positive("плавает"),is("млекопитающее"),is("парнокопытное"). animal("бобер"):-negative("умеет летать"),negative("имеет окраску"), positive("имеет большие когти и зубы"), negative("приручено человеком"), positive("плавает"),is("млекопитающее"). animal("волк"):-negative("умеет летать"),negative("имеет окраску"), positive("имеет большие когти и зубы"), negative("приручено человеком"), positive("плавает"),is("хищник"). animal("тигр"):-negative("умеет летать"),positive("имеет окраску"), positive("имеет большие когти и зубы"), negative("приручено человеком"), positive("плавает"),is("хищник"). animal("слон"):-negative("умеет летать"),negative("имеет окраску"), negative("имеет большие когти и зубы"), positive("приручено человеком"), positive("плавает"),is("млекопитающее"),is("парнокопытное"). animal("людоед"):-negative("умеет летать"),negative("имеет окраску"), negative("имеет большие когти и зубы"), negative("приручено человеком"), positive("плавает"),is("хищник"). animal("неизвестное создание с далекой планеты ..."). %----------------------------------------------------------------------------- is("птица"):-positive("откладывает яйца"),!; positive("имеет оперение"). is("хищник"):-positive("живородящее"),!; negative("поедает траву и кустарники"), positive("поедает других животных"). is("млекопитающее"):-positive("живородящее"),!; positive("поедает траву и кустарники"), negative("поедает других животных"). is("парнокопытное"):-positive("имеет копыта"). %----------------------------------------------------------------------------- % работа с динамической базой данных positive(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y'). negative(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n'). ask(X,R):-write(X," ? : "),readchar(Reply),write(Reply,"\n"), remember(X,Reply),R=Reply. % проверка присутствия фатов в динамической базе данных xpositive(X):-yes(X);maybe(X). xnegative(X):-no(X);maybe(X). % запоминаем факт в динамической базе данных remember(X,'y'):-asserta(yes(X)). remember(X,'n'):-assertz(no(X)). remember(X,'q'):-asserta(maybe(X)). % очищаем память от фактов динамической базы данных delete_all:-retract(yes(_)),delete_all. delete_all:-retract(no(_)),delete_all. delete_all:-retract(maybe(_)),delete_all. delete_all. %----------------------------------------------------------------------------- run:-delete_all, repeat, write("На вопросы отвечать (y-да, n-нет, q-не знаю).\n"), animal(X), write("Это животное : ",X,"\n"), write("Завершить работу программы (y/n): "),readchar(Z), write(Z),nl, Z='y'. goal makewindow(1,10,12," Экспертная система : Животные ",0,0,25,80), write(" Today and Forever..."),nl, write(" Animal's Life from Prolog-Mashine for You."),nl, write("--------------------------------------------"),nl, run.
PHP — это язык программирования, основанный на использовании скриптов. Данный язык широко применяется для создания различных front-end и back-end веб-приложений. Поддерживается по-умолчанию большинством хостеров, являясь одним из лидеров среди языков программирования, предназначенных для создания динамических интерактивных сайтов.
Интересные материалы на сайте:
Пример получения различной информации, полезной для программиста в построении движков сайта.
Описание метода, заставляющего операционную систему как можно скорее записать измененную информацию на жесткий диск.
Набор алгоритмов, позволяющих определить кодировку входной информации и преобразованию ее в читабельный вид.
Как с помощью простых алгоритмов определить цифры на картинке. Рассматривается пример с индексом цитирования от Яндекс.