This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
courses:knowledge_base_and_expert_system:lab1 [2019/08/27 17:28] andrey.suchkov [Порядок выполнения работы] |
courses:knowledge_base_and_expert_system:lab1 [2022/12/10 09:08] (current) |
||
---|---|---|---|
Line 7: | Line 7: | ||
Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных с ним окон, диалогов, меню, строки уведомлений о состояниях и т. д. производится в графической среде. С созданными объектами могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования. | Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных с ним окон, диалогов, меню, строки уведомлений о состояниях и т. д. производится в графической среде. С созданными объектами могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования. | ||
- | Мощность языка Prolog в сочетании с системой пользовательских интерфейсов упрощает разработку систем, основанных на знаниях, систем поддержки принятия решений, планирующих программ, развитых систем управления базами данных и т. д. | + | Среда разработки приложений системы Visual Prolog включает текстовый редактор, различные редакторы ресурсов, средства разработки справочных систем в гипертекстовом представлении, систему отслеживания изменений, которая обеспечивает перекомпиляцию и перегенерацию только измененных ресурсов и модулей, ряд экспертов Кода, оптимизирующий компилятор, набор средств просмотра различных типов информации о проекте и отладчик. Полная интеграция всех средств обеспечивает повышение скорости разработки приложений. Полученные приложения являются исполняемыми .EXE программами. В коммерческой версии Visual Prolog 7.x возможно создание .DLL-файлов, в персональной версии такая возможность существовала вплоть до версии 5.x. Первая из возможностей, которые предоставляет IDE, заключается в управлении проектами. Поскольку среда рассчитана на создание достаточно масштабных приложений, то и средства управления файлами в рамках проекта приложения в ней представлены в достаточном для этого объёме. В среде есть встроенный редактор диалогов, который позволит организовать взаимодействие пользователя с программой при помощи графического интерфейса. |
- | + | ||
- | Язык программирования, реализованный в Visual (а ранее в Turbo) Prolog'е отличается от классического пролога тем, что он основан на строгой статической типизации. В него также добавлены средства объектно-ориентированного программирования, анонимные предикаты (лямбда-предикаты), факты-переменные и разрушающее присваивание для них, аргументы-домены (Generic Interfaces and Classes) и параметрический полиморфизм, мониторы (Monitors with guards), императивные конструкции (''foreach'', ''if...then...else''), коллекторы списков (''[...||...]'') и пр. | + | |
===== Постановка задачи ===== | ===== Постановка задачи ===== | ||
Ознакомится с системой программирования Visual Prolog создав простейшую Пролог-программу с графическим интерфейсом. | Ознакомится с системой программирования Visual Prolog создав простейшую Пролог-программу с графическим интерфейсом. | ||
Line 24: | Line 22: | ||
- Для добавления окна к проекту воспользуйтесь кнопками **Window**, затем **New** в окне проекта. Появится окно **Window Attributes**. Задайте имя окна **My window** и нажмите кнопку **ОК**. Появятся заготовка окна и редактор окон (после нажатия кнопки **Code Expert**). Появившиеся панели инструментов предназначены для создания рабочих элементов окна. В окне редактора выберите в выпадающем списке **Module** модуль, соответствующий имени окна, затем нажмите кнопку **Default Code**. Нажмите на кнопку **Edit Code** для изучения кода. | - Для добавления окна к проекту воспользуйтесь кнопками **Window**, затем **New** в окне проекта. Появится окно **Window Attributes**. Задайте имя окна **My window** и нажмите кнопку **ОК**. Появятся заготовка окна и редактор окон (после нажатия кнопки **Code Expert**). Появившиеся панели инструментов предназначены для создания рабочих элементов окна. В окне редактора выберите в выпадающем списке **Module** модуль, соответствующий имени окна, затем нажмите кнопку **Default Code**. Нажмите на кнопку **Edit Code** для изучения кода. | ||
- Теперь, когда окно создано, его нужно активизировать. Добавим команду **my window** в меню **Тest** нашего проекта. Для этого нужно воспользоваться кнопкой **Submenu** в окне **Task Menu** (см. выше). Активизируйте эксперта для нового пункта меню с помощью кнопок **Window** (**Task Window**) и **Code Expert**. Придайте окну **Dialog and Window Expert** вид, показанный на рисунке. {{ :courses:knowledge_base_and_expert_system:lab1_figure11.png?nolink&300 |}} Нажмите кнопки **Add Clause** и затем **Edit Clause**. \\ Появится окно редактора кодов. Просмотрите только что __сгенерированный код__. Найдите в тексте кода соответствующий знак **{!}** -- знак отсечения. Поставьте перед ним курсор, вызовите контекстное меню, в котором выберите команду **Insert/Predicate Call/Window, Dialog or Toolbar**. В появившемся окне **Insert Call of …** выберите позицию списка **User Defined Window** (в выпадающем списке будет только одна позиция -- имя нашего окна **My window**) нажмите кнопку **ОК**. \\ Затем запустите приложение. Убедитесь в появлении новой команды меню, убедитесь, что новая команда работает. {{ :courses:knowledge_base_and_expert_system:lab1_figure12.png?nolink&300 |}} | - Теперь, когда окно создано, его нужно активизировать. Добавим команду **my window** в меню **Тest** нашего проекта. Для этого нужно воспользоваться кнопкой **Submenu** в окне **Task Menu** (см. выше). Активизируйте эксперта для нового пункта меню с помощью кнопок **Window** (**Task Window**) и **Code Expert**. Придайте окну **Dialog and Window Expert** вид, показанный на рисунке. {{ :courses:knowledge_base_and_expert_system:lab1_figure11.png?nolink&300 |}} Нажмите кнопки **Add Clause** и затем **Edit Clause**. \\ Появится окно редактора кодов. Просмотрите только что __сгенерированный код__. Найдите в тексте кода соответствующий знак **{!}** -- знак отсечения. Поставьте перед ним курсор, вызовите контекстное меню, в котором выберите команду **Insert/Predicate Call/Window, Dialog or Toolbar**. В появившемся окне **Insert Call of …** выберите позицию списка **User Defined Window** (в выпадающем списке будет только одна позиция -- имя нашего окна **My window**) нажмите кнопку **ОК**. \\ Затем запустите приложение. Убедитесь в появлении новой команды меню, убедитесь, что новая команда работает. {{ :courses:knowledge_base_and_expert_system:lab1_figure12.png?nolink&300 |}} | ||
- | - Добавим в новое окно какой-либо элемент графики, например, диагонали окна. Для этого предварительно нужно нажать кнопку **Window** и щелкнуть строку **My window**. Далее нужно вызвать окно редактора кода для окна **my window**. Воспользуемся кнопками **Code Expert** и **Edit Code** {в окне проекта}. Добавим в конец Пролог-программы следующий код: <code>win_my_window_eh(_Win,e_Update(_),0):-!, | + | - Добавим в новое окно какой-либо элемент графики, например, диагонали окна. Для этого предварительно нужно нажать кнопку **Window** и щелкнуть строку **My window**. Далее нужно вызвать окно редактора кода для окна **my window**. Воспользуемся кнопками **Code Expert** и **Edit Code** {в окне проекта}. Добавим в конец Пролог-программы следующий код: <code prolog>win_my_window_eh(_Win,e_Update(_),0):-!, |
RCT=win_GetClientRect(_Win), | RCT=win_GetClientRect(_Win), | ||
RCT=rct(_,_,R,B), | RCT=rct(_,_,R,B), | ||
Line 30: | Line 28: | ||
draw_Line(_Win,pnt(0,B),pnt(R,0)),!. | draw_Line(_Win,pnt(0,B),pnt(R,0)),!. | ||
</code> Запустите проект, убедитесь, что окно отображается в виде, показанном на рисунке. {{ :courses:knowledge_base_and_expert_system:lab1_figure13.png?nolink&300 |}} | </code> Запустите проект, убедитесь, что окно отображается в виде, показанном на рисунке. {{ :courses:knowledge_base_and_expert_system:lab1_figure13.png?nolink&300 |}} | ||
- | - Добавим в окно **my window** какой-либо управляющий элемент. Для этого выделите в кодах этого окна раздел диагоналей как комментарий -- ''/*<nowiki>...,</nowiki>*/''. Вернитесь к редактированию окна. Для установки в окно рабочих элементов воспользуйтесь панелью инструментов **Controls** (см.п.8). | + | - Добавим в окно **my window** какой-либо управляющий элемент. Для этого выделите в кодах этого окна раздел диагоналей как комментарий -- ''/*<nowiki>...</nowiki>*/''. Вернитесь к редактированию окна. Для установки в окно рабочих элементов воспользуйтесь панелью инструментов **Controls** (см.п.8). |
- Щелкните на панели **Controls** кнопку **PushButton**, растяните рамку по размерам будущей кнопки в заготовке окна. При отпускании кнопки мыши появится окно **PushButton Attirutes**. Задайте значения для кнопки: в поле **Text** -- **Start**, в поле **Constant** -- **idc_startstop**. \\ Аналогично установите в окне объект **CheckBox**, задайте имя -- **Show Date**, константу - **idc_show_date**. {{ :courses:knowledge_base_and_expert_system:lab1_figure14.png?nolink&300 |}} | - Щелкните на панели **Controls** кнопку **PushButton**, растяните рамку по размерам будущей кнопки в заготовке окна. При отпускании кнопки мыши появится окно **PushButton Attirutes**. Задайте значения для кнопки: в поле **Text** -- **Start**, в поле **Constant** -- **idc_startstop**. \\ Аналогично установите в окне объект **CheckBox**, задайте имя -- **Show Date**, константу - **idc_show_date**. {{ :courses:knowledge_base_and_expert_system:lab1_figure14.png?nolink&300 |}} | ||
- Вызовите окно редактора кода для окна, обратите внимание на то, что Пролог автоматически добавил строки для вызова 2-х новых элементов. {{ :courses:knowledge_base_and_expert_system:lab1_figure15.png?nolink&300 |}} | - Вызовите окно редактора кода для окна, обратите внимание на то, что Пролог автоматически добавил строки для вызова 2-х новых элементов. {{ :courses:knowledge_base_and_expert_system:lab1_figure15.png?nolink&300 |}} | ||
Line 83: | Line 81: | ||
</code> | </code> | ||
- Запустите проект, убедитесь в его работе. | - Запустите проект, убедитесь в его работе. | ||
+ | ===== Содержание отчёта ===== | ||
+ | * Цель работы. | ||
+ | * Краткое изложение основных теоретических понятий. | ||
+ | * Постановка задачи с кратким описанием порядка выполнения работы. | ||
+ | * Пошаговая реализация программы с необходимыми рисунками и комментариями. | ||
+ | * Общий вывод по проделанной работе. | ||
+ | * Код программы. |