Поиск:

Ответ в темуСоздание новой темы Создание опроса
> База знаний в экспертной системе visual prolog 5.2 
:(
    Опции темы
Aleksfoss
Дата 8.8.2015, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.7.2015

Репутация: нет
Всего: нет



Всем привет. Кто нибудь может подсказать? В  общем есть файл frame.dba это вроде как и есть база знаний в экспертной системе, но вот где там база данных, а где база правил? 

Код программы:

Database - framedb
type(INTEGER,STRING,SLIST)
classroom(STRING,INTEGER,ILIST)
ntype(INTEGER)
predicates
getname(SLIST)
checkanswer(INTEGER,SLIST)
getvalue(SLIST,ILIST)
allparam(SLIST,ILIST,STRING,STRING)
nondeterm init
  task_win_eh : EHANDLER

constants

%BEGIN Task Window, CreateParms, 07:41:39-6.6.2015, Code automatically updated!
  task_win_Flags = [wsf_SizeBorder,wsf_TitleBar,wsf_Close,wsf_Maximize,wsf_Minimize,wsf_ClipSiblings]
  task_win_Menu  = res_menu(idr_task_menu)
  task_win_Title = "Экспертная система"
  task_win_Help  = idh_contents
%END Task Window, CreateParms

clauses

getname([NAME|L]):-
    NAME=dlg_GetStr("Имя параметра","Параметры имени:",""),
    NAME<>"",
    P=dlg_Ask("Хотите продолжить ввод имени параметра?",["Да","Нет" ]),
    checkanswer(P,L).
    checkanswer(0,L):-getname(L).
    checkanswer(1,[]).
    
    getvalue([],[]).
    getvalue([NAME|L1],[VALUE|L2]):-
        concat(NAME,":  ",STR),
        VALUESTR=dlg_GetStr("Значения параметров",STR,""),
        str_int(VALUESTR,VALUE),
        VALUE>=0,
        getvalue(L1,L2).
        
    allparam([],[],S,S).
    allparam([NAME|L1],[VALUE|L2],STR,S):-
        format(STRVALUE,"%",VALUE),
        concat(STR,NAME,STR2),
        concat(STR2,":  ",STR3),
        concat(STR3,STRVALUE,STR4),
        concat(STR4,"\n",STR5),
        allparam(L1,L2,STR5,S).
init:-ntype(_).        
init:-asserta(ntype(0)).        

%BEGIN Task Window, e_Create
  task_win_eh(_Win,e_Create(_),0):-!,
    consult("frame.dba",framedb),
    init,
    
%BEGIN Task Window, InitControls, 07:41:39-6.6.2015, Code automatically updated!
%END Task Window, InitControls
%BEGIN Task Window, ToolbarCreate, 07:41:39-6.6.2015, Code automatically updated!
    tb_project_toolbar_Create(_Win),
    tb_help_line_Create(_Win),
%END Task Window, ToolbarCreate
ifdef use_message
    msg_Create(100),
enddef
    !.
%END Task Window, e_Create

%MARK Task Window, new events

%BEGIN Task Window, id_about
  task_win_eh(_Win,e_Menu(id_about,_ShiftCtlAlt),0):-!,
  
    !.
%END Task Window, id_about

%BEGIN Task Window, id_help
  task_win_eh(_Win,e_Menu(id_help,_ShiftCtlAlt),0):-!,
    !.
%END Task Window, id_help

%BEGIN Task Window, id_findclass
  task_win_eh(_Win,e_Menu(id_findclass,_ShiftCtlAlt),0):-!,
  dlg_findclass_Create(_Win),
    !.
%END Task Window, id_findclass

%BEGIN Task Window, id_Exit
  task_win_eh(_Win,e_Menu(id_Exit,_ShiftCtlAlt),0):-!,
  win_Destroy(_Win),
    !.
%END Task Window, id_Exit

%BEGIN Task Window, id_addtype
  task_win_eh(_Win,e_Menu(id_addtype,_ShiftCtlAlt),0):-!,
  dlg_addtype_Create(_Win),
    !.
%END Task Window, id_addtype

%BEGIN Task Window, id_addclass
  task_win_eh(_Win,e_Menu(id_addclass,_ShiftCtlAlt),0):-!,
  dlg_addclass_Create(_Win),
    !.
%END Task Window, id_addclass

%BEGIN Task Window, e_Destroy
  task_win_eh(_Win,e_Destroy,0):-!,
    save("frame.dba",framedb),
    !.
%END Task Window, e_Destroy

%BEGIN Task Window, id_help_contents
  task_win_eh(_Win,e_Menu(id_help_contents,_ShiftCtlAlt),0):-!,
    vpi_ShowHelp("пример эс.hlp"),
    !.
%END Task Window, id_help_contents

%BEGIN Task Window, id_help_about
  task_win_eh(_Win,e_Menu(id_help,_ShiftCtlAlt),0):-!,
    dlg_about_dialog_Create(_Win),
    !.
%END Task Window, id_help_about

%BEGIN Task Window, id_file_exit
  task_win_eh(_Win,e_Menu(id_exit,_ShiftCtlAlt),0):-!,
    win_Destroy(_Win),
    !.
%END Task Window, id_file_exit

%BEGIN Task Window, e_Size
  task_win_eh(_Win,e_Size(_Width,_Height),0):-!,
ifdef use_tbar
    toolbar_Resize(_Win),
enddef
ifdef use_message
    msg_Resize(_Win),
enddef
    !.
%END Task Window, e_Size

%END_WIN Task Window

/***************************************************************************
        Invoking on-line Help
***************************************************************************/

  project_ShowHelpContext(HelpTopic):-
    vpi_ShowHelpContext("пример эс.hlp",HelpTopic).

/***************************************************************************
            Main Goal
***************************************************************************/

goal

ifdef use_mdi
  vpi_SetAttrVal(attr_win_mdi,b_true),
enddef
ifdef ws_win
  ifdef use_3dctrl
    vpi_SetAttrVal(attr_win_3dcontrols,b_true),
  enddef
enddef  
  vpi_Init(task_win_Flags,task_win_eh,task_win_Menu,"пример эс",task_win_Title).

%BEGIN_TLB Project toolbar, 12:09:49-4.6.2015, Code automatically updated!
/**************************************************************************
    Creation of toolbar: Project toolbar
**************************************************************************/

clauses

  tb_project_toolbar_Create(_Parent):-
ifdef use_tbar
    toolbar_create(tb_top,0xC0C0C0,_Parent,
        [tb_ctrl(id_file_new,pushb,idb_new_up,idb_new_dn,idb_new_up,"New;New file",1,1),
         tb_ctrl(id_file_open,pushb,idb_open_up,idb_open_dn,idb_open_up,"Open;Open file",1,1),
         tb_ctrl(id_file_save,pushb,idb_save_up,idb_save_dn,idb_save_up,"Save;File save",1,1),
         separator,
         tb_ctrl(id_edit_undo,pushb,idb_undo_up,idb_undo_dn,idb_undo_up,"Undo;Undo",1,1),
         tb_ctrl(id_edit_redo,pushb,idb_redo_up,idb_redo_dn,idb_redo_up,"Redo;Redo",1,1),
         separator,
         tb_ctrl(id_edit_cut,pushb,idb_cut_up,idb_cut_dn,idb_cut_up,"Cut;Cut to clipboard",1,1),
         tb_ctrl(id_edit_copy,pushb,idb_copy_up,idb_copy_dn,idb_copy_up,"Copy;Copy to clipboard",1,1),
         tb_ctrl(id_edit_paste,pushb,idb_paste_up,idb_paste_dn,idb_paste_up,"Paste;Paste from clipboard",1,1),
         separator,
         separator,
         tb_ctrl(id_help_contents,pushb,idb_help_up,idb_help_down,idb_help_up,"Help;Help",1,1)]),
enddef
    true.
%END_TLB Project toolbar

%BEGIN_TLB Help line, 12:09:49-4.6.2015, Code automatically updated!
/**************************************************************************
    Creation of toolbar: Help line
**************************************************************************/

clauses

  tb_help_line_Create(_Parent):-
ifdef use_tbar
    toolbar_create(tb_bottom,0xC0C0C0,_Parent,
        [tb_text(idt_help_line,tb_context,452,0,4,10,0x0,"")]),
enddef
    true.
%END_TLB Help line

%BEGIN_DLG About dialog
/**************************************************************************
    Creation and event handling for dialog: About dialog
**************************************************************************/

constants

%BEGIN About dialog, CreateParms, 12:09:49-4.6.2015, Code automatically updated!
  dlg_about_dialog_ResID = idd_dlg_about
  dlg_about_dialog_DlgType = wd_Modal
  dlg_about_dialog_Help = idh_contents
%END About dialog, CreateParms

predicates

  dlg_about_dialog_eh : EHANDLER

clauses

  dlg_about_dialog_Create(Parent):-
    win_CreateResDialog(Parent,dlg_about_dialog_DlgType,dlg_about_dialog_ResID,dlg_about_dialog_eh,0).

%BEGIN About dialog, idc_ok _CtlInfo
  dlg_about_dialog_eh(_Win,e_Control(idc_ok,_CtrlType,_CtrlWin,_CtrlInfo),0):-!,
    win_Destroy(_Win),
    !.
%END About dialog, idc_ok _CtlInfo
%MARK About dialog, new events

  dlg_about_dialog_eh(_,_,_):-!,fail.

%END_DLG About dialog

%BEGIN_DLG addclass
/**************************************************************************
    Creation and event handling for dialog: addclass
**************************************************************************/

constants

%BEGIN addclass, CreateParms, 10:58:53-6.6.2015, Code automatically updated!
  dlg_addclass_ResID = idd_addclass
  dlg_addclass_DlgType = wd_Modal
  dlg_addclass_Help = idh_contents
%END addclass, CreateParms

predicates

  dlg_addclass_eh : EHANDLER
  dlg_addclass_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
  dlg_addclass_update(DIALOG_VAL_LIST)

clauses

  dlg_addclass_Create(Parent):-

%MARK addclass, new variables

    dialog_CreateModal(Parent,dlg_addclass_ResID,"",
        [
%BEGIN addclass, ControlList, 10:58:53-6.6.2015, Code automatically updated!
        df(nameclass,editstr("",[]),nopr),
        df(typelist,listbox([],[0]),nopr)
%END addclass, ControlList
        ],
        dlg_addclass_eh,0,VALLIST,ANSWER),
    dlg_addclass_handle_answer(ANSWER,VALLIST).

  dlg_addclass_handle_answer(idc_ok,VALLIST):-!,
    dlg_addclass_update(VALLIST).
  dlg_addclass_handle_answer(idc_cancel,_):-!.  % Handle Esc and Cancel here
  dlg_addclass_handle_answer(_,_):-
    errorexit().

  dlg_addclass_update(_VALLIST):-
%BEGIN addclass, Update controls, 10:58:53-6.6.2015, Code automatically updated!
    _NAMECLASS_VALUE = dialog_VLGetstr(nameclass,_VALLIST),
    dialog_VLGetListBox(typelist,_VALLIST,_TYPELIST_ITEMLIST,_TYPELIST_SELECT),
%END addclass, Update controls
    true.

%MARK addclass, new events

%BEGIN addclass, e_Create
  dlg_addclass_eh(_Win,e_Create(_CreationData),0):-!,
    H=win_GetCtlHandle(_Win,typelist),
    retract(type(NTYPE,TYPE1,PLIST)),
    assertz(type(NTYPE,TYPE1,PLIST)),
    type(_,TYPE2,_),
    lbox_add(H,TYPE2),
    TYPE1=TYPE2,
    lbox_SetSel(H,0,b_true),
    !.
%END addclass, e_Create

%BEGIN addclass, setvalue _CtlInfo
  dlg_addclass_eh(_Win,e_Control(setvalue,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
    H=win_GetCtlHandle(_Win,nameclass),
    NAMECLASS=win_GetText(H),
    NAMECLASS<>"",
    not(classroom(NAMECLASS,_,_)),
    LH=win_GetCtlHandle(_Win,typelist),
    lbox_GetSel(LH,S,_),
    S=[TYPE|_],
    type(NTYPE,TYPE,LPROP),
    getvalue(LPROP,LVALUE),
    asserta(classroom(NAMECLASS,NTYPE,LVALUE)),
    win_Destroy(_Win),
    dlg_note("Дом добавлен"),
    !.
     dlg_addclass_eh(_Win,e_Control(setvalue,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
     dlg_error("Дом не добавлен").
%END addclass, setvalue _CtlInfo



%BEGIN addclass, idc_cancel _CtlInfo
  dlg_addclass_eh(_Win,e_Control(idc_cancel,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  win_Destroy(_Win),
    !.
%END addclass, idc_cancel _CtlInfo

  dlg_addclass_eh(_,_,_):-!,fail.

%END_DLG addclass

%BEGIN_DLG ADDTYPE
/**************************************************************************
    Creation and event handling for dialog: ADDTYPE
**************************************************************************/

constants

%BEGIN ADDTYPE, CreateParms, 10:59:02-6.6.2015, Code automatically updated!
  dlg_addtype_ResID = idd_addtype
  dlg_addtype_DlgType = wd_Modal
  dlg_addtype_Help = idh_contents
%END ADDTYPE, CreateParms

predicates

  dlg_addtype_eh : EHANDLER
  dlg_addtype_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
  dlg_addtype_update(DIALOG_VAL_LIST)

clauses

  dlg_addtype_Create(Parent):-

%MARK ADDTYPE, new variables

    dialog_CreateModal(Parent,dlg_addtype_ResID,"",
        [
%BEGIN ADDTYPE, ControlList, 10:59:02-6.6.2015, Code automatically updated!
        df(typename,editstr("",[]),nopr)
%END ADDTYPE, ControlList
        ],
        dlg_addtype_eh,0,VALLIST,ANSWER),
    dlg_addtype_handle_answer(ANSWER,VALLIST).

  dlg_addtype_handle_answer(idc_ok,VALLIST):-!,
    dlg_addtype_update(VALLIST).
  dlg_addtype_handle_answer(idc_cancel,_):-!.  % Handle Esc and Cancel here
  dlg_addtype_handle_answer(_,_):-
    errorexit().

  dlg_addtype_update(_VALLIST):-
%BEGIN ADDTYPE, Update controls, 10:59:02-6.6.2015, Code automatically updated!
    _TYPENAME_VALUE = dialog_VLGetstr(typename,_VALLIST),
%END ADDTYPE, Update controls
    true.



%BEGIN ADDTYPE, setparam _CtlInfo
  dlg_addtype_eh(_Win,e_Control(setparam,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  H1=win_GetCtlHandle(_win,typename),
  TYPE=win_GetText(H1),TYPE<>"",not(type(_,TYPE,_)),
  getname(L),
  retract(ntype(N)),
  N2=N+1,
  asserta(ntype(N2)),
  asserta(type(N2,TYPE,L)),
  win_Destroy(_win),
  dlg_note("Новый тип был добавлен."),
    !.
    dlg_addtype_eh(_Win,e_Control(setparam,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
    dlg_error("Новый тип не был добавлен").
%END ADDTYPE, setparam _CtlInfo

%BEGIN ADDTYPE, idc_cancel _CtlInfo
  dlg_addtype_eh(_Win,e_Control(idc_cancel,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  win_Destroy(_Win),
    !.
%END ADDTYPE, idc_cancel _CtlInfo

  dlg_addtype_eh(_,_,_):-!,fail.

%END_DLG ADDTYPE

%BEGIN_DLG findclass
/**************************************************************************
    Creation and event handling for dialog: findclass
**************************************************************************/

constants

%BEGIN findclass, CreateParms, 10:59:18-6.6.2015, Code automatically updated!
  dlg_findclass_ResID = idd_findclass
  dlg_findclass_DlgType = wd_Modal
  dlg_findclass_Help = idh_contents
%END findclass, CreateParms

predicates

  dlg_findclass_eh : EHANDLER
  dlg_findclass_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
  dlg_findclass_update(DIALOG_VAL_LIST)

clauses

  dlg_findclass_Create(Parent):-

%MARK findclass, new variables

    dialog_CreateModal(Parent,dlg_findclass_ResID,"",
        [
%BEGIN findclass, ControlList, 10:59:18-6.6.2015, Code automatically updated!
        df(classlist,listbox([],[0]),nopr)
%END findclass, ControlList
        ],
        dlg_findclass_eh,0,VALLIST,ANSWER),
    dlg_findclass_handle_answer(ANSWER,VALLIST).

  dlg_findclass_handle_answer(idc_ok,VALLIST):-!,
    dlg_findclass_update(VALLIST).
  dlg_findclass_handle_answer(idc_cancel,_):-!.  % Handle Esc and Cancel here
  dlg_findclass_handle_answer(_,_):-
    errorexit().

  dlg_findclass_update(_VALLIST):-
%BEGIN findclass, Update controls, 10:59:18-6.6.2015, Code automatically updated!
    dialog_VLGetListBox(classlist,_VALLIST,_CLASSLIST_ITEMLIST,_CLASSLIST_SELECT),
%END findclass, Update controls
    true.

%MARK findclass, new events

%BEGIN findclass, e_Create
  dlg_findclass_eh(_Win,e_Create(_CreationData),0):-!,
    H=win_GetCtlHandle(_Win,classlist),
    retract(classroom(CLASS1,NTYPE,LVALUE)),
    assertz(classroom(CLASS1,NTYPE,LVALUE)),
    classroom(CLASS2,_,_),
    lbox_add(H,CLASS2),
    CLASS1=CLASS2,
    lbox_SetSel(H,0,b_true),
    !.
%END findclass, e_Create





%BEGIN findclass, classlist _CtlInfo
  dlg_findclass_eh(_Win,e_Control(classlist,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
    H=win_GetCtlHandle(_Win,classlist),
    lbox_GetSel(H,S,_),
    
    S=[CLASSROOM|_],
    classroom(CLASSROOM,NTYPE,LVALUE),
    type(NTYPE,TYPE,LPARAM),
    STR="Тип:  ",
    concat(STR,TYPE,STR2),
    concat(STR2,"\n",STR3),
    allparam(LPARAM,LVALUE,STR3,STR4),
    H2=win_GetCtlHandle(_Win,textparam),
    win_SetText(H2,STR4),
    lbox_Clear(H),
    !.
%END findclass, classlist _CtlInfo

%BEGIN findclass, idc_cancel _CtlInfo
  dlg_findclass_eh(_Win,e_Control(idc_cancel,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  win_Destroy(_Win),
    !.
%END findclass, idc_cancel _CtlInfo

  dlg_findclass_eh(_,_,_):-!,fail.

%END_DLG findclass

 

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  frame.dba 0,75 Kb
PM MAIL   Вверх
cold95
Дата 7.10.2015, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.10.2015

Репутация: нет
Всего: нет



Привет . Очень нужна помощь. 
Преподаватель задал написать программу на прологе ... я а в ном ничего не понимаю . 
вот задача:
 описать в базе знаний фрагмент файлового каталога. Привести информацию об имени , расширение и размер файла. Написать правило для ассоциации расширений файлов с программами, которые создали . Обеспечить поиск файла по его имени .
Помогите кто может  ... очень надо !!! Пожалуйста !!!! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.1095 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.