Логические задачи на языке программирования Prolog
Ввести предложенный текст программы, реализовать ее и записать на диск. Умышленно ввести опечатки в текст программы и ознакомиться с сообщениями об этих опечатках, исправить их. Реализовать программу с вводом целей и проверить получаемые результаты...
Рубрика | Программирование, компьютеры и кибернетика |
Вид | задача |
Язык | русский |
Дата добавления | 09.05.2004 |
Размер файла | 10,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
http://monax.ru/order/ - рефераты на заказ (более 2300 авторов в 450 городах СНГ).
Логические задачи на языке программирования Prolog
Задание 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,"!").
Результат: Добро пожаловать в PDC Prolog, Vladimir!
Умышленно ввести опечатки в текст программы и ознакомиться с сообщениями об этих опечатках, исправить их.
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 Syntax eror.
Задание 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.
Реализовать приведенную программу:
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).
Результат: Фобос спутник Марса.
Написать и реализовать программу установления родственных связей: Василий имеет дочь Ольгу, у которой два сына Михаил и Максим. Использовать внешние и внутренние цели.
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.
Реализовать следующую программу: Получить псевдослучайные вещественные числа в диапазоне от 0 до 1.
goal
random(X),
Z=X,
write("Псевдослучайное вещественное число от 0 до 1 : ",Z),
nl.
Результат: 0,64823988962
Получить случайные целые числа в диапазоне от 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.
1. Реализовать приведенную программу с внешней связью, выполнив все четыре арифметические операции.
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
Подобные документы
Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Создание транслятора, обрабатывающего код программы на языке Паскаль и за счет эквивалентных операторов генерирующего программу на Си. Особенности внешней спецификации и работы лексического анализатора. Структура программы, вывод результатов на экран.
курсовая работа [254,0 K], добавлен 02.07.2011Составление транслятора на языке С для перевода кода программы из языка Pascal в код программы на языке Cи. Распознавание и перевод конструкций: for, type, function, integer. Вешняя спецификация, описание, структура, текст программы; распечатка текстов.
курсовая работа [287,8 K], добавлен 24.06.2011Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Схема разбора арифметического и логического выражения. Внешняя спецификация конвертора и алгоритм перевода программ на языке Паскаль в текст на языке Си. Назначение подпрограмм, особенности констант и переменных. Код программы и ее тестирование.
курсовая работа [567,5 K], добавлен 03.07.2011Формулы расчета емкости плоскопараллельного датчика и его чувствительности. Таблица символических имен: макроопределения, абстрактные классы и функции. Текст программы на языке Си. Результаты в виде таблиц и графиков. Анализ работоспособности программы.
курсовая работа [988,5 K], добавлен 03.11.2012Изучение основ программирования и создание полноценного приложения в среде программирования Delphi. Разработка эскизного и технического проектов программы. Внедрение выполнения программы. Разработка рабочего проекта, спецификация и текст программы.
курсовая работа [560,1 K], добавлен 18.07.2012Реализация экспертных систем любой сложности, решение любых головоломок и шарад с помощью языка логического программирования Prolog. Основные понятия в языке Prolog. Правила логического вывода и запросы. Процедуры логического вывода и принятия решений.
курсовая работа [19,0 K], добавлен 24.05.2012Необходимые компоненты и порядок составления текстового редактора. Текст программы решения задачи на языке программирования C++. Контрольный пример работы текстового редактора. Создание и произведение операции форматирования простого документа.
курсовая работа [1,6 M], добавлен 03.09.2011