Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Вопрос Карны
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 29.05.2006, 15:55

вы как всегда великолепны.возможно для вас это трехсекундное дело,но я мучилась над этим уже полгода.спасибо огромное.

но конечно на этом мои вопросы не прикратились

вот еще один.
у меня есть 2 предиката

Код:
formal:(string_list R1,string_list UgeDa,string_list UgeDo,
        string_list Dano,string_list Dok,integer Flag1)determ(i,i,i,o,o,i).

razbor:(string_list L,string_list S,string_list UDa,
        string Da,string_list UDo,string Do,integer F,integer F1)determ(i,o,i,o,i,o,i,o).
вот их реализации

Код:
formal([X|R],UgeestDa,UgeestDo,Dano,Dok,Flag):-
    razbor([X|R],R1,UgeestDa,Da,UgeestDo,Do,Flag,Flag1),
    TempDa=string::concatWithDelimiter(UgeestDa,"#"),
    TmpDa=string::concat(Da,"#",TempDa),
    UgeDa=split_delimiter(TmpDa,"#"),
    TempDo=string::concatWithDelimiter(UgeestDo,"#"),
    TmpDo=string::concat(Do,"#",TempDo),
    UgeDo=split_delimiter(TmpDo,"#"),
    formal(R1,UgeDa,UgeDo,Dano,Dok,Flag1).
 
 formal([],UgeDa,UgeDo,UgeDa,UgeDo,_Flag).
 
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):-
    string::search(X,"дока")>=0,!.
    
    
    
 
 razbor([X|R],R1,_UgeestDa,Da,_UgeestDo,"",Flag,Flag):-
    string::search(X,"точка")>=0,!,
    
    elem(R,Y,R1),!,
    string::frontchar(Y,Ch,St),St="",
    Flag=0,Da=string::concat("tochka(",tostring(Ch),")").
    
 razbor([X|R],R1,_UgeestDa,"",_UgeestDo,Do,Flag,Flag):-
    Pos=string::search(X,"точка"),!,
    Pos>=0,elem(R,Y,R1),
    string::frontchar(Y,Ch,St),St="",
    Flag=1,Do=string::concat("tochka(",tostring(Ch),")").   

 razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag
).


смысл в том что первая процедура проходит какой-то список строк,а вторая строит из них как раз те предикаты,но еще в строковом виде.
и все они попасть должны сначала в список Dano а когда встретят слово доказать то разбор меняет флаг на 1, и далее с флагом 1 строит уже список Dok.

у меня же почему-то до списка Dok дело не доходит,и когда встречается слово доказать вообще выдается что текста,который обрабатывается,нет.

может,если вам не очень сложно,вы могли бы посмотреть где там логическая ошибка.

я привела вам случаи только для точки,но все остальные элементы примерно одинаковые.

кстати,я тоже не математик,но мой научный руководитель считает,что реализация метода резолюции дело каждого настоящего программиста
Ответить с цитированием
  (#17 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 29.05.2006, 16:23

Может, проблема в этом?
Код:
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):-
    string::search(X,"дока")>=0,!.
Во всяком случае, здесь все выходные аргументы типа string - пустые.
Ответить с цитированием
  (#18 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 29.05.2006, 18:44

Цитата:
Originally posted by karna
[b]может,если вам не очень сложно,вы могли бы посмотреть где там логическая ошибка.
Я пока не знаю, что получится, это Вам решать.
Давайте проанализируем подробно хотя бы по внешним признакам.
Во-первых этот код:
Код:
formal([X|R],UgeestDa,UgeestDo,Dano,Dok,Flag):-
    razbor([X|R],R1,UgeestDa,Da,UgeestDo,Do,Flag,Flag1),
    TempDa=string::concatWithDelimiter(UgeestDa,"#"),
    TmpDa=string::concat(Da,"#",TempDa),
    UgeDa=split_delimiter(TmpDa,"#"),
    TempDo=string::concatWithDelimiter(UgeestDo,"#"),
    TmpDo=string::concat(Do,"#",TempDo),
    UgeDo=split_delimiter(TmpDo,"#"),
    formal(R1,UgeDa,UgeDo,Dano,Dok,Flag1).
formal([],UgeDa,UgeDo,UgeDa,UgeDo,_Flag).
Посмотрим на этот кусок.
Код:
    TempDa=string::concatWithDelimiter(UgeestDa,"#"),
    TmpDa=string::concat(Da,"#",TempDa),
    UgeDa=split_delimiter(TmpDa,"#"),
Вы преобразуете список в строку с маркерными знаками "#",
затем в начало строки добавляете элемент Do с тем же маркерным знаком и результат затем преобразуете снова в список.
Если предположить, что элемент Do у Вас - обычная строка (не содержащая "#"), то все, что Вы делаете - это добавляете в голову списка строк один строковый элемент. Это имело бы смысл, если бы Вы добавляли бы элемент в хвост списка и не хотели бы использовать предикат, скажем append (в 6.3 он не входит в PFC, его надо прописывать отдельно).
Итак, приведенные три строки заменяются одной
Код:
    UgeDa=[Da|UgeestDa]
Аналогично три строки
Код:
    TempDo=string::concatWithDelimiter(UgeestDo,"#"),
    TmpDo=string::concat(Do,"#",TempDo),
    UgeDo=split_delimiter(TmpDo,"#"),
заменяются одной
Код:
    UgeDo=[Do|UgeestDo]
В результате весь код предиката можно переписать так
Код:
formal([X|R],UgeestDa,UgeestDo,Dano,Dok,Flag):- 
    razbor([X|R],R1,UgeestDa,Da,UgeestDo,Do,Flag,Flag1),
    formal(R1,[Da|UgeestDa],[Do|UgeestDo],Dano,Dok,Flag1). 
formal([],UgeDa,UgeDo,UgeDa,UgeDo,_Flag).
Несмотря на то, компилятор у Вас не ругается и не ворчит, я бы написал бы это более корректно
Код:
formal([],UgeDa,UgeDo,UgeDa,UgeDo,_Flag):-
    !.
formal([X|R],UgeestDa,UgeestDo,Dano,Dok,Flag):- 
    razbor([X|R],R1,UgeestDa,Da,UgeestDo,Do,Flag,Flag1),
    !,
    formal(R1,[Da|UgeestDa],[Do|UgeestDo],Dano,Dok,Flag1).
Здесь пока источника проблемы не видно.

Теперь посмотрим на второй предикат.
Код:
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):-
    string::search(X,"дока")>=0,!.
 razbor([X|R],R1,_UgeestDa,Da,_UgeestDo,"",Flag,Flag):-
    string::search(X,"точка")>=0,!,
    elem(R,Y,R1),!,
    string::frontchar(Y,Ch,St),St="",
    Flag=0,Da=string::concat("tochka(",tostring(Ch),")").
 razbor([X|R],R1,_UgeestDa,"",_UgeestDo,Do,Flag,Flag):-
    Pos=string::search(X,"точка"),!,
    Pos>=0,elem(R,Y,R1),
    string::frontchar(Y,Ch,St),St="",
    Flag=1,Do=string::concat("tochka(",tostring(Ch),")").   
 razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag).
Для начала я причешем его по принципу "один предикат-одна строка"
и немедленно появляется вопрос: зачем два предиката "cat" используются в одном клаузе? Я откомментировал это знаками ???...
Код:
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):- 
    string::search(X,"дока")>=0,
    !. 
razbor([X|R],R1,_UgeestDa,Da,_UgeestDo,"",Flag,Flag):- 
    string::search(X,"точка")>=0,
    !,  %?????????
    elem(R,Y,R1),
    !,  %?????????
    string::frontchar(Y,Ch,St),
    St="", 
    Flag=0,
    Da=string::concat("tochka(",toString(Ch),")"). 
razbor([X|R],R1,_UgeestDa,"",_UgeestDo,Do,Flag,Flag):- 
    Pos=string::search(X,"точка"),
    !, 
    Pos>=0,
    elem(R,Y,R1),
    string::frontchar(Y,Ch,St),
    St="", 
    Flag=1,
    Do=string::concat("tochka(",tostring(Ch),")").    
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag).
Второй вопрос: какой смысл в строке, которая используется у Вас неоднократно.
Код:
string::search(X,"дока")>=0,
Предикат search - детерминированный по своей декларации. У Вас он дает fail, если подстрока "дока" не найдена в строке X, или возвращает позицию, если найден. Позицию Вы здесь не используете, но для убедительности проверяете, что она точно попадает в длину строки (неявно вы пишете Pos>=0). Но это одно и тоже, позиция попадает в длину строки, если подстрока в строке есть и не попадает, если ее там нет. Следовательно,
Код:
string::search(X,"дока")>=0,
можно везде заменить на
Код:
_Pos=string::search(X,"дока"),
Посмотрим на код теперь
Код:
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):- 
    _Pos=string::search(X,"дока"),
    !. 
razbor([X|R],R1,_UgeestDa,Da,_UgeestDo,"",Flag,Flag):- 
    _Pos=string::search(X,"точка"),
    elem(R,Y,R1),
    !,
    string::frontchar(Y,Ch,St),
    St="", 
    Flag=0,
    Da=string::concat("tochka(",toString(Ch),")"). 
razbor([X|R],R1,_UgeestDa,"",_UgeestDo,Do,Flag,Flag):- 
    _Pos=string::search(X,"точка"),
    !, 
    elem(R,Y,R1),
    string::frontchar(Y,Ch,St),
    St="", 
    Flag=1,
    Do=string::concat("tochka(",tostring(Ch),")").    
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag).
Теперь второй и третий клаузы совпадают с точность до положения предиката "cat", но второй исполняется при Flag=0, а третий - при Flag=1. Поэтому можно перенести либо предикат "cat", либо проверку Flag=xxx.

Посмотрим теперь еще раз на текст после его очистки
Код:
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):- 
    _Pos=string::search(X,"дока"),
    !. 
razbor([X|R],R1,_UgeestDa,Da,_UgeestDo,"",Flag,Flag):- 
    Flag=0,
    _Pos=string::search(X,"точка"),
    elem(R,Y,R1),
    string::frontchar(Y,Ch,St),
    St="", 
    !,
    Da=string::concat("tochka(",toString(Ch),")"). 
razbor([X|R],R1,_UgeestDa,"",_UgeestDo,Do,Flag,Flag):- 
    Flag=1,
    _Pos=string::search(X,"точка"),
    elem(R,Y,R1),
    string::frontchar(Y,Ch,St),
    St="", 
    !, 
    Do=string::concat("tochka(",toString(Ch),")").    
razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag).
Усовершенствуем теперь этот текст
Код:
    razbor([X|R],R,_UgeestDa,"",_UgeestDo,"",_Flag,1):- 
        _Pos=string::search(X,"дока"),
        !. 
    razbor(SentenceList,R1,_UgeestDa,Da,_UgeestDo,"",0,0):- 
        extract(SentenceList,R1,Da),
        !.
    razbor(SentenceList,R1,_UgeestDa,"",_UgeestDo,Do,1,1):- 
        extract(SentenceList,R1,Do),
        !.
    razbor([_X|R],R,_UgeestDa,"",_UgeestDo,"",Flag,Flag).

predicates
    extract:(string_List ИсхСписок,string_List ОстатокСписка,string Предикат) determ (i,o,o).
clauses
    extract([X|R],R1,Predicate):-
        _Pos=string::search(X,"точка"),
        elem(R,Y,R1),
        !, % на случай, если elem - фактически недетерминированный
        string::frontchar(Y,Ch,St),
        St="", 
        Predicate=string::concat("tochka(",toString(Ch),")").
Теперь Вам разбираться что здесь так, а что - нет.
Если мои трансформации в чем то ошибочны, то это может быть потому, что я правил Ваш код, не вдаваясь в метод решения задачи, а чисто по формальным признакам.
Цитата:
кстати,я тоже не математик,но мой научный руководитель считает,что реализация метода резолюции дело каждого настоящего программиста
До математики здесь пока не дошло, слава Богу!
Ответить с цитированием
  (#19 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 31.05.2006, 12:40

Цитата:
Originally posted by karna
[b]может,если вам не очень сложно,вы могли бы посмотреть где там логическая ошибка.
Karna, от Вас ждать какой-нибудь реакции?
Я модифицировал Вашу программу, сделал ее более читаемой, чтобы Вы сами увидели бы ее логику и подумали, соответствует ли логика программы логике Вашего предполагаемого решения.
Ответить с цитированием
  (#20 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 31.05.2006, 12:40

Цитата:
Originally posted by karna
[b]может,если вам не очень сложно,вы могли бы посмотреть где там логическая ошибка.
Karna, от Вас ждать какой-нибудь реакции?
Я модифицировал Вашу программу, сделал ее более читаемой, чтобы Вы сами увидели бы ее логику и подумали, соответствует ли логика программы логике Вашего предполагаемого решения.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 10:24

Простите пожалуйста,Victory! просто вчера я забегалась с дипломом,подшивала текст и все прочее,я толком и не заглядывала.а сегодня наконец-то текст диплома сдан.и я вставила вашу версию кода в свой диплом.и о чудо!!!все заработало.вы Великий Шаман ПРОЛОГА!!!

теперь продолжаю дальнейшую разработку программы.будьте уверены,вопросы у меня еще не раз появятся.я ведь не волшебник а только учусьбольшое вам спасибо еще раз за вашу помощь.

а вот кстати и вопрос
помните,я вас спрашивала про открытие файла.так вот,я написала все как вы сказали,а именно

Код:
predicates 
    onFileOpen : window::menuItemListener. 
clauses 
    onFileOpen(_Source, _MenuTag):- 
        FileName=vpiCommonDialogs::getFileName 
                   ( 
                   "*.txt", 
                   ["текстовые файлы","*.txt"], 
                   "Открытие задачи", 
                   [], 
                   "", 
                   _Files 
                   ) 
           !, 
           Str=file::readString(FileName), 
           edit_ctl:setText(Str). 
      onFileOpen(_Source, _MenuTag).
и в моих руках все опять не работает.все та же ошибка.

а хэлп я сколько не читаю,все никак не пойму,что же именно там написано.ну очень-очень у меня плохо с английским.ну пожалуйста если вам не трудно напишите мне как же это должно выглядеть чтоб запускалось!!!
Ответить с цитированием
  (#22 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 10:24

Простите пожалуйста,Victory! просто вчера я забегалась с дипломом,подшивала текст и все прочее,я толком и не заглядывала.а сегодня наконец-то текст диплома сдан.и я вставила вашу версию кода в свой диплом.и о чудо!!!все заработало.вы Великий Шаман ПРОЛОГА!!!

теперь продолжаю дальнейшую разработку программы.будьте уверены,вопросы у меня еще не раз появятся.я ведь не волшебник а только учусьбольшое вам спасибо еще раз за вашу помощь.

а вот кстати и вопрос
помните,я вас спрашивала про открытие файла.так вот,я написала все как вы сказали,а именно

Код:
predicates 
    onFileOpen : window::menuItemListener. 
clauses 
    onFileOpen(_Source, _MenuTag):- 
        FileName=vpiCommonDialogs::getFileName 
                   ( 
                   "*.txt", 
                   ["текстовые файлы","*.txt"], 
                   "Открытие задачи", 
                   [], 
                   "", 
                   _Files 
                   ) 
           !, 
           Str=file::readString(FileName), 
           edit_ctl:setText(Str). 
      onFileOpen(_Source, _MenuTag).
и в моих руках все опять не работает.все та же ошибка.

а хэлп я сколько не читаю,все никак не пойму,что же именно там написано.ну очень-очень у меня плохо с английским.ну пожалуйста если вам не трудно напишите мне как же это должно выглядеть чтоб запускалось!!!
Ответить с цитированием
  (#23 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 01.06.2006, 11:42

Цитата:
вы Великий Шаман ПРОЛОГА!!!
Будете продолжать льстить, отступлюсь!
Цитата:
Originally posted by karna
[b]помните,я вас спрашивала про открытие файла.так вот,я написала все как вы сказали,а именно
Код:
predicates 
    onFileOpen : window::menuItemListener. 
clauses 
    onFileOpen(_Source, _MenuTag):- 
        FileName=vpiCommonDialogs::getFileName 
                   ( 
                   "*.txt", 
                   ["текстовые файлы","*.txt"], 
                   "Открытие задачи", 
                   [], 
                   "", 
                   _Files 
                   ) 
           !, 
           Str=file::readString(FileName), 
           edit_ctl:setText(Str). 
      onFileOpen(_Source, _MenuTag).
и в моих руках все опять не работает.все та же ошибка.
Какая же ошибка? У Вас в этом месте была не одна...
Ответить с цитированием
  (#24 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 01.06.2006, 11:42

Цитата:
вы Великий Шаман ПРОЛОГА!!!
Будете продолжать льстить, отступлюсь!
Цитата:
Originally posted by karna
[b]помните,я вас спрашивала про открытие файла.так вот,я написала все как вы сказали,а именно
Код:
predicates 
    onFileOpen : window::menuItemListener. 
clauses 
    onFileOpen(_Source, _MenuTag):- 
        FileName=vpiCommonDialogs::getFileName 
                   ( 
                   "*.txt", 
                   ["текстовые файлы","*.txt"], 
                   "Открытие задачи", 
                   [], 
                   "", 
                   _Files 
                   ) 
           !, 
           Str=file::readString(FileName), 
           edit_ctl:setText(Str). 
      onFileOpen(_Source, _MenuTag).
и в моих руках все опять не работает.все та же ошибка.
Какая же ошибка? У Вас в этом месте была не одна...
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 11:57

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

просто пока я с вами не встретилась,моя работа вообще стояла на месте.теперь продвигается.

ну вобщем,не знаю что,но когда процедуру запускаю,окошко появляется с ошибкой открытия имени файла
Ответить с цитированием
  (#26 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 11:57

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

просто пока я с вами не встретилась,моя работа вообще стояла на месте.теперь продвигается.

ну вобщем,не знаю что,но когда процедуру запускаю,окошко появляется с ошибкой открытия имени файла
Ответить с цитированием
  (#27 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 01.06.2006, 12:31

Цитата:
Originally posted by karna
[b]ну вобщем,не знаю что,но когда процедуру запускаю,окошко появляется с ошибкой открытия имени файла
А диалог-то FileOpen появляется?

Кстати, Вы о каких-нибудь методах отладки знаете? Хотя бы о примитивном, но надежном - методе трассировочной печати.

Если у Вас в приложении открыто окно "Messages", которое автоматически создается при создании нового проекта с пользовательским интерфейсом, то у Вас есть открытый поток для сообщений, который Вы можете использовать.
Простая строка
Код:
stdio::writef("%n",predicate_Name()),
которую Вы можете вставлять в любое место Вашего кода, будет говорить Вам о достижении соотвествующей точки в Вашей программе.
А эта же строка в видах
Код:
...
stdio::writef("%_1n",predicate_Name()),
...
stdio::writef("%_2n",predicate_Name()),
...
stdio::writef("%_3n",predicate_Name()),
...
будет показывать трассу, которую Вам удалось пройти.
С добавлением имен любых актуальных переменных в виде
Код:
stdio::writef("%_N Переменная=% n",predicate_Name(),Переменная),
Вы сможете видеть значения переменых (в данном случае такой переменной является "Переменная").

Наконец, самый действенный способ отладки - использование стандартного отладчика среды Visual Prolog.

Тогда Ваши вопросы могут стать содержательными, а не эмоциональными, если Вы не найдете на них ответы в процессе трассировки.
Ответить с цитированием
  (#28 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 978
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 01.06.2006, 12:31

Цитата:
Originally posted by karna
[b]ну вобщем,не знаю что,но когда процедуру запускаю,окошко появляется с ошибкой открытия имени файла
А диалог-то FileOpen появляется?

Кстати, Вы о каких-нибудь методах отладки знаете? Хотя бы о примитивном, но надежном - методе трассировочной печати.

Если у Вас в приложении открыто окно "Messages", которое автоматически создается при создании нового проекта с пользовательским интерфейсом, то у Вас есть открытый поток для сообщений, который Вы можете использовать.
Простая строка
Код:
stdio::writef("%n",predicate_Name()),
которую Вы можете вставлять в любое место Вашего кода, будет говорить Вам о достижении соотвествующей точки в Вашей программе.
А эта же строка в видах
Код:
...
stdio::writef("%_1n",predicate_Name()),
...
stdio::writef("%_2n",predicate_Name()),
...
stdio::writef("%_3n",predicate_Name()),
...
будет показывать трассу, которую Вам удалось пройти.
С добавлением имен любых актуальных переменных в виде
Код:
stdio::writef("%_N Переменная=% n",predicate_Name(),Переменная),
Вы сможете видеть значения переменых (в данном случае такой переменной является "Переменная").

Наконец, самый действенный способ отладки - использование стандартного отладчика среды Visual Prolog.

Тогда Ваши вопросы могут стать содержательными, а не эмоциональными, если Вы не найдете на них ответы в процессе трассировки.
Ответить с цитированием
  (#29 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 12:34

спасибо за консультацию.это я знаю.отлаживала.насмотрелась на дебагер.

но не появляется у меня это окошко.я и понятия не имею что мне делать.нет его и все.
Ответить с цитированием
  (#30 (permalink)) Старый
karna karna вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.04.2006
По умолчанию 01.06.2006, 12:34

спасибо за консультацию.это я знаю.отлаживала.насмотрелась на дебагер.

но не появляется у меня это окошко.я и понятия не имею что мне делать.нет его и все.
Ответить с цитированием
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Вопрос. Артём Фирсанов С/С++ 8 19.01.2012 21:49
Вопрос о C++ Артём Фирсанов C++ Builder 16 18.01.2012 17:49
Вопрос по SLI Flastor Разное 2 10.01.2012 23:18
вопрос о бп The22nd Любые вопросы от новичков 3 04.01.2012 20:37
Вопрос по VB Лавр Любые вопросы от новичков 1 03.01.2012 20:25
Вопрос по БП v.seryapov Блоки питания 15 17.12.2011 11:04
Вопрос по HDD les.2007 Любые вопросы от новичков 5 04.12.2011 23:49
Вопрос shinigami17 Видеокарты 1 01.06.2011 15:26
Вопрос по кпк Dram Сотовые телефоны 1 19.12.2008 20:09
Ещё вопрос Krasnoff Pascal 6 24.06.2008 17:15
Вопрос по PHP 4 под IIS 5.0 Anonymous PHP 1 14.11.2002 21:25



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