Название: Логические задачи на языке программирования Prolog
Вид работы: реферат
Рубрика: Информатика
Размер файла: 24.63 Kb
Скачать файл: referat.me-133716.docx
Краткое описание работы: http://monax.ru/order/ - рефераты на заказ (более 2300 авторов в 450 городах СНГ). Логические задачи на языке программирования Prolog Задание 1. Ввести предложенный текст программы, реализовать ее и записать на диск.
Логические задачи на языке программирования Prolog
Логические задачи на языке программирования Prolog
Задание 1.
1. Ввести предложенный текст программы, реализовать ее и записать на диск.
predicates
hello.
goal
hello.
clauses
hello:-
makewindow(1,7,7,"Мояперваяпрограмма",4,56,14,22),
nl, write("Введитевашеимя,n","затемнажмите Enter."),
cursor(4,6),
readln(Name),nl,
write("Добро пожаловатьn в PDC Prolog,n","",Name,"!").
Результат: Добро пожаловать в PDCProlog, Vladimir!
2. Умышленно ввести опечатки в текст программы и ознакомиться с сообщениями об этих опечатках, исправить их.
predicates
hello.
goal
hello.
clauses
hello:-
makewindow(1,7,7,"Моя первая программа",4,56,14,22)
nl, write("Введите ваше имя,n","затем нажмите Enter."),
cursor(4,6),
readln(Name)nl,
write("Добро пожаловатьn в PDC Prolog,n",",Name,!").
Результат: 423 Syntaxeror.
Задание 2.
Реализовать программу с вводом перечисленных ниже целей и проверить получаемые результаты. Цели внешние.
predicates
book(symbol,symbol,symbol,integer).
clauses
book("Фигурнов В.Э.","IBM PC для пользователя","ФиС",1988).
book("Петухов О.А.","Проектирование ОРБД","Судостроение",1984).
book("Петухов О.А.","Объектно-реляционные модели данных","СЗПИ",1987).
book("Петухов О.А.","Моделирование СМО","СЗПИ",1989).
book("Петухов О.А.","PDC Prolog","СЗПИ",2000).
book("Анкудинов Г.И.","Теория автоматов","СЗПИ",1997).
book("Николаев В.И.","Дискретные структуры","СЗПИ",1999).
Результат: X= Proektirovanie OR BD, Y=SUDOSTROENIE, Z=1984
X=Object models of DATA, Y=SZPI, Z=1987
X=Modelirovanie CMO, Y=SZPI, Z=1989
X=PDC Prolog, Y=SZPI, Z=2000
4 Solutions
X= Proektirovanie OR BD
X=Object models of DATA
X=Modelirovanie CMO
X=PDC Prolog
4 Solutions
E=Petuchov O.A., X=Object models of DATA, Z=1987
E=Petuchov O.A., X=Modelirovanie CMO, Z=1989
E=Petuchov O.A., X= PDC Prolog, Z=2000
E=Ankudinov G.I., X=Automat theory, Z=1997
E=Nikolaev V.I., X=Diskretniye struktury, Z=1999
5 Solutions
Задание 3.
Реализовать программу с вводом всех перечисленных внешних целей и проверить получаемые результаты:
domains
name=symbol
year_in, year_out = integer
predicates
parents(name,name)
woman(name)
man(name)
offspring(name,name)
father(name,name)
mother(name,name)
parent_parents(name,name)
brother(name,name)
grandfather(name,name)
grandmother(name,name)
emperor(name,year_in,year_out)
emperor_was(name,integer)
clauses
parents("Петр III","Павел I").
parents("Екатерина II","Павел I").
parents("Павел I","Александр I").
parents("Павел I","Николай I").
parents("Николай I","Александр II").
parents("Александр II","Александр III").
parents("Александр III","Николай II").
woman("Екатерина II").
man("Петр III").
man("Павел I").
man("Алексндр I").
man("Николай I").
man("Александр II").
man("Александр III").
man("Николай II").
offspring(Y,X):-parents(X,Y).
father(X,Y):-parents(X,Y),man(X).
mother(X,Y):-parents(X,Y),woman(X).
parent_parents(X,Z):-parents(X,Y),parents(Y,Z).
brother(X,Y):-parents(Z,X),parents(Z,Y),man(X),X<>Y.
grandfather(X,Y):-father(X,Z),father(Z,Y).
grandmother(X,Y):-mother(X,Z),father(Z,Y).
emperor("Петр III",1761,1762).
emperor("Екатерина II",1762,1796).
emperor("Павел I",1796,1801).
emperor("Александр I",1801,1825).
emperor("Николай I",1825,1855).
emperor("Александр II",1855,1881).
emperor("Александр III",1881,1894).
emperor("Николай II",1894,1917).
emperor_was(X,Y):-emperor(X,A,B),Y>=A,Y<=B.
Результат: Y=aleksandr I X=petr III, A=1761, B=1762 X=pavel I
1 Solution X=ekaterina II, A=1762, B=1769 1 Solution
X=pavel I, A=1796, B=1801
X=aleksandr I, A=1801, B=1825
X=nikolay I, A=1825, B=1855
X=aleksandr II, A=1855, B=1881
X=aleksandr III, A=1881, B=1894
X=nikolay II, A=1894, B=1917
8 Solutions
Задание 4.
1. Реализовать приведенную программу:
domains
name=symbol
predicates
star(name)
planet(name)
revolve(name,name)
satellite(name,name).
goal
satellite(X,"Марс"),
write(X," спутник Марса."),
nl.
clauses
star("Солнце").
planet("Земля").
planet("Марс").
revolve("Земля","Солнце").
revolve("Марс","Солнце").
revolve("Луна","Земля").
revolve("Фобос","Марс").
revolve("Деймос","Марс").
satellite(X,Y):-planet(Y),revolve(X,Y).
Результат: Фобос спутник Марса.
2. Написать и реализовать программу установления родственных связей: Василий имеет дочь Ольгу, у которой два сына Михаил и Максим. Использовать внешние и внутренние цели.
domains
name=symbol
predicates
men(name)
mama(name)
sons(name,name)
doughter(name,name)
deda(name,name)
brother(name,name).
goal
doughter(Z,Y),
write(Z,Y),
nl.
clauses
men(“Vaciliy”).
men(“Michail”).
men(“Maxim”).
mama(“Olga”).
sons(“Michail”,”Olga”).
sons(“Maxim”,”Olga”).
doughter(“Olga”,”Vasiliy”).
deda(X,Y) :--men(X),men(Y),sons(X,Y),doughter(Z,Y).
brother(X,Y) :--men(X),men(Y), sons(X,Z),sons(Y,Z),X<>Y.
Результат: Olga, Vaciliy
Задание 5.
1. Реализовать следующую программу: Получить псевдослучайные вещественные числа в диапазоне от 0 до 1.
goal
random(X),
Z=X,
write("Псевдослучайное вещественное число от 0 до 1 : ",Z),
nl.
Результат: 0,64823988962
2. Получить случайные целые числа в диапазоне от 0 до 10 и от 10 до 35.
goal
random(10,X),
Z=X,
write("Псевдослучайное вещественное число от 0 до 10 : ",Z),
nl.
Результат: 5
goal
random(25,X),
Z=X++10,
write("Псевдослучайное вещественное число от 10 до 35:,Z),
nl.
Результат: 21
Задание 6.
1.
![]() |
Реализовать приведенную пргограмму для вычисления
goal
write("X = "),
readint(X),
nl,
write("K = "),
readreal(K),
nl,
Z=exp(sin(X))+sqrt(K+X*X),
write("Z = ",Z).
Результат: X=5, K=16, Z=6,7864292326
2. В режиме калькулятора вычислить X = (2 + 5) * 3,4, т.е. вводя значения 2, 5, 3.4 с клавиатуры.
goal
write("X = "),
readint(X),
nl,
write("K = "),
readint(K),
nl,
write(“N= “),
readreal(N),
nl
Z=(X+K)*N,
write("Z = ",Z).
Результат: 23,8
Задание 7.
- Реализовать приведенную программу с внешней связью, выполнив все четыре арифметические операции.
predicates
operation(symbol,real,real)
clauses
operation("+",X,Y):-Z=X+Y,
write(X,"+",Y,"=",Z),
nl.
operation("-",X,Y):-Z=X-Y,
write(X,"-",Y,"=",Z),
nl.
operation("*",X,Y):-Z=X*Y,
write(X,"*",Y,"=",Z),
nl.
operation("/",X,Y):-Z=X/Y,
write(X,"/",Y,"=",Z),
nl.
Результат: Z=8+2 Z=8-2 Z=8*2 Z=8/2
Z=10 Z=6 Z=16 Z=4
1 Solution 1 Solution 1 Solution 1 Solution
2. Реализовать эту же программу с внутренней целью
predicates
operation(symbol,real,real)
Goal
write(“Vvedite chisla”),
nl,
readreal(X),
nl,
readreal(Y),
nl,
operation(“+”,X,Y),
operation(“-“,X,Y),
operation(“*”,X,Y),
operation(“/ “,X,Y).
clauses
operation("+",X,Y):-Z=X+Y,
write(X,"+",Y,"=",Z),
nl.
operation("-",X,Y):-Z=X-Y,
write(X,"-",Y,"=",Z),
nl.
operation("*",X,Y):-Z=X*Y,
write(X,"*",Y,"=",Z),
nl.
operation("/",X,Y):-Z=X/Y,
write(X,"/",Y,"=",Z),
nl.
Результат: Vvedite chisla
2
4
2+4=6
2-4=-2
2*4=8
2/4=0,5
Задание 9.
Реализовать программу задания 4 с новой целью, использующей встроенный предикат fail , и проанализировать полученный результат.
domains
name=symbol
predicates
men(name)
mama(name)
sons(name,name)
doughter(name,name)
deda(name,name)
brother(name,name).
goal
deda(X,”Vaciliy”),
write(X,”Vaciliy”),
nl.
clauses
men(“Vaciliy”).
men(“Michail”).
men(“Maxim”).
mama(“Olga”).
sons(“Michail”,”Olga”).
sons(“Maxim”,”Olga”).
doughter(“Olga”,”Vasiliy”).
deda(X,Y) :--men(X),men(Y),sons(X,Y),doughter(Z,Y),nl,
write(“ “,X),nl, fail.
brother(X,Y) :--men(X),men(Y), sons(X,Z),sons(Y,Z),X<>Y.
Результат: Michail
Maxim
Задание 10.
Реализовать программы вычисления суммы следующих рядов:
1. 1 + 2 + 3 + ... + 9 + 10
2. 2 + 4 + 6 + ... + 14 + 16
3. 10 + 9 + 8 + ... + 2 + 1
4. 1 + 3 + 5 + ... + 13 + 15
domains
number,sum=integer
predicates
sum(number,sum)
goal
write(“Сумма ряда : “),
sum(1,sum), write(sum).
clauses
sum(11,0).
sum(Number, Sum) :--
New_number=Number+1,
sum(New_number,Partial_sum),
Sum=Number+Partial_sum.
Результат: Сумма ряда : 55
domains
number,sum=integer
predicates
sum(number,sum)
goal
write(“Суммаряда : “),
sum(2,sum), write(sum).
clauses
sum(18,0).
sum(Number, Sum) :--
New_number=Number+2,
sum(New_number,Partial_sum),
Sum=Number+Partial_sum.
Результат: Сумма ряда : 72
domains
number,sum=integer
predicates
sum(number,sum)
goal
write(“Суммаряда : “),
sum(9,sum), write(sum).
clauses
sum(0,11).
sum(Number, Sum) :--
New_number=Number-1,
sum(New_number,Partial_sum),
Sum=Number+Partial_sum
Результат: Сумма ряда : 55
domains
number,sum=integer
predicates
sum(number,sum)
goal
write(“Суммаряда : “),
sum(1,sum), write(sum).
clauses
sum(17,0).
sum(Number, Sum) :--
New_number=Number+2,
sum(New_number,Partial_sum),
Sum=Number+Partial_sum.
Результат: Сумма ряда : 64
Задание 12.
Написать программу, создающую список городов. Выполнить программу с различными внутренними и внешними целями.
domains
town_list=town*
town=symbol
predicates
towns(town_list)
goal
towns([A,B,C,D,E]),
write(A,”,”,B,”,”,C,”,”,D,”,”,E).
clauses
towns([ “Kazan”,”Nignekamsk”,”Elabuga”,”Bugulma”,”Almetevsk” ]).
Результат: Kazan, Nignekamsk, Elabuga, Bugulma, Almetevsk
Похожие работы
-
Решение задач на языке программирования Turbo Basik
ВОСТОЧНАЯ ЭКОНОМИКО-ЮРИДИЧЕСКАЯ ГУМАНИТАРНАЯ АКАДЕМИЯ (Академия ВЭГУ) Стерлитамакский институт Пояснительная записка к контрольной работе «Решение задач на языке программирования Turbo Basik»
-
Модель процесса с помощью DFD
Создать информационную модель процесса с помощью DFD. Для построения использовать построения модели использовать программу BPwin. Процесс управления отделом сбыта.
-
Основы языка Visual Prolog
1.1 ПРОграммирование в ЛОГике В Прологе решение задачи получается логическим выводом из ранее известных положений. Обычно программа на Прологе не является последовательностью действий, - она представляет собой набор фактов с правилами, обеспечивающими получение заключений на основе этих фактов.
-
Использование Prolog совместно с другими ЯП
Понятие Dll. Вспомним процесс программирования в DOS. Преобразование исходного текста в машинный код включал в себя 2 процесса: компиляцию и линковку. Во время линковки в код программы помещались не только объявления функций и процедур, но и их полный код.
-
Условная функция и логические выражения в электронных таблицах Microsoft Exel 97
http://monax.ru/order/ - рефераты на заказ (более 800 авторов в 230 городах СНГ). Министерство образования и науки Украины Николаевская общеобразовательная школа № 3
-
Решения задач на языке программирования Turbo Basic
ВОСТОЧНЫЙ ИНСТИТУТ ЭКОНОМИКИ, ГУМАНИТАРНЫХ НАУК, УПРАВЛЕНИЯ И ПРАВА Пояснительная записка к контрольной работе «Решения задач на языке программирования Turbo Basic»
-
Создание экспертной системы по выбору электрогитары
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ Кафедра «Математика и моделирование» Реферат по дисциплине: «Базы знаний и экспертные системы»
-
Тенденция развития систем искусственного интеллекта
Министерство образования и науки российской федерации Государственное образовательное учреждение высшего профессионального образования <<
-
Автоматизированный учет выполнения работ в фотоателье
Министерство образования Российской Федерации Филиал Санкт-Петербургского государственного морского технического университета Севмашвтуз Кафедра № 19
-
Разработка программы на языке высокого уровня Паскаль
Лабораторная работа «Разработка программы на языке высокого уровня Паскаль» Цель и задачи работы Освоить основные приемы алгоритмизации и составления программ на языке высокого уровня Паскаль.