Аватар для Irina1094
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 14

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

28.11.2014, 09:08. Показов 4236. Ответов 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)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2014, 09:08
Ответы с готовыми решениями:

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains st=st(string,real,real,real,real) st1=st1(string,real) ...

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

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

3
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
28.11.2014, 14:26
Лучший ответ Сообщение было отмечено Irina1094 как решение

Решение

Вот протокол необходимых изменений:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 минут
Можно обойтись гораздо меньшими правками.
Файловый домен вообще не нужен, его можно убрать.
А базу можно не именовать, а просто сделать глобальной:
Code
1
2
3
4
5
6
7
8
9
diff base-dogs-org.pro base-dogs.pro
9c9
< file=myfile
---
> %file=myfile
11c11
< DATABASE
---
> GLOBAL FACTS
Добавлено через 1 минуту
Если файловый домен вообще не трогать, тоже всё работает:
Code
1
2
3
4
5
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  [ТС]
Спасибо большое, только я не совсем поняла, что значат "8a9,10", "98c100", к примеру, эти цифры.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
28.11.2014, 19:59
Извините, не подумал.. Изложу проще:

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

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

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

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

После заголовка идут сами строки, строки входного файла с префиксом "< ", строки выходного файла с префиксом "> "
При замене есть и те, и другие, они для наглядности разделяются строкой "---"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2014, 19:59
Помогаю со студенческими работами здесь

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

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

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

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

Turbo prolog 2.0 - > Visual Prolog 8
Помогите перевести код из турбо в вижуал 8 задачу о козе, волке и капусте domains slist=string* state=wgc(string, slist,...


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

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

Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru