courses:knowledge_base_and_expert_system:lab2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
courses:knowledge_base_and_expert_system:lab2 [2019/08/27 21:48]
andrey.suchkov [Порядок выполнения работы]
courses:knowledge_base_and_expert_system:lab2 [2019/09/19 21:20]
andrey.suchkov [Порядок выполнения работы]
Line 5: Line 5:
 Пролог (англ. Prolog) -- язык и система логического программирования,​ основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка. Пролог (англ. Prolog) -- язык и система логического программирования,​ основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
  
-Prolog является декларативным языком программирования:​ логика программы выражается в терминах отношений,​ представленных в виде фактов и правил. Для того чтобы инициировать вычисления,​ выполняется специальный запрос к базе знаний,​ на которые система логического программирования генерирует ответы ​«истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.+Prolog является декларативным языком программирования:​ логика программы выражается в терминах отношений,​ представленных в виде фактов и правил. Для того чтобы инициировать вычисления,​ выполняется специальный запрос к базе знаний,​ на которые система логического программирования генерирует ответы ​<<истина>> ​и <<ложь>>. Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.
  
-Иначе говоря,​ предикат можно определить как функцию,​ отображающую множество произвольной природы в множество булевых значений {ложно,​ истинно}. Задача прологпрограммы заключается в том, чтобы доказать,​ является ли заданное целевое утверждение следствием из имеющихся фактов и правил.+Иначе говоря,​ предикат можно определить как функцию,​ отображающую множество произвольной природы в множество булевых значений {ложно,​ истинно}. Задача пролог-программы заключается в том, чтобы доказать,​ является ли заданное целевое утверждение следствием из имеющихся фактов и правил.
  
 Язык программирования,​ реализованный в Visual (а ранее в Turbo) Prolog'​е отличается от классического пролога тем, что он основан на строгой статической типизации. В него также добавлены средства объектно-ориентированного программирования,​ анонимные предикаты (лямбда-предикаты),​ факты-переменные и разрушающее присваивание для них, аргументы-домены (''​Generic Interfaces and Classes''​) и параметрический полиморфизм,​ мониторы (''​Monitors with guards''​),​ императивные конструкции (''​foreach'',​ ''​if<​nowiki>​...</​nowiki>​then<​nowiki>​...</​nowiki>​else''​),​ коллекторы списков (''​[<​nowiki>​...</​nowiki>​||<​nowiki>​...</​nowiki>​]''​) и пр. Язык программирования,​ реализованный в Visual (а ранее в Turbo) Prolog'​е отличается от классического пролога тем, что он основан на строгой статической типизации. В него также добавлены средства объектно-ориентированного программирования,​ анонимные предикаты (лямбда-предикаты),​ факты-переменные и разрушающее присваивание для них, аргументы-домены (''​Generic Interfaces and Classes''​) и параметрический полиморфизм,​ мониторы (''​Monitors with guards''​),​ императивные конструкции (''​foreach'',​ ''​if<​nowiki>​...</​nowiki>​then<​nowiki>​...</​nowiki>​else''​),​ коллекторы списков (''​[<​nowiki>​...</​nowiki>​||<​nowiki>​...</​nowiki>​]''​) и пр.
 ===== Постановка задачи ===== ===== Постановка задачи =====
-Разработать программу на языке Visual Prolog, описывающие родственные связи между собаками,​ а также реализовать ​собственное ​генеалогическое древо.+Разработать программу на языке Visual Prolog, описывающие родственные связи между собаками,​ а также реализовать генеалогическое древо ​Вашей семьи.
 ===== Порядок выполнения работы ===== ===== Порядок выполнения работы =====
   - Загрузите систему программирования Visual Prolog.   - Загрузите систему программирования Visual Prolog.
-  - Установите в опциях среды шрифт с русской раскладкой **Options/​Global/​Environment**: ​\\ На карточке **Fonts** поменяйте шрифт окна редактора **Editor Windows** на **Courier** с раскладкой Кириллица. ​\\ Либо воспользуйтесь кнопкой **F** (//Font//) на панели инструментов.+  - Установите в опциях среды шрифт с русской раскладкой **Options/​Global/​Environment**:​ 
 +    - На карточке **Fonts** поменяйте шрифт окна редактора **Editor Windows** на **Courier** с раскладкой Кириллица. 
 +    - Либо воспользуйтесь кнопкой **F** (//Font//) на панели инструментов.
   - Выполните команду **Project/​New Project**. Определите в качестве //Project Name// имя //DOG// и укажите главный каталог (//Base Directory//​) в личной папке на диске. Нажмите кнопку **Create**. \\ В созданном проекте удалите модуль //​Vpitools.pro//​. Откройте модуль //​DOG.PRO//,​ удалите все содержимое и наберите текст программы:​ <code prolog>​domains   - Выполните команду **Project/​New Project**. Определите в качестве //Project Name// имя //DOG// и укажите главный каталог (//Base Directory//​) в личной папке на диске. Нажмите кнопку **Create**. \\ В созданном проекте удалите модуль //​Vpitools.pro//​. Откройте модуль //​DOG.PRO//,​ удалите все содержимое и наберите текст программы:​ <code prolog>​domains
   name=string   name=string
Line 43: Line 45:
     - Кому Balto является родителем?​     - Кому Balto является родителем?​
   - Постройте трассу выполнения программы для каждого запроса.   - Постройте трассу выполнения программы для каждого запроса.
-  - **//​Задание для самостоятельной работы.//​** Используя предикаты ''​parent(symbol,​symbol)'',​ ''​man(symbol)'',​ ''​woman(symbol)'',​ ''​married(symbol,​symbol)'',​ записать факты, описывающие Вашу семью. \\ Написать на языке Visual Prolog программу //FAMILY//, содержащую 8 правил вывода для любых родственных отношений в Вашей семье (например:​ мать, отец, сестра,​ брат, племянница,​ племянник,​ тетя, дядя, внучка,​ внук, бабушка,​ дедушка,​ двоюродная сестра,​ двоюродный брат и т.д.). \\ Отладить программу на 5-6 различных запросах.+  - **//​Задание для самостоятельной работы.//​** Используя предикаты ''​parent(symbol,​symbol)'',​ ''​man(symbol)'',​ ''​woman(symbol)'',​ ''​married(symbol,​symbol)'',​ записать факты, описывающие Вашу семью. \\ Написать на языке Visual Prolog программу //FAMILY//, содержащую ​не менее ​8 правил вывода для любых родственных отношений в Вашей семье (например:​ мать, отец, сестра,​ брат, племянница,​ племянник,​ тетя, дядя, внучка,​ внук, бабушка,​ дедушка,​ двоюродная сестра,​ двоюродный брат и т.д.). \\ Отладить программу на 5-6 различных запросах.
 ===== Варианты заданий ===== ===== Варианты заданий =====
 +[[.lab2:​lab2_vars]]
 ===== Содержание отчёта ===== ===== Содержание отчёта =====
   * Цель работы.   * Цель работы.
courses/knowledge_base_and_expert_system/lab2.txt · Last modified: 2022/12/10 09:08 (external edit)