ИИСС. Практикум решения задач по курсу Основы искусственного интеллекта
Скачать 0.73 Mb.
|
ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫДоработайте проект, создав пункт меню Avtor, при выборе которого появляется диалоговое окно (dlg_Note) со сведениями об авторе проекта (Ф.И.О, группа) 2.2 Создание новых окон в проекте с использованием кнопок и полей ввода Поля ввода (Edit Control) позволяют пользователю вводить данные. Обычно этот элемент представляет собой строку, которая содержит текст или число. Поле ввода может быть многострочным. Для установки и получения содержимого поля ввода нужно использовать предикаты: String = win_GetText (Window), win_SetText (Window , string Text) где Window – это оконный дескриптор элемента управления, который может быть получен вызовом предиката: CtrlHndl=win_GetCtlHandle(Parent Window,CtrlId) Командные кнопки (Push Button) позволяют пользователю выполнять различные действия: открывать и закрывать окна, выполнять расчеты и т.д. Пример. Проект, позволяющий вычислить факториал введенного числа Задание: создать проект, в котором при выборе пункта меню Factorial открывается окно, позволяющее ввести натуральное число и вычислить его факториал. Решение 1. Создайте новый проект(Project | New Project). 2. Добавьте в главное меню новый пункт Factorial аналогично как в предыдущем примере). 3. Создайте новое окно. Для этого в окне проекта нажмите кнопку Window на левой панели инструментов, а затем – кнопку New справа (рис.18). рис.18. Создание нового окна в проекте Откроется окно Window Attributes (рис.19). Введите имя создаваемого окна Factorial и нажмите ОК. рис.19. Диалоговое окно для установки атрибутов окна 4. Разместите на макете появившегося нового окна следующие компоненты (рис.20): Static Text для вывода текста Edit Control для ввода данных Push Button для выполнения расчета рис.20. Редактор окон После размещения компонентов установите необходимые для каждого из них атрибуты: а) для компонента Static Text, служащего для вывода надписи Введите число (имя-константа будет задано автоматически)(рис.21) рис.21. Атрибуты компонента Static Text б) для компонента Edit Control (поле ввода), который обеспечит ввод числа рис.22. Атрибуты компонента Edit Control в) для компонента Push Button (кнопка), при нажатии на который будет выполнен расчет и выведен результат (имя-константа будет задано автоматически)(рис.23) рис.23. Атрибуты компонента Push Button г) для компонента Static Text, необходимого для вывода результата рис.24. Атрибуты компонента Static Text 5. Сгенерируйте стандартный код Visual Prolog для нового окна. Для этого в окне проекта нажмите кнопку Code Expert, когда выбрано окно Factorial. Откроется окно Dialog_and_Window_Expert.'>Dialog and Window Expert. Выберите исходный модуль Factorial.pro и нажмите кнопку Default Code(рис.25). рис.25 Добавление кода по умолчанию в эксперте окон Когда заданный по умолчанию код будет сгенерирован, станут доступны кнопки Add Clause, Edit Code и некоторые другие. 6. Запрограммируйте выбор пункта меню Factorial для вызова окна Factorial. Для этого в списке окон выберите Task Window , пункт Menu в списке Event Type и выделите строку id_factorial(имя пункта меню) в списке Event or Item. Нажмите кнопку Add Clause, чтобы сгенерировать Пролог-предложение для события. Название кнопки изменится на Edit Clause, когда код для события будет создан. Нажмите кнопку Edit Clause. Откроется окно редактора для файла Factorial.pro, в который добавлено предложение: %BEGIN Task Window, id_factorial task_win_eh(_Win,e_Menu(id_factorial,_ShiftCtlAlt),0):-!, !. %END Task Window, id_factorial Допишите команду для открытия окна Factorial: win_factorial_Create(_Win). В результате должно получиться: %BEGIN Task Window, id_factorial task_win_eh(_Win,e_Menu(id_factorial,_ShiftCtlAlt),0):-!, win_factorial_Create(Win), !. %END Task Window, id_factorial 7. Запрограммируйте нажатие кнопки Результат в окне Factorial для выполнения расчета и вывода результата. Для этого вызовите окно Dialog and Window Expert и в списке окон выберите Factorial. Выберите пункт Control в списке Event Type и выделите строку pb: idc_результат(имя кнопки). Нажмите кнопку Add Clause, а затем Edit Clause. Откроется окно редактора для файла Factorial.pro, в который добавлено предложение: %BEGIN Factorial, idc_результат _CtlInfo win_factorial_eh(_Win,e_Control(idc_результат,_CtrlType,_CtrlWin, _CtlInfo),0):-!, !. %END Factorial, idc_результат _CtlInfo Допишите команды, необходимые для вычисления факториала и вывода результата. В результате должно получиться: %BEGIN Factorial, idc_результат _CtlInfo win_factorial_eh(_Win,e_Control(idc_результат, _CtrlType, _CtrlWin, _CtlInfo), 0):-!, EDIT_WIN1=win_GetCtlHandle(_WIN,idc_ввод), Text1=win_GetText(EDIT_WIN1), % считываем данные из поля ввода str_int(Text1,N), % преобразует в числовое значение fact(N,FN), % вычисляем факториал str_int(StrFN,FN), % преобразуем в строковое значение EDWIN=win_GetCtlHandle(_WIN,idct_вывод), win_SetText(EDWIN,StrFN), % выводим результат !. %END Factorial, idc_результат _CtlInfo 8. Опишите правило вычисления факториала и предикат fact: PREDICATES win_factorial_eh : EHANDLER fact(integer,integer) CLAUSES fact(0,1):-!. fact(N,F):- N1=N-1,fact(N1,F1), F=N*F1. win_factorial_Create(_Parent):- win_Create(win_factorial_WinType,win_factorial_RCT,win_factorial_Title, win_factorial_Menu,_Parent,win_factorial_Flags,win_factorial_eh,0). 9. Запустите проект на исполнение и протестируйте его. |