Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Взаимодействие PROLOG и NetBeans IDE 7.1.1
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 23.10.2017, 00:13

Цитата:
Сообщение от ayax Посмотреть сообщение
Если также можно поступить в SWI Prolog, то просьба подсказать как это сделать
Примерно так:

Файл test.pl
prolog Код:
main :-
  write('Hello World'),
  nl,
  halt.

:-main.

Строка запуска:
Код:
"C:\Program Files (x86)\swipl\bin\swipl.exe" -q test.pl
Миниатюры
swi-hw.jpg  

Последний раз редактировалось Alexiski; 23.10.2017 в 00:32
Ответить с цитированием
  (#17 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 23.10.2017, 03:52

Compiler Name - "C:\Program Files\swipl\bin\swipl.exe"
Compiler Arguments - пустая
При нажатии кнопки <Compile Prolog file>
появилось следующее сообщение:

Output of running "C:\Program Files\swipl\bin\swipl.exe" C:\PROLOG\helloWorld\src\test.pl is:

Hello World


На данный момент я доволен ...
Ответить с цитированием
  (#18 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 23.10.2017, 17:18

А у меня почему-то эта тема сломалась.. Никак не могу перейти на вторую страницу..
Ответить с цитированием
  (#19 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 23.10.2017, 19:30

Винитарх, из темы, которую я благополучно слил
Немного видоизменённый код:
prolog Код:
zamena(1000, 'M', 1).
zamena(900, 'CM', 2).
zamena(500, 'D', 1).
zamena(400, 'CD', 2).
zamena(100, 'C', 1).
zamena(90, 'XC', 2).
zamena(50, 'L', 1).
zamena(40, 'XL', 2).
zamena(10, 'X', 1).
zamena(9, 'IX', 2).
zamena(5, 'V', 1).
zamena(4, 'IV', 2).
zamena(1, 'I', 1).

arab_rim(0,''):-!.
arab_rim(A,R):- zamena(A1,R1,_), A2 is A-A1, A2>=0,
        arab_rim(A2,R2), string_concat(R1,R2,R).
   
rim_arab(R,0):- string_to_atom(R,''),!.
rim_arab(R,A):- (zamena(A1,R1,2),string_concat(R1,R2,R);
                 zamena(A1,R1,1),string_concat(R1,R2,R)),!,
                 rim_arab(R2,A2), A is A1+A2.
Если выполнять файл в NetBeans именно с таким содержимым, то среда
"намертво" зависает - <Ctrl Alt Del> и всё тут ...
Как надо изменить код (что добавить, наверное ...), чтобы он работал ...
Ответить с цитированием
  (#20 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,965
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 23.10.2017, 21:24

Цитата:
Сообщение от ayax Посмотреть сообщение
Если выполнять файл в NetBeans именно с таким содержимым, то среда "намертво" зависает
В SWI всё работает. Почему зависает NetBeans я не знаю и с ним никогда не работал.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 24.10.2017, 00:24

Обратите внимание, что мой скрипт устроен хитро:
1) Он содержит явно указанную цель:
prolog Код:
:-main.
2) Выполнение цели заканчивается явно заданным вызовом halt
Оба эти условия могут оказаться выжными
Ответить с цитированием
  (#22 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,965
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 24.10.2017, 01:03

Цитата:
Сообщение от Alexiski Посмотреть сообщение
Оба эти условия могут оказаться важными
Ага. Скорее всего SWI не нашёл цель, т.к. её и не было. Спасибо. Тогда так:
prolog Код:
zamena(1000, 'M', 1).
zamena(900, 'CM', 2).
zamena(500, 'D', 1).
zamena(400, 'CD', 2).
zamena(100, 'C', 1).
zamena(90, 'XC', 2).
zamena(50, 'L', 1).
zamena(40, 'XL', 2).
zamena(10, 'X', 1).
zamena(9, 'IX', 2).
zamena(5, 'V', 1).
zamena(4, 'IV', 2).
zamena(1, 'I', 1).

arab_rim(0,''):-!.
arab_rim(A,R):- zamena(A1,R1,_), A2 is A-A1, A2>=0,
        arab_rim(A2,R2), string_concat(R1,R2,R).
   
rim_arab(R,0):- string_to_atom(R,''),!.
rim_arab(R,A):- (zamena(A1,R1,2),string_concat(R1,R2,R);
                 zamena(A1,R1,1),string_concat(R1,R2,R)),!,
                 rim_arab(R2,A2), A is A1+A2.

:- arab_rim(27,R), write(R),nl,
   rim_arab('38',G), write(G),nl,
   halt.
Ответить с цитированием
  (#23 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 24.10.2017, 12:03

Винитарх, код работает, спасибо ...
Среда зависала из за моей оплошности
(не всё написал, то что надо было ...)
Ответить с цитированием
  (#24 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 24.10.2017, 12:13

Да, и rim_arab('38',G) - явная очепятка
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,965
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 24.10.2017, 13:53

Цитата:
Сообщение от ayax Посмотреть сообщение
Да, и rim_arab('38',G) - явная очепятка
А ну да. Надо rim_arab('XXXVIII',G)
Полночь притомила меня.
Ответить с цитированием
  (#26 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 24.10.2017, 15:14

prolog Код:
fib(0,0).
fib(1,1).
fib(2,1).
fib(N,F) :-    
  N > 2,
  N1 is N - 1,
  N2 is N - 2,
  fib(N1,F1),
  fib(N2,F2),
  F is F1 + F2.
:- fib(6, F), write(" N = "), write(N), write(" ===> "), write(" fib = "), write(F), nl, halt.
При нажатии на кнопку выдается следующее:
Output of running "C:\Program Files\swipl\bin\swipl.exe" C:\PROLOG\helloWorld\src\fibonachi.pl is:

Warning: c:/prolog/helloworld/src/fibonachi.pl:13:
Singleton variables: [N]
N = _G2025 ===> fib = 8


Как изменить код чтобы:

N = 6 ===> fib = 8
Ответить с цитированием
  (#27 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,965
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 24.10.2017, 15:46

prolog Код:
fib(0,0).
fib(1,1).
fib(2,1).
fib(N,F) :-    
  N > 2,
  N1 is N - 1,
  N2 is N - 2,
  fib(N1,F1),
  fib(N2,F2),
  F is F1 + F2.
:- N is 6, fib(N, F), write(" N = "), write(N), write(" ===> "), write(" fib = "), write(F), nl, halt.
Ответить с цитированием
  (#28 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 24.10.2017, 18:56

И последняя на сегодня просьба - мне нужен такой код, чтобы он в цикле запрашивал
ввод с клавиатуры, вычислял fib, выводил результат на экран, и заканчивал цикл при вводе "n" ...
Ответить с цитированием
  (#29 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,965
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 25.10.2017, 00:55

Выход по нулю:
prolog Код:
fib(1,1).
fib(2,1).
fib(N,F) :-    
  N > 2,
  N1 is N - 1,
  N2 is N - 2,
  fib(N1,F1),
  fib(N2,F2),
  F is F1 + F2.
ppp:- read(N), N>0,!, fib(N, F), write(' N = '), write(N), write(' ===> '), write(' fib = '), write(F), nl, ppp.
ppp:- write(' End '),halt.
:- ppp.
Ваша рекурсия неоптимизирована. Лучше пользоваться той, что я приводил ранее в этой теме.
Ответить с цитированием
  (#30 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 26.10.2017, 11:39

prolog Код:
fib(0, 0). fib(1, 1). fib(2, 1).
fib(N, F) :-    
  N > 2,
  N1 is N - 1, N2 is N - 2,
  fib(N1, F1),  fib(N2, F2),
  F is F1 + F2.
:- write(" N = "), read(N), nl, fib(N, F), write(" N = "), write(N),
write(" ===> "), write(" fib = "), write(F), nl, halt.
При выполнении кода выдаётся следующее:
N = 9
|:

Как надо исправить код ...
И из программы перевода чисел -
prolog Код:
:- Arab is 3497, arab_rim(Arab, Rim), write(" Arab = "), write(Arab), write(" ===> "),
                                      write(" Rim = " ), write(Rim), nl,
   Rim is "XX",  rim_arab(Rim, Arab), write(" Rim = " ), write(Rim),  write(" ===> "),
                                      write(" Arab = "), write(Arab), nl, halt.
При выполнении -
Arab = 3497 ===> Rim = MMMCDXCVII
ERROR: c:/prolog/helloworld/src/rimarab.pl:23:
is/2: Type error: `[]' expected, found `"XX"' (a string) ("x" must hold one character)
Warning: c:/prolog/helloworld/src/rimarab.pl:23:

Почему не воспринимается "XX"
Ответить с цитированием
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка NetBeans Tenass Java 0 19.03.2016 18:56
Проблема установки Sun Java ME SDK 3.0 и NetBeans 7.0.1 X-Cite_Forever Java 5 10.10.2011 11:02
Вызов EJB из модуля NetBeans Niko1ay Java 0 05.10.2011 11:29
Книги Монахова Вадима по Java и среда NetBeans. turtles Java 1 23.09.2011 21:14
Редактор SVG-интерфейсов для j2me-миделтов в NetBeans kivi-kivi J2ME 0 22.09.2011 18:23
Суммирование матриц в NetBeans как реализовать katja317 Java 1 10.06.2011 13:17
Написание программы с географическими координатами на Jave.NetBeans IDE 6.9.1 Lenk Вопросы начинающих программистов 0 12.12.2010 18:44
NetBeans как установить правильно Areostar Java 4 12.10.2009 11:55
взаимодействие swi-prolog с ini-файлами toshkaexe Prolog 0 14.03.2008 14:29
Взаимодействие dll и dll библиотек mark_skif C++ Builder 1 09.09.2005 21:06
BPL-модули и их взаимодействие perunir C++ Builder 0 02.03.2005 17:31
Межпроцессное взаимодействие c++ С/С++ 2 01.03.2005 15:46



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