Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Irina1094
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 14
1

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog

28.11.2014, 09:08. Просмотров 1532. Ответов 3
Метки нет (Все метки)

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
DOMAINS
l_i=integer*
l_s=string*
i=integer
s=string
c=char
structura=str(i,s) %Структура Порода-Параметры и его список
l_str=structura*
file=myfile
 
DATABASE
rule(s,l_i)
cond(structura)
 
PREDICATES
nondeterm repeat %Создание цикла
nondeterm expert %Главный предикат
nondeterm make_menu
nondeterm process(c)
nondeterm load_basa
nondeterm save_basa
nondeterm clear_basa
nondeterm consulting(s,l_str,l_i)
nondeterm transform(c,c) %Преобразование символов
nondeterm add_list(c,i,l_i,l_i) %Добавление элемента к списку
nondeterm find_poroda(s,l_i) %Поиск породы собаки
nondeterm ravno(l_i,l_i) %Проверка равенства списков
nondeterm belong(i,l_i) %Проверка принадлежности элемента списка
nondeterm title %Заголовок экспертной системы
 
CLAUSES
%Создание меню
expert:- title, load_basa,
make_menu, save_basa, clear_basa.
make_menu:- repeat,
write("***********************************************"),nl,nl,
write("Выберите один из пунктов меню:"),nl,nl,
write("1. Консультация."),nl,
write("2. Просмотр базы знаний."),nl,
write("3. Добавление нового знания."),nl,
write("4. Удаление знаниня."),nl,
write(""),nl,
write(" 0 - Выход."),nl,nl,
write("***********************************************"),nl,nl,
readchar(C), process(C),!.
 
%Консультция
process('1'):- save_basa, clear_basa, load_basa,
nl,write(""),nl,
findall(Str,cond(Str),List),
consulting(" ",List,Cond),
find_poroda(Poroda,Cond),
nl,write(" ",Poroda),nl,nl,
make_menu.
 
%Просмотр базы знаний
process('2'):- save_basa, clear_basa, load_basa,
existfile("BasaZnanij.pro"),
file_str("BasaZnanij.pro",Str),
write(Str),nl,
make_menu.
 
%Добавление нового знания
process('3'):- save_basa, clear_basa, load_basa,
nl,write(" Введите название породы собаки для добавления: "),
readln(Poroda),nl,
findall(Str,cond(Str),List),
consulting(Poroda,List,Cond),
assertz(rule(Poroda,Cond)),nl,nl,
write("Добавление прошло успешно."),nl,nl,
make_menu;
nl,write("Ошибка при вводе!!!"),
make_menu.
 
%Удаление знания
process('4'):- save_basa, clear_basa, load_basa,
nl,write("Введите название породы собаки для удаления: "),
readln(Poroda),nl,
retract(rule(Poroda,_)),
write("Удаление прошло успешно !"),nl,nl,
make_menu;
nl,write("Ошибка при вводе !!!"),nl,nl,
make_menu.
 
%Выход
process('0'):-write("Выйти из программы??? (y/n) "),
readln(Ans),
upper_lower(Ans,Ans1),
frontchar(Ans1,'y',_),!.
process(_):-
write("Ошибка при вводе."),nl,!.
repeat.
 
%Ошибка при загрузке
repeat:-repeat.
load_basa:-consult("BasaZnanij.pro"),!.
load_basa:-write(" Ошибка при загрузке правил из файла!").
save_basa:-save("BasaZnanij.pro").
title:-write("***************ЭКСПЕРТНАЯ СИСТЕМА***************"),nl,
write("**********ОПРЕДЕЛЕНИЕ ПОРОДЫ СОБАК*********"),nl,nl.
clear_basa:- retractall(rule(_,_)),
retractall(cond(_)).
 
%Консультация
consulting(_,[],[]).
consulting(Poroda,[str(N,Cond)|T1],List1):-
nl,
write(Cond,"? (д/н)"),nl,
readchar(Answer1),
write(Answer1),
transform(Answer1,Answer2),
consulting(Poroda,T1,List2),
add_list(Answer2,N,List2,List1),!.
 
%Преобразование сомволов
transform('д','y').
transform('Д','y').
transform('Y','y').
transform('y','y').
transform('1','y').
transform(_,'n').
 
%Поиск породы, сравнение равенства списков
add_list('y',H,T,[H|T]):-!.
add_list(_,_,List,List).
find_poroda(Str,Cond1):-
rule(Poroda,Cond2),
ravno(Cond1,Cond2),
ravno(Cond2,Cond1),
concat(Poroda," является искомой породой собаки.",Str),!.
find_poroda("Извините, но соответствующей параметрам породы не найдено на нашей планете :(",_).
ravno([],_).
 
%Проверка принадлежности элемента
ravno([H|T],L):- belong(H,L), ravno(T,L).
belong(El,[El|_]).
belong(El,[H|T]):- El<>H,
belong(El,T).
 
GOAL
expert.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 09:08
Ответы с готовыми решениями:

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains...

Как переделать программу написанную на Turbo-Prolog в SWI-Prolog?
Ребята подскажите пожалуйста как переделать эту программу написанную на Turbo-Prolog в SWI-Prolog?...

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что...

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 7.3 turbo prolog: ...

3
Black Fregat
3047 / 1655 / 469
Регистрация: 31.05.2009
Сообщений: 5,846
28.11.2014, 14:26 2
Лучший ответ Сообщение было отмечено Irina1094 как решение

Решение

Вот протокол необходимых изменений:
Код
diff base-dogs-org.pro base-dogs.pro
8a9,10
> 
> GLOBAL DOMAINS
11c13
< DATABASE
---
> FACTS - main
96c98
< load_basa:-consult("BasaZnanij.pro"),!.
---
> load_basa:-consult("BasaZnanij.pro", main),!.
98c100
< save_basa:-save("BasaZnanij.pro").
---
> save_basa:-save("BasaZnanij.pro", main).
Добавлено через 8 минут
Можно обойтись гораздо меньшими правками.
Файловый домен вообще не нужен, его можно убрать.
А базу можно не именовать, а просто сделать глобальной:
Код
diff base-dogs-org.pro base-dogs.pro
9c9
< file=myfile
---
> %file=myfile
11c11
< DATABASE
---
> GLOBAL FACTS
Добавлено через 1 минуту
Если файловый домен вообще не трогать, тоже всё работает:
Код
diff base-dogs-org.pro base-dogs.pro
11c11
< DATABASE
---
> GLOBAL FACTS
1
Irina1094
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 14
28.11.2014, 18:52  [ТС] 3
Спасибо большое, только я не совсем поняла, что значат "8a9,10", "98c100", к примеру, эти цифры.
0
Black Fregat
3047 / 1655 / 469
Регистрация: 31.05.2009
Сообщений: 5,846
28.11.2014, 19:59 4
Извините, не подумал.. Изложу проще:

Первый протокол разбирать не буду.
Второй протокол - строку 9 целиком комментируем, в строкe 11 изменяем "DATABASE" на "GLOBAL FACTS".
Третий протокол - только в строкe 11 изменяем "DATABASE" на "GLOBAL FACTS".

Если таки интересно..
Это стандартный формат выдачи линуксовой команды diff

Каждый найденный кусочек расхождения двух файлов начинается с такого заголовочка:
<номера строк исходного файла><действие><номера строк выходного файла>

8a9,10 -> "а" - это вставка, после 8 строки исходного файла вставляются строки 9,10 выходного файла
98c100 -> "c" - это замена, 98 строка исходного файла изменяется, получается 100 строка выходного файла

После заголовка идут сами строки, строки входного файла с префиксом "< ", строки выходного файла с префиксом "> "
При замене есть и те, и другие, они для наглядности разделяются строкой "---"
0
28.11.2014, 19:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2014, 19:59

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 5.2 turbo prolog: ...

Как переделать программу из Turbo Prolog в обычный?
Доброго времени суток! Нужно переделать программу из Turbo Prolog в обычный. Пробовал убирать...

Turbo Prolog -> Visual Prolog
Всем привет! Помогите переделать маленький код с Turbo Prolog в Visual Prolog. Задача была...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.