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!
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 Syntax eror.
Ðåàëèçîâàòü ïðîãðàììó ñ ââîäîì ïåðå÷èñëåííûõ íèæå öåëåé è ïðîâåðèòü ïîëó÷àåìûå ðåçóëüòàòû. Öåëè âíåøíèå.
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
Ðåàëèçîâàòü ïðîãðàììó ñ ââîäîì âñåõ ïåðå÷èñëåííûõ âíåøíèõ öåëåé è ïðîâåðèòü ïîëó÷àåìûå ðåçóëüòàòû:
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
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
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
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
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
Ðåàëèçîâàòü ïðîãðàììó çàäàíèÿ 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
Ðåàëèçîâàòü ïðîãðàììû âû÷èñëåíèÿ ñóììû ñëåäóþùèõ ðÿäîâ:
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
Íàïèñàòü ïðîãðàììó, ñîçäàþùóþ ñïèñîê ãîðîäîâ. Âûïîëíèòü ïðîãðàììó ñ ðàçëè÷íûìè âíóòðåííèìè è âíåøíèìè öåëÿìè.
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” ]).