Различия кода на vp5.1 и vp7.3.
Для вывода сообщения в VP5.1 использовался системный предикат write, вVP7.3 необходимо использовать конструкцию stdIO::write; если подключить в область видимостиconsol, то stdIO:: можно не писать.
Чтобы получить значение переменной, введенное пользователем с клавиатуры в VP5.1 использовалась конструкцияreadreal(),reading() и т.п.
readreal(Davl) %ввод давления
В VP7.3 используется другая конструкция: Davl = read() %ввод давления
В VP5.1 для объявления прототипов фактов и названия правил использовался раздел программы PREDICATES:
PREDICATES
болезнь(название, температура, боль_в_горле, давление, пульс)
start
В VP7.3 для этих целей используется разделCLASSFACTS:
class facts болезнь : (название, температура, боль_в_горле, давление, пульс).
Как видете, описание start здесь отсутствует; после описания прототипа необходимо ставить точку, а после названия прототипа ставить двоеточие.
Конструкция run():-init(), в разделе clauses, обязательна.
Листинг программы на Visual Prolog 7.3:
implement main
open core,console
constants
className = "main".
classVersion = "".
domains
название=string.
температура=real.
боль_в_горле=symbol.
давление=real.
пульс=integer.
class facts
болезнь : (название, температура, боль_в_горле, давление, пульс).
clauses
classInfo(className, classVersion).
болезнь("Здоров", 36.6, "есть", 120, 70).
болезнь("Простуда",37,"есть",120, 70).
болезнь("Грипп",39,"есть", 120, 70).
болезнь("Отравление",39, "нет", 150, 120).
болезнь("Солнечный удар",38,"нет",150, 100).
clauses
run():-init(),
write("Критерии для поиска"),nl,
write("Введите давление - "),Davl = read(),
write("Введите температуру - "),Temp = read(),
clearInput(),
болезнь (Name,Temp,Bol_v_Gorle,Davl, Puls),
nl,write("Название: "), write(Name),
nl,write("Температура: "), write(Temp),
nl,write("Боль в горле: "), write(Bol_v_Gorle),
nl,write("Давление: "), write(Davl),
nl,write("Пульс: "), write(Puls),nl, !,
_=readchar();
write("Такой болезни еще нет )"),nl,
_=readchar().
end implement main
goal
mainExe::run(main::run).
