Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Комсомольский – на - Амуре государственный технический университет»
Кафедра математического обеспечения и применения ЭВМ
ЛАБОРАТОРНАЯ РАБОТА № 1
По курсу: «Рекурсивно-логическое программирование»
Студенты группы 4ВС-1: Киселевский М.Е.
Алексеенко Н.С.
Преподаватель: Абарникова Е.Б.
2007 г.
Тема: изучение графических возможностей Visual Prolog 5.2.
Цель: ознакомиться с возможностями построения графов в среде Visual Prolog 5.2
Задание: изучить предикаты пакета TreePackage.
Предикаты пакета TreePackages:
В среде Visual Prolog v 5.2 для создания графов присутствует специальный пакет предикатов Tree Packages. В него входит набор стандартных предикатов для работы с деревьями:
tree_Create/11 Создает новое окно с изображением заданного дерева
tree_CreateSubclass/3 Создается дерево в уже ранее созданном окне
tree_GetAllNodes/1 Возвращает список всех узлов
tree_GetSelectedNode/1 Возвращает значение текущего выбранного узла
tree_GetParentNode/1 Возвращает значение родительского узла для выбранного узла
tree_GetNodeArrowType/1 Возвращает Arrow Type для текущего узла
tree_GetWinInfo/1 Возвращает установки, заданные для окна, в котором изображено дерево (Шрифт, направление графа)
tree_GetWinRect/2 Возвращает геометрические параметры окна
tree_GetCurrentSearch/1 Возвращает текущее значение используемое для поиска
tree_SetSelectedNode/2 Перемещает выделение на указанный узел
tree_SetDirection/2 Меняет направление графа на указанное
tree_SetFont/2 Изменяет настройки шрифта
tree_Update/3 Рисует новое дерево в текущем окне
tree_OpenCloseNode/1 Вставляет (убирает) поддерево для выбранного узла
tree_SearchFirstNode/2 Выделяет узел с указанным именем
tree_SearchNodeAgain/1 Выделяет следующий узел с указанным именем
tree_MoveToSelectedNode/1 Открывает узел
tree_MoveToParentNode/1 Перемещает выделение от дочернего узла к родительскому
tree_Print/2 Печатает дерево
Также имеются специальные типы данных, используемые при работе с деревьями:
TREE_PATH = LONGLIST*
LONGLIST = LONG*
TREE_NODE_MARK = marked ; unmarked
TREE_SELECTOR = string
TREE_DIRECTION = INTEGER
TREE_ARROW_TYPE = INTEGER
TREE_ARROW_PEN = tree_arrowPen(TREE_ARROW_TYPE, PEN )
TREE_ARROW_PEN_LIST = TREE_ARROW_PEN*
TREE_WIN_INFO = tree_WinInfo(FONT, TREE_DIRECTION, TREE_ARROW_PEN_LIST );
tree_WinInfoAdv(FONT, TREE_DIRECTION, TREE_ARROW_PEN_LIST, SLIST, PNT )
TREE = tree(TREE_SELECTOR, TREE_NODE_MARK,
TREELIST, TREE_ARROW_TYPE )
TREELIST = TREE
И список констант, определяющих направление изображение дерева.
tree_DirRight
tree_DirLeft
tree_DirDown
tree_DirUp
В лабораторной работе представлены следующие возможности работы с деревьями:
1. Поворот дерева. Он реализуется с помощью стандартного предиката tree_SetDirection/2, который имеет два аргумента: хэндел окна отображения дерева и константа, указывающая направление отображения.
% ***************Поворотдерева******************************
win_tree_eh(_Win,e_Menu(idt_tree_round,_ShiftCtlAlt),0):HDC=Win_GetCtlHandle(_Win,idc_wtree_edit1),
Nums=Win_GetText(HDC), %получение текущего угла поворота
str_int(Nums,Num),
Num=0,
tree_SetDirection(_Win,3), %новыйуголповорота
Win_SetText(HDC,"3"),
!.
win_tree_eh(_Win,e_Menu(idt_tree_round,_ShiftCtlAlt),0):HDC=Win_GetCtlHandle(_Win,idc_wtree_edit1),
Nums=Win_GetText(HDC), %получение текущего угла поворота
str_int(Nums,Num),
Num=3,
tree_SetDirection(_Win,1),
Win_SetText(HDC,"1"),
!.
win_tree_eh(_Win,e_Menu(idt_tree_round,_ShiftCtlAlt),0):HDC=Win_GetCtlHandle(_Win,idc_wtree_edit1),
Nums=Win_GetText(HDC), %получение текущего угла поворота
str_int(Nums,Num),
Num=1,
tree_SetDirection(_Win,2), %новыйуголповорота
Win_SetText(HDC,"2"),
!.
win_tree_eh(_Win,e_Menu(idt_tree_round,_ShiftCtlAlt),0):HDC=Win_GetCtlHandle(_Win,idc_wtree_edit1),
Nums=Win_GetText(HDC), %получение текущего угла поворота
str_int(Nums,Num),
Num=2,
tree_SetDirection(_Win,0), %новыйуголповорота
Win_SetText(HDC,"0"),
!.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.