Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Вызов меню Visual prolog 7.3
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
shafl shafl вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.06.2011
По умолчанию Вызов меню Visual prolog 7.3 - 12.06.2011, 19:32

Здравствуйте, проблема такова: необходимо написать программу на Visual prolog 7.3, все логические цепочки верны, т.е. в интерпритаторе выдаются верные значения. Но по условию задачи необходимо организовать меню для удобства пользования. Собственно что не получается:
prolog Код:
class predicates
    base: (string X, string Y, integer W, integer Z) multi (o,o,o,o).
    menu : () nondeterm.
    m:(integer) nondeterm anyflow.
clauses
menu():-
    console::clearOutput(),
    stdio :: nl,
    stdio :: write (" Нажмите [1] для вывода информации "),
    stdio :: nl,
    stdio :: nl,
    stdio :: write (" Нажмите [2] для "),
    stdio :: nl,
    stdio :: nl,
    stdio :: write (" Нажмите [3] для "),
    stdio :: nl,
    stdio :: nl,
    stdio :: write (" Нажмите [4] для выхода из программы "),
    stdio :: nl,
    F =  stdio::read(),
    m(F).

m(1):-
         stdIO::write("\n Some text:\n"),
         stdio :: nl,
         base(X,Y,W,Z),
         stdIO::writef("   text %  % text % text % text\n", X, Y,W,Z),
         fail.

clauses
    run():-
    console::init(),
    m(1),  
    _=stdio::readChar ().
end implement main

при попытке компиляции выводится ошибка
error c631: The predicate 'main::run/0', which is declared as 'procedure', is actually 'nondeterm'
в чём ошибка и как правльно организовать меню в Visual prolog 7.3, подскажите пожалуйста. Как видно в коде только 1 пункт меню, и не все объявления, вставил только основное.
Ответить с цитированием
  (#2 (permalink)) Старый
shafl shafl вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.06.2011
По умолчанию 12.06.2011, 20:14

в коде там ошибка
prolog Код:
run():-
    console::init(),
    menu(),  
 _=stdio::readChar ().
end implement main
Ответить с цитированием
  (#3 (permalink)) Старый
run run вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2014
Smile 16.10.2014, 21:45

В поисках решения подобной проблемы, пришлось проштудировать примеры Винитарха. И понять как же все-таки работает repeat и ему подобные в новой версии Пролога.
И все-таки удалось это сделать. Вот базовый пример реализации меню в vip 7.5


prolog Код:
implement main
    open core, console

class facts
    anyinfo: (integer, string) nondeterm.
    class predicates
    menu: () multi.
    action:(integer) nondeterm (i).
clauses
anyinfo(1, "A").
anyinfo(2, "B").
anyinfo(3, "C").
anyinfo(4, "D").
anyinfo(5, "E").
anyinfo(6, "F").

action(1):-anyinfo(1, B), write(B), nl, !.
action(2):-anyinfo(2, B), write(B), nl, !.
action(3):-anyinfo(3, B), write(B), nl, !.
action(4):-anyinfo(4, B), write(B), nl, !.
action(5):-anyinfo(5, B), write(B), nl, !.
action(6):-anyinfo(6, B), write(B), nl, !.
action(_):- write("Error input number"), nl.

menu():- write ("1, 2, 3, 4, 5 or 6? Input number: "), N=read(), clearInput(), action(N) .
menu():-menu().
run() :- init(), menu(), write("Continue?"), N=readChar(), clearInput(), N='n',
    write("End"),  clearInput(), _=readLine(), !;
    write("Error"), _=readLine().

end implement main

goal
    mainExe::run(main::run).

1, 2, 3, 4, 5 or 6? Input number: 1
A
Continue?a
1, 2, 3, 4, 5 or 6? Input number: 2
B
Continue?t
1, 2, 3, 4, 5 or 6? Input number: 8
Error input number
Continue?n
End
Ответить с цитированием
  (#4 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 16.10.2014, 22:00

Вот еще один пример
НОУ ИНТУИТ | Лекция | Внутренняя база данных
Внизу страницы, пример 4.3.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос программ из {TurboProlog.....Visual Prolog 5.2} в Visual Prolog 7 imported_Jenny_ Prolog 30 25.03.2013 19:15
Помогите реализовать меню в Visual Prolog 5 imported_Anneta Prolog 14 13.01.2013 18:19
Помогите переделать задачу из Turbo Prolog в Visual Prolog 5 imported_Anneta Prolog 3 23.12.2010 22:59
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) olik567 Prolog 4 07.10.2009 17:46
Вызов меню выбора ячеек koval1972 Visual Basic 7 01.12.2008 23:43
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) Игоревна Задания за деньги 16 04.01.2008 17:20
вызов макроса excel из меню FARа lblblb Visual Basic 3 28.11.2007 16:53
Вызов программы из контекстного меню Jinjo C++ Builder 7 09.08.2006 02:07
Динамическое меню вызов динамического меню imported_@LeX Delphi 3 31.05.2006 20:03
Как перехватить вызов контекстного меню, чтобы затем подменить своим собственным Bokrenok Visual C++ 4 23.12.2005 11:49
Вызов контестного меню с курсором GI Visual C++ 2 07.06.2004 18:11
Как сделать вызов на Prolog black zorro Prolog 4 10.05.2004 19:45



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов