Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 1 Цель работы- Ознакомление со средой TurboProlog на примере простейшей программы Описан

Работа добавлена на сайт samzan.net: 2016-06-20

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

Министерство образования Российской Федерации

Пензенский государственный университет

Факультет заочного обучения

Кафедра «информационно- вычислительной системы»

Дисциплина «Системы искусственного интеллекта»

Отчет о лабораторных работах №1 и №2

Представление знаний и структура программы на языке Турбо Пролог.

Выполнил: ст. гр. 11ЗВЭ31

_______________Емашев В.Н.

Принял: к.т.н., доцент

______________Долгова И.А.

Г.Пенза 2014г.

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

Цель работы: Ознакомление со средой TurboProlog на примере простейшей программы

Описание программы:

Турбо Пролог является языком программирования ЭВМ пятого поколения, выводящим компьютерное программирование в новое измерение. Естественный логический подход Пролога к программированию позволяет начинающим и профессиональным программистам за удивительно короткое время создавать мощнейшие приложения. Теперь, благодаря Турбо Прологу, вы сможете разрабатывать такие программные продукты, как базы знаний, экспертные системы , пользовательские интерфейсы на естественном языке и системы искусственного интеллекта

Рассмотрим следующую простейшую программу Турбо Пролога. Вы будете использовать ее при изучении в общих чертах того, как создавать, запускать и редактировать программы на Турбо Прологе.

/*Ваша первая программа*/

 Goal

 Makewindow(1,7,7,”Моя первая программа”,4,56,14,22),nl,

 Write(“Пожалуйста, введите свое\n имя, а затем нажмите\n Ввод.”),

 Cursor(6,4), readln(Name),nl,

 Write(“Добро пожаловать в\n Турбо Пролог,\n”, Name),nl.

Первое, что вы должны сделать - это ввести свою программу в редактор, поэтому необходимо активизировать окно редактирования. Нажмем Alt-E. По умолчанию, Турбо Пролог всегда запускает редактор с пустым файлом с

именем WORK.PRO. Заметим, что окно редактирования выделено двойной

рамкой, а нижняя строка соответствует "горячим" клавишам редактора. Как только мы убедитесь, что текст программы введен правильно, нажмем Alt-R. Если вы ввели программу правильно, она откомпилируется, затем запустится.

Трассирование- Это встроенное в Турбо Пролог диагностическое средство, позволяющее вам просматривать программу "по шагам". Используя трассирование вы "идете" по программе в соответствии с логикой работы Турбо Пролога, т. е. так, как он выполняет программу: вы можете непосредственно увидеть, что делает система, пытаясь разрешить задачу.

Каждый (трассированный шаг отображается в окне трассировки; для выполнения каждого следующего шага вы нажимаете F10. Для трассирования программы вы должны в начало своей программы вставить директиву компилятора "trace". Теперь попытайтесь выполнить трассировку этой программы. Для ее запуска нажмите Alt-R.

Текст программы приведен на рис 1.

Рис. 1 текст программы

Вывод: Ознакомились со средой Турбо Пролога, выполнили трассирование простой программы.

Лабораторная работа № 2

  1. Формулировка задачи:

Лиса живет в лесу, волк тоже живет в лесу. Заяц живет там же где лиса и волк. Лиса и волк - хищники. Заяц травоядный. Заяц живет там же где и волк. Лиса ест то же что и волк.

Определить:

  1. Где живет заяц?

  1. Что едят волк и лиса?

2 Техническое задание

  1. Требование к программе

Входные данные отсутствуют

  1. Порядок контроля и приемки

Для  контроля правильности работы программы    необходимо ввести запрос в диалоговое окно Турбо Пролога, предварительно аналитическим образом получив результат. Если результаты совпадут, то это означает, что программа работает верно.

3 Описание программы

3.1 Общие сведения

Программа Lab2 разработана в среде ТУРБО ПРОЛОГ, ее текст содержится в каталоге D:\Лабораторки ИИС\laba2.pro и приведен в приложении А.

4.2 Функциональное назначение

Разработанная   программа  предназначена для  получения  ответов  на запросы пользователя, запросы могут быть следующими:

1.Где живет заяц?

       2. Что едят волк и лиса?

4.3 Описание логической структуры

Программа на языке Турбо Пролог может состоять из следующих

секций:

domains, predicates, clauses, goal, constans.

Программа lab2.pro написана с использованием следующих секций: В секции domains описаны следующие стандартные домены(типы): animal,  les   типа   string,   для   объявления   имени   человека   и   предмета соответственно, так же volk, lisa, zayac типа integer для определения возраста.

В секции predicates объявляются предикаты, которые будут использоваться в секции clauses, задается имя предиката и аргументы предиката:

            life(lisa,les)

            est(lisazayac)

hishnic(volk,lisa)

Секция Clauses содержит факты и правила программы, с которыми будет работать Турбо Пролог, пытаясь разрешить цель программы.

Life (lisa, les)- Лиса живет в лесу.

Life (volk, les)- Волк живет в лесу.

Hishnik (volk)- Волк хищник.

Travoyadniy (zayac)- заяц травоядный.

Est (lisa, zayac)- Лиса ест зайца.

5 Программа и методика испытаний

Для проверки правильности работы программы в диалоговое окно Турбо Пролога нужно ввести 2 запроса, простой и составной, предварительно аналитическим способом получив результат.

  1.  Если на первый вопрос- «Где живет заяц?» программа выдаст ответ- «les», то программа работает правильно.
  2.  Если на вопрос, «что едят волки и лиса?» программа выдаст ответ «zayac», то программа работает правильно.

Результаты работы приведены на рисунке Б1.

Таким образом, можно сделать вывод, что программа работает правильно.


6. ответы на контрольные вопросы.

7.1 Контрольные вопросы по второму разделу

1. Какие     средства     используются     в    языке    Турбо    Пролог    для представления знаний?

Для  представления знаний  в языке Турбо Пролог используются факты и

правила. Пролог базируется на формальной системе, называемой исчислением

предикатов,   которое   является   наиболее   распространенной   системой   для

представления   знаний   в   формальном   виде.   Для   преобразования  фразы

естественного языка в утверждение исчисления предикатов вы прежде всего

исключаете    из    предложения    все    несущественные    слова.    Затем    вы

преобразуете это предложение, ставя на первое моего имя отношения, а после

нею (в скобках) - объекты, связанные этим отношением. Порядок следования  имен объектов может быть произвольным, но выбрав в начале определенный порядок, необходимо следовать ему далее. Как предложения и факты должны завершаться точкой, факты помимо связей могут выражать и свойства.

2.  Какая разница между внешней и внутренней целями?                                   

Секция goal - это та,  в  которой  вы  задаете  внутреннюю цель своей программы,  что  позволяет программе  запускаться  независимо от среды разработки. До сих пор вы вводили цели в ответ на приглашение в диалоговом окне "Goal:". Такие цели называются внешними, так как вы должны вводить их во время  работы программы. Использование внешних целей весьма удобно в случаях, когда вы хотите запускать свои программы из среды разработки Турбо Пролога. Однако, если вы планируете получить автономную исполняемую программу, то при ее выполнении вы, очевидно, не увидите приглашения "Goal:" и вам необходимо включить секцию Goal в эту программу. Цели, заданные в этой секции, называются внутренними целями,

так как они являются частью исходного текста вашей программы и в ней же компилируются.

  1.  Каким образом осуществляется сопоставление в языке Турбо Пролог?

В    Прологе    имеется    несколько    возможностей    сопоставления   одной структуры    с    другой.    Ясно,    что    идентичные    структуры    сопоставимы

(сравнимы) друг с другом:

      est (lisa, zayac) сопоставимо с est (lisa, Н)

Однако сопоставление (сравнение) обычно использует одну или несколько свободных переменных. Например, если Н свободна, то est(lisa,H) сопоставимо с est( lisa, zayac) и Н принимает значение (связывается с)

Если же Н уже связана, то она действует так же, как и обычная константа.

Таким образом, если Н связана со значением «zayac», то est (lisa, H) сопоставимо с est(lisa,volk). Сопоставление не выполняется, так как, если переменные становятся связанной, то ее значения не может изменяться.

Как может переменная оказаться уже связанно при попытке Пролога сопоставления ее с чем либо? Переменные не могут хранить значения, так как они становятся связанными только на промежуток времени, необходимый для  

отыскания (или попытки отыскания) одного решения, одной цели. Поэтому, имеется   только   одна   возможность  того,   что   переменная   может  оказаться связанной перед попыткой сопоставления - если цель требует больше одного шага, и переменная стала связанной на предыдущем шаге. Например,

est (lisa, H)  and   like  (Н,  volk)  является   корректной   целью.  Она означает:

"Найти того, кого ест лиса и того, кого ест волк". Здесь при достижении

подцели est (H, volk)   переменная Н уже будет связана. Если для подцели est

(Н, volk) нет решений, - Пролог "освободит" переменную Н и вернется назад,

пытаясь найти новое решение для est(lisa,H), а затем проверит, будет ли

     доказываться цель est(H, volk) с новым значением Н.

Две свободные переменные могут сопоставляться друг с другом. Например, est(lisa, Н) сопоставляется с est(lisa, О), связывая при этом переменные Н и  О между собой.  С  момента  "связывания"  Н и О трактуются как одна переменная   и   любое   изменение   значения   одной   из   них   приводит   к немедленному соответствующему изменению другой. В случае подобного "связывания"   между   собой   нескольких   свободных   переменных   -   они называются связанными свободными переменными.

  1.  Как осуществляется "связывание" и "освобождение" переменных?

До тех пор, пока переменная не получила какого-либо значения, она называется "свободной". Когда же переменная примет значение - она становится "связанной". Однако она остается связанной только до определенною  момента,  после которого переменная  "освобождается". Это очень важный момент: вы не можете хранить, информацию, задавая значения переменным. Переменные служат частью процесса "сопоставления образцов", а не "хранилищем" какого либо типа.

  1.  Что такое шаблон потока параметров предиката?

В Прологе связывание переменных (со значениями) производится двумя

способами; на входе и выходе. Направление, в котором передаются значения.

указывается в "шаблоне потока параметров". Когда переменная передается в

предложение - она считается входным параметром и обозначается i      когда

же  переменная   возвращается   из   предложения   -   она  является   выходным параметром и обозначается (о).

6.2 Контрольные вопросы по третьему разделу

  1. Какие секции содержит программа на языке ТУРБО ПРОЛОГ и какого их значение?

Обычно, программа на языке Турбо Пролог состоит из трех или четырех основных программных секций. К ним относятся: секции “clauses” (предложений), “predicates”, “domains” и, часто, секция “goal” (используется при создании автономных используемых программ).

Секция доменов служит для объявления всех используемых вами доменов, не являющихся стандартными доменами Турбо Пролога.

Секция предукаты – это та, в которой вы обьявляете структуру своих предикатов. (Вам не нужно декларировать предикаты, встроенные в Турбо Пролог,) В этой секции программы просто перечисляются все предметы указания типов их аргументов.

Секция clauses - это ядро программы, содержащее факты и правила, с которыми будет работать Турбо Пролог, пытаясь разрешить цель программы.

Секция goal - это та, в которой вы сдаете внутреннюю цель своей программы, что позволяет программе запускаться независимо от среды разработки.

  1.  Какие директивы существуют в языке Турбо Пролог?

Язык Турбо Пролог поддерживает несколько директив компилятора, которые вы можете добавлять в свою программу для сообщения специальных

сведений по трактовке вашей программы при ее компиляции: include, trace, shorttrace.

З.Какие     стандартные  типы    данных допускаются    в языке Турбо Пролог?

Стандартные типы данных: char, integer, real, string, symbol.

Char - символ, заключенный между двумя одиночными кавычками,

String -  строка,  состоящая  из  любой  последовательности  символов.

записанных между парой удвоенных кавычек, Integer - целое число от -32,768 до 32,767,

Real - числа с необязательным знаком (+ или -), за которым следу* несколько цифр, затем - необязательная десятичная точка (.) и еще цифры . за которыми - необязательная экспоненциальная часть е+-,

Simbol – индентификаторы, допускаются 2 формата:

  1. Последовательность букв, цифр и символов подчеркивания, причем первый символ должен быть строчной буквой.
  2. Последовательность символов, заключенных в двойные кавычки (это делается для случаев, когда индентификаторы включают буквы русского алфавита, пробелы или не начинается со строчной буквы).

4. Каким образом объявляются константы в языке Турбо Пролог? Секция   для   объявления   констант обозначается ключевым словом constants, за которым следуют сами  объявления, использующие следующий синтаксис:

<id> = <макроописание>,

где <Id> - имя символической константы, а <макроописание> - это то, что вы присваиваете этой константе.

  1.  Что такое составной домен?

Основная форма объявления доменов имеет следующий вид: domains

аргумент типа1,..., аргумент типа М = Стандартный домен> аргумент 1,..., аргумент N = <составной домен 1> <составной домен 2> <составной домен N>.

Заключение

В соответствии с результатами работы программы можно сделать вывод что  разработанная   программа  laba2.рrо  решает заложенные  в  нее  ноли, а требования технического задания выполнены в полном объеме.

ТЕКСТ ПРОГРАММЫ

Приложение А

(обязательное)

domains

animal = string.

sreda = string.

volk, lisa, zayac = integer.

predicates

life(lisa,les).

life (volk,les).

hishnik (volk).

hishnik (lisa).

travoyadny (zayac).

est (lisa,zayac).

clauses

life (lisa,les).

life (volk,les).

life (zayac, Y)  if life (volk, Y).

hishnik (volk).

travoyadny (zayac).

est (lisa, zayac).

est (volk, X) if est (lisa, X).

РЕЗУЛЬТАТ ИСПЫТАНИЙ

Приложение Б.

(Обязательное)

Рисунок Б.1 -  Результат работы программы




1. .измерения Цена руб
2. Приватизация в РФ
3. Реформирование трудовых отношений и социальное партнерство
4. ТЕМА- Какова классификация систем эконометрических уравнений ВВЕДЕНИЕ Объектом статистического
5. Общие и различные качества в работе Уполномоченного по правам человека в Российской Федерации и в Украине
6. НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ А
7. Проектирование главной схемы электрических соединений подстанции
8.  STEP PEST ~ анализ STEPанализ ~ анализ социальных социокультурных технологических экономических и политич
9. тематичних знань та міркувань- теоретичні та практичні аспекти 01
10. Проблемы исчисления единого налога по специальным налоговым режимам и пути их решения
11. зелеными просторами Калифорнии
12. Стимулирование экономического развития региона.html
13. тема Нервова система відіграє найважливішу роль у регуляції функцій організму.html
14. Тема- Програмування СОМ порту в MS DOS Мета- Навчитися основним засадам програмування периферійних пристрої
15. КОНСПЕКТ ЛЕКЦІЙ З ДИСЦИПЛІНИ ldquo;НАЦІОНАЛЬНА ЕКОНОМІКАrdquo; для спеціальності 6
16. вариант. Раздел науки о языке который изучает словосочетание и предложение называется а лексика;.html
17. Государственная защита участников уголовного процесса на стадиях предварительного расследования
18. Вклад специалистов АтлантНИРО и Запрыбпромразведки в изучение рельефа дна и донных осадков мирового океан
19. это центр работы фирмы ее сердце
20. Особенности формирования и управления портфелем ценных бумаг