- 1 курс
- 2 курс
- 3 курс
- 4 курс
- 5 курс
- 6 курс
Old
Old
This is an old revision of the document!
Изучение системы программирования Visual Prolog с последующим созданием Пролог-программы с графическим интерфейсом.
Visual Prolog – объектно-ориентированное расширение языка программирования PDC Prolog, развивавшегося из Turbo Prolog (Borland), семейства Prolog, а также система визуального программирования датской фирмы Prolog Development Center.
Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных с ним окон, диалогов, меню, строки уведомлений о состояниях и т. д. производится в графической среде. С созданными объектами могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования.
Мощность языка Prolog в сочетании с системой пользовательских интерфейсов упрощает разработку систем, основанных на знаниях, систем поддержки принятия решений, планирующих программ, развитых систем управления базами данных и т. д.
Язык программирования, реализованный в Visual (а ранее в Turbo) Prolog'е отличается от классического пролога тем, что он основан на строгой статической типизации. В него также добавлены средства объектно-ориентированного программирования, анонимные предикаты (лямбда-предикаты), факты-переменные и разрушающее присваивание для них, аргументы-домены (Generic Interfaces and Classes) и параметрический полиморфизм, мониторы (Monitors with guards), императивные конструкции (foreach
, if…then…else
), коллекторы списков ([…||…]
) и пр.
Ознакомится с системой программирования Visual Prolog создав простейшую Пролог-программу с графическим интерфейсом.
Для создания нового приложения используется эксперт приложений, который вызывается в окне Application Expert из меню Project/New Project. Выполните эту команду, в появившемся окне задайте имя проекта graf_int, установите курсор в текстовое поле ниже. Имя файла с расширением *.vpr появится автоматически.
win_my_window_eh(_Win,e_Update(_),0):-!, RCT=win_GetClientRect(_Win), RCT=rct(_,_,R,B), draw_Line(_Win,pnt(0,0),pnt(R,B)), draw_Line(_Win,pnt(0,B),pnt(R,0)),!.
Запустите проект, убедитесь, что окно отображается в виде, показанном на рисунке.
/*...,*/
. Вернитесь к редактированию окна. Для установки в окно рабочих элементов воспользуйтесь панелью инструментов Controls (см.п.8).facts - clock timer(window,long TimerId) predicates startTimer(window) stopTimer(window) clauses startTimer(Win):-TimerId=timer_Set(Win,1000),assert(timer(Win,TimerId)). stopTimer(Win):-retract(timer(Win,TimerId)),!,timer_Kill(TimerId).
win_my_window_eh(_Win,e_Control(idc_startstop,_CtrlType,_CtrlWin,_CtlInfo),0):- Title=win_GetText(_CtrlWin), Title = "Start", startTimer(_Win), win_SetText(_CtrlWin,"Stop"), !. win_my_window_eh(_Win,e_Control(idc_startstop,_CtrlType,_CtrlWin,_CtlInfo),0):-!, stopTimer(_Win), win_SetText(_CtrlWin,"Start"), !. win_my_window_eh(_Win,e_Update(_),0):- _CtrlWin =win_GetCtlHandle(_Win, idc_show_date), _IsChecked = win_IsChecked(_CtrlWin), _IsChecked = checkbox_on, !, win_Clear(_Win,color_White), RCT=win_GetClientRect(_Win), time(Hours,Minutes,Seconds,_), date(Year,Month,Day), format(Str,"%/%/% - %02:%02:%02",Year,Month,Day,Hours,Minutes,Seconds), draw_TextInRect(_Win, RCT, Str, -1,[dtext_center,dtext_vcenter,dtext_singleline]), !. win_my_window_eh(_Win,e_Update(_),0):-!, win_Clear(_Win,color_White), RCT=win_GetClientRect(_Win), time(Hours,Minutes,Seconds,_), format(Str,"%02:%02:%02",Hours,Minutes,Seconds), draw_TextInRect(_Win, RCT, Str, -1,[dtext_center,dtext_vcenter,dtext_singleline]), !. win_my_window_eh(_Win,e_Timer(_TimerId),0):-!, win_Invalidate(_Win), !. win_my_window_eh(_Win,e_Control(idc_show_date,_CtrlType,_CtrlWin,_CtlInfo),0):-!, win_Invalidate(_Win), !.