Изучение графических возможностей Visual Prolog 5,2

Страницы работы

Содержание работы

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

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Комсомольский – на - Амуре государственный технический университет»

Кафедра математического обеспечения и применения ЭВМ

ЛАБОРАТОРНАЯ РАБОТА № 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"),

!.

Похожие материалы

Информация о работе