Èíôîðìàòèêà, ïðîãðàììèðîâàíèå: Ëîãè÷åñêèå çàäà÷è íà ÿçûêå ïðîãðàììèðîâàíèÿ 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,"!").

Ðåçóëüòàò: Äîáðî ïîæàëîâàòü â 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.

Çàäàíèå 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.

  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


Åùå èç ðàçäåëà Èíôîðìàòèêà, ïðîãðàììèðîâàíèå:


 Ýòî èíòåðåñíî
 Ðåêëàìà
 Ïîèñê ðåôåðàòîâ
 
 Àôîðèçì
Åñëè áû Áîã õîòåë, ÷òîáû ìû äóìàëè òîëüêî ãîëîâîé, îí áû ñäåëàë íàñ êîëîáêàìè.
 Ãîðîñêîï
Ãîðîñêîïû
 Ñ÷¸ò÷èêè
bigmir)net TOP 100