Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Выполнение предиката в goal ИЛИ как в 1 проекте решать несколько задач?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Drovosek Drovosek вне форума
Member
 
Сообщений: 20
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.09.2017
По умолчанию Выполнение предиката в goal ИЛИ как в 1 проекте решать несколько задач? - 13.09.2017, 18:41

Делаю задания из Части V учебника "Современное логическое программирование на языке Visual Prolog 7.5".
Хочется задания из одной главы делать в одном проекте.

Решил, что каждое новое задание буду делать в новом предикате.
Т.е. вместо run() :- ... . Сделаю вот такую конструкцию
prolog Код:
implement main
    open core, console, string

clauses
    task311():-write("1"),nl, _=readChar().
    task312():-write("2"),nl, _=readChar().
    task313():-write("3"),nl, _=readChar().
    task314():-write("4"),nl, _=readChar().
    task315():-write("5"),nl, _=readChar().
end implement main

goal
    console::run(main::task311).
Предположим, что в каждом task31x идёт выполнение какого-либо задания и я хочу просматривать выполнение конкретного задания, подставляя имя соответствующего предиката в конец всего текста вместо "run".
Но при таком запуске появляются ошибки (скриншот прикрепил).
Часть ошибок связана с тем, что непродеклалированны новые предикаты, а часть с тем, что в файле main.cl программа запускается "через" предикат run, а не тот, который я подставил.

Внимание, вопросы))
1. Как устранить ошибки и как запускать компиляцию не с предиката "run"?
ИЛИ
2. Как в одном проекте выполнять несколько заданий (не удаляя и не комментируя предыдущие)?

P.S.
Форум почему-то сжимает мой png скрин, который весит 80 КБ в jpg картинку и уменьшает размер в раз 5. Поэтому залил картинку на сторонний хостинг:
i1.imageban.ru/out/2017/09/13/fe1e8d24b87dd1502d27b4e15aa0f881.png

P.P.S.
по нормальному вставить не получилось, т.к. не набрал 20 сообщений.
Миниатюры
11.jpg  
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,849
Сказал(а) спасибо: 2
Поблагодарили 285 раз(а) в 285 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 13.09.2017, 20:15

Visual Prolog Код:
implement main
    open core, console, string

clauses
    task311():-write("1"),nl, _=readChar().
    task312():-write("2"),nl, _=readChar().
    task313():-write("3"),nl, _=readChar().
    task314():-write("4"),nl, _=readChar().
    task315():-write("5"),nl, _=readChar().

run:-task313().   % <- здесь менять запускаемые предикаты

end implement main

goal
    console::run(main::run).

Если же убить предикат run, то тогда придётся менять декларацию в файле main.cl.
Ответить с цитированием
Пользователь сказал cпасибо:
Drovosek (13.09.2017)
  (#3 (permalink)) Старый
Drovosek Drovosek вне форума
Member
 
Сообщений: 20
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.09.2017
По умолчанию 13.09.2017, 20:23

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Visual Prolog Код:
implement main
    open core, console, string

clauses
    task311():-write("1"),nl, _=readChar().
    task312():-write("2"),nl, _=readChar().
    task313():-write("3"),nl, _=readChar().
    task314():-write("4"),nl, _=readChar().
    task315():-write("5"),nl, _=readChar().

run:-task313().   % <- здесь менять запускаемые предикаты

end implement main

goal
    console::run(main::run).

Если же убить предикат run, то тогда придётся менять декларацию в файле main.cl.
Запустил ваш код, вылезла ошибка. Ругается, что нет скобок возле 'run"
Код:
e535		Missed obligatory parentheses when using the nullary function or in the head of the nullary predicate (fact) 'run'
Добавил скобки после 'run'. Полезли ошибки о том, что незадекларированны предыдущие предикаты.
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,849
Сказал(а) спасибо: 2
Поблагодарили 285 раз(а) в 285 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 13.09.2017, 20:29

Конечно их надо декларировать. Я показал только идею.
Ответить с цитированием
  (#5 (permalink)) Старый
Drovosek Drovosek вне форума
Member
 
Сообщений: 20
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.09.2017
По умолчанию 13.09.2017, 20:51

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Конечно их надо декларировать. Я показал только идею.
Вот так правильно?

Visual Prolog Код:
implement main
    open core, console, string

class predicates
    task311 : ().
    task312 : ().
    task313 : ().
    task314 : ().
    task315 : ().

clauses
    task311():-write("1"),nl, _=readChar().
    task312():-write("2"),nl, _=readChar().
    task313():-write("3"),nl, _=readChar().
    task314():-write("4"),nl, _=readChar().
    task315():-write("5"),nl, _=readChar().

run() :- task313().   % <- здесь менять запускаемые предикаты

end implement main

goal
    console::run(main::run).
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,849
Сказал(а) спасибо: 2
Поблагодарили 285 раз(а) в 285 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 13.09.2017, 21:03

Правильно, но только именно для такой реализации предикатов. Для других предикатов могут быть свои режимы детерминизма и шаблоны потоков параметров.
Ответить с цитированием
Пользователь сказал cпасибо:
Drovosek (13.09.2017)
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не знаю как решать...HELP!!! TIGRA-9ZH C++ Builder 3 28.06.2013 08:16
не знаю как решать Tolian92 Pascal 2 12.12.2011 00:30
Помогите решить несколько задач!!!!!!! Masha11 Prolog 5 13.01.2011 10:56
Задачи на списки и рекурсию, Несколько задач, очень нужны Shura Prolog 6 05.01.2010 14:55
Помогите решить несколько задач lifter-smr Prolog 2 11.12.2009 16:30
Помогите сделать несколько задач, очень нужно! Аня87 Prolog 14 27.10.2009 23:44
Помогите решить несколько простых задач в Турбо Прологе! kbyaroslavl Prolog 0 15.05.2009 12:09
Как из проги очистить экран в базовом режиме "Test Goal diesel_den Prolog 2 03.05.2006 11:35
Как решать задачи на С++ paspartu Вопросы начинающих программистов 1 04.05.2005 17:31
Как вывести в окно messages результат работы goal Anonymous Prolog 29 05.01.2004 18:55
Помогите решить несколько задач по паскалю Anonymous Вопросы начинающих программистов 0 15.12.2003 17:35



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