Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Простая экспертная система, Visual Prolog 8
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
NIKENIT NIKENIT вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.12.2017
По умолчанию Простая экспертная система, Visual Prolog 8 - 16.12.2017, 14:15

Здравствуйте, я только недавно начал знакомство с данным языком, делаю лабораторную работу по написанию простой ИС с использованием GUI в Visual Prolog 8. Возникли несколько вопросов, по которым нагуглить ответы не получилось, можете ли вы помочь?

1) Как возможно реализовать в данном языке возврат к предыдущему вопросу? С retract/assert вроде разобрался, но общий алгоритм придумать не могу.

2) Есть такой код:
prolog Код:
predicates
    begin : ().
clauses
    begin() :-
        stdio::write("Опрос начинается: \n"),
        _QuestionForm = questionForm::display(getParent(), Result),
        describe(Result, Text),
        StringResult = string::concat("Результат работы экспертной системы: \n \n", Text),
        staticText1_ctl:setText(StringResult).

predicates
    describe : (symbol, string [out]) determ.
clauses
    describe("no error", Description) :-
        Description = "Нету ошибки, вуху!".

    describe("Error", Description) :-
        Description = "Ошибка, работа системы была прервана".

Компилятор ругается, что begin - не процедура, а determ. Я понимаю, что это происходит из-за того, что строка describe может завершиться отказом, как это можно исправить?

3) Как возможно реализовать вопрос с множественным выбором в плане алгоритма? Похожий подход в CLIPS реализуется довольно просто, а тут что-то вообще идей нет...
Ответить с цитированием
  (#2 (permalink)) Старый
NIKENIT NIKENIT вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.12.2017
По умолчанию 16.12.2017, 15:22

Второй вопрос разрешился, перечитал туториал и осознал, что я дурак. Первый и третий вопросы все еще очень нужны.
Ответить с цитированием
  (#3 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 16.12.2017, 20:13

Цитата:
Сообщение от NIKENIT Посмотреть сообщение
Как возможно реализовать в данном языке возврат к предыдущему вопросу?
Не надо никуда возвращаться, смысла в этом нет. Надо сохранять в памяти ответы на вопросы и двигаться дальше
Цитата:
Сообщение от NIKENIT Посмотреть сообщение
Как возможно реализовать вопрос с множественным выбором в плане алгоритма?
.Когда ответ получен (например из листбокса), надо обратиться к предикату, который описан клозами, каждый из которых содержит один из возможных вариантов ответа:
Visual Prolog Код:
...
Ответ = listBox_ctl:getSelectedItems(),
Ответ=[T|_],
выбор(T),
...


выбор("Вариант 1"):-...,!.
выбор("Вариант 2"):-...,!.
выбор("Вариант 3"):-...,!.
выбор("Вариант 4"):-...,!.
...
выбор(_):-exception...,!.
...
Ответить с цитированием
  (#4 (permalink)) Старый
NIKENIT NIKENIT вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.12.2017
По умолчанию 16.12.2017, 20:23

Спасибо большое за помощь.

Алгоритм отката назад я вроде-бы как уже придумал, в данный момент его реализую сижу. Это просто одна их необходимых фич.

Насчет вопросов с множественным выбором - спасибо большое за подсказку.

Сейчас возникла другая проблема. Есть ситуация, в ходе которой необходимо заполнить некую переменную данными где-то в глубине класса, и прочитать ее снаружи. В обычном языке программирования я бы воспользовался классовой глобальной переменной, как подобный случай реализовать в VIP? Была идея использовать single fact, но получить доступ к хранимой строке не выходит :(.
Ответить с цитированием
  (#5 (permalink)) Старый
NIKENIT NIKENIT вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.12.2017
По умолчанию 16.12.2017, 20:43

Ок, я идиот, все работает. Иногда нужно попытаться объяснить проблему другому, чтобы самому ее понять...
Ответить с цитированием
Ads.
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Prolog и система контроля версия (помогите составить .gitignore) Drovosek Prolog 3 19.10.2017 10:59
Visual prolog 5.2 экспертная система Dual Prolog 0 28.05.2016 14:50
Простая билинговая система Raziel.eXc Любые вопросы от новичков 0 16.12.2014 09:04
GUI Visual prolog экспертная система DiaDiaDia Prolog 1 24.04.2014 11:37
Важно: Экспертная система на Prolog bhgbx Prolog 4 14.01.2014 00:15
Простая программа на Visual Prolog 5.2 или 7.3 San-ch Prolog 1 11.10.2011 20:08
Экспертная система на pdc prolog или visual prolog Anton7 Prolog 8 12.05.2011 13:39
Простая экспертная система, помогите пожалуйста! fear_demon Prolog 12 11.04.2011 09:58
Самая простая задачка на Visual Prolog 7.2 esprit_bel Prolog 5 12.10.2010 09:15
эксперткая система о рыбах visual prolog 5.2 imprezZza Prolog 0 31.05.2010 14:52
Экспертная система на Visual Prolog Roman_Pro Prolog 0 02.04.2008 16:02
Простая задача на дизъюнкцию в Visual Prolog. Помогите! imported_BAAL Prolog 3 30.03.2005 11:44



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