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
Информация о работе «Логические задачи на языке программирования Prolog»
Раздел: Информатика, программирование
Количество знаков с пробелами: 8869
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
35650
0
0

... # будет тесно интегрирован с языком XML[1]. 2.2 Паскаль Паскаль [PASCAL - акроним с французского - Program Applique a la Selection et la Compilation Automatique de la Litterature] - Процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского ...

Скачать
14800
3
3

... THEN действия Полное IF Условие THEN действия 1 ELSE действия 2 Пример алгоритма ветвления на алгоритмическом языке QBasic: INPUT «1 или 2?» IF=1 OR I=2 THEN PRINT “Ок” ELSE PRINT “Вне диапазона” END IF Основные алгоритмические конструкции: Циклический алгоритм. Повторяющееся выполнение действий (групп действий),зависящее от выполнения условия, ...

Скачать
80531
5
5

... вы можете обрабатывать наряду с символами и числами. Он начинается с имени, называемого функтором (в данном случае date), за которым следуют три аргумента. Функтор в Visual Prolog — не то же самое, что функция в других языках программирования; это просто имя, которое определяет вид составного объекта данных и объединяет вместе его аргументы. Функтор не обозначает, что будут выполнены какие-либо ...

Скачать
141139
6
10

... названием "Prolog", а внутри него ярлык на файл "Prolog.exe" с названием "Prolog with databases", ярлык на help-файл и на файл "readme.txt". 3.3 Руководство пользователя программы интерпретатора языка Пролог 3.3.1 Запуск программы Запуск программы можно произвести несколькими способами. Нажать кнопку "Пуск", выбрать в меню пункт "Программы", выбрать пункт "Prolog". После того, как ...

0 комментариев


Наверх