1. Ââåñòè ïðåäëîæåííûé òåêñò ïðîãðàììû, ðåàëèçîâàòü åå è çàïèñàòü íà äèñê.
predicates
hello.
goal
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. Óìûøëåííî ââåñòè îïå÷àòêè â òåêñò ïðîãðàììû è îçíàêîìèòüñÿ ñ ñîîáùåíèÿìè îá ýòèõ îïå÷àòêàõ, èñïðàâèòü èõ.
makewindow(1,7,7,"Ìîÿ ïåðâàÿ ïðîãðàììà",4,56,14,22)
nl, write("Ââåäèòå âàøå èìÿ,n","çàòåì íàæìèòå Enter."),
readln(Name)nl,
write("Äîáðî ïîæàëîâàòü\n â PDC Prolog,\n",",Name,!").
Ðåçóëüòàò: 423 Syntax eror.
Ðåàëèçîâàòü ïðîãðàììó ñ ââîäîì ïåðå÷èñëåííûõ íèæå öåëåé è ïðîâåðèòü ïîëó÷àåìûå ðåçóëüòàòû. Öåëè âíåøíèå.
book(symbol,symbol,symbol,integer).
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
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
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)
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. Ðåàëèçîâàòü ïðèâåäåííóþ ïðîãðàììó:
star(name)
planet(name)
revolve(name,name)
satellite(name,name).
satellite(X,"Ìàðñ"),
write(X," ñïóòíèê Ìàðñà."),
nl.
star("Ñîëíöå").
planet("Çåìëÿ").
planet("Ìàðñ").
revolve("Çåìëÿ","Ñîëíöå").
revolve("Ìàðñ","Ñîëíöå").
revolve("Ëóíà","Çåìëÿ").
revolve("Ôîáîñ","Ìàðñ").
revolve("Äåéìîñ","Ìàðñ").
satellite(X,Y):-planet(Y),revolve(X,Y).
Ðåçóëüòàò: Ôîáîñ ñïóòíèê Ìàðñà.
2. Íàïèñàòü è ðåàëèçîâàòü ïðîãðàììó óñòàíîâëåíèÿ ðîäñòâåííûõ ñâÿçåé: Âàñèëèé èìååò äî÷ü Îëüãó, ó êîòîðîé äâà ñûíà Ìèõàèë è Ìàêñèì. Èñïîëüçîâàòü âíåøíèå è âíóòðåííèå öåëè.
men(name)
mama(name)
sons(name,name)
doughter(name,name)
deda(name,name)
brother(name,name).
doughter(Z,Y),
write(Z,Y),
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.
random(X),
Z=X,
write("Ïñåâäîñëó÷àéíîå âåùåñòâåííîå ÷èñëî îò 0 äî 1 : ",Z),
Ðåçóëüòàò: 0,64823988962
2. Ïîëó÷èòü ñëó÷àéíûå öåëûå ÷èñëà â äèàïàçîíå îò 0 äî 10 è îò 10 äî 35.
random(10,X),
write("Ïñåâäîñëó÷àéíîå âåùåñòâåííîå ÷èñëî îò 0 äî 10 : ",Z),
Ðåçóëüòàò: 5
random(25,X),
Z=X++10,
write("Ïñåâäîñëó÷àéíîå âåùåñòâåííîå ÷èñëî îò 10 äî 35:,Z),
Ðåçóëüòàò: 21
1.
write("X = "),
readint(X),
nl,
write("K = "),
readreal(K),
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 ñ êëàâèàòóðû.
readint(K),
write(“N= “),
readreal(N),
nl
Z=(X+K)*N,
Ðåçóëüòàò: 23,8
operation(symbol,real,real)
operation("+",X,Y):-Z=X+Y,
write(X,"+",Y,"=",Z),
operation("-",X,Y):-Z=X-Y,
write(X,"-",Y,"=",Z),
operation("*",X,Y):-Z=X*Y,
write(X,"*",Y,"=",Z),
operation("/",X,Y):-Z=X/Y,
write(X,"/",Y,"=",Z),
Ðåçóëüòàò: 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. Ðåàëèçîâàòü ýòó æå ïðîãðàììó ñ âíóòðåííåé öåëüþ
Goal
write(“Vvedite chisla”),
readreal(X),
readreal(Y),
operation(“+”,X,Y),
operation(“-“,X,Y),
operation(“*”,X,Y),
operation(“/ “,X,Y).
Ðåçóëüòàò: Vvedite chisla
2
4
2+4=6
2-4=-2
2*4=8
2/4=0,5
Ðåàëèçîâàòü ïðîãðàììó çàäàíèÿ 4 ñ íîâîé öåëüþ, èñïîëüçóþùåé âñòðîåííûé ïðåäèêàò fail, è ïðîàíàëèçèðîâàòü ïîëó÷åííûé ðåçóëüòàò.
deda(X,”Vaciliy”),
write(X,”Vaciliy”),
deda(X,Y) :--men(X),men(Y),sons(X,Y),doughter(Z,Y),nl,
write(“ “,X),nl, fail.
Ðåçóëüòàò: 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
number,sum=integer
sum(number,sum)
write(“Ñóììà ðÿäà : “),
sum(1,sum), write(sum).
sum(11,0).
sum(Number, Sum) :--
New_number=Number+1,
sum(New_number,Partial_sum),
Sum=Number+Partial_sum.
Ðåçóëüòàò: Ñóììà ðÿäà : 55
sum(2,sum), write(sum).
sum(18,0).
New_number=Number+2,
Ðåçóëüòàò: Ñóììà ðÿäà : 72
sum(9,sum), write(sum).
sum(0,11).
New_number=Number-1,
Sum=Number+Partial_sum
sum(17,0).
Ðåçóëüòàò: Ñóììà ðÿäà : 64
Íàïèñàòü ïðîãðàììó, ñîçäàþùóþ ñïèñîê ãîðîäîâ. Âûïîëíèòü ïðîãðàììó ñ ðàçëè÷íûìè âíóòðåííèìè è âíåøíèìè öåëÿìè.
town_list=town*
town=symbol
towns(town_list)
towns([A,B,C,D,E]),
write(A,”,”,B,”,”,C,”,”,D,”,”,E).
towns([ “Kazan”,”Nignekamsk”,”Elabuga”,”Bugulma”,”Almetevsk” ]).