[ Pobierz całość w formacie PDF ]
.i jego dziaÅ‚anie:6 ?- permutacja([6,3,4,7,9],X).X = [6, 3, 4, 7, 9] ;X = [6, 3, 4, 9, 7] ;X = [6, 3, 7, 4, 9] ;X = [6, 3, 7, 9, 4] ;X = [6, 3, 9, 4, 7] ;X = [6, 3, 9, 7, 4] ;X = [6, 4, 3, 7, 9] ;X = [6, 4, 3, 9, 7] ;X = [6, 4, 7, 3, 9] ;X = [6, 4, 7, 9, 3] ;X = [6, 4, 9, 3, 7] ;X = [6, 4, 9, 7, 3] ;X = [6, 7, 3, 4, 9] ;X = [6, 7, 3, 9, 4] ;X = [6, 7, 4, 3, 9] ;X = [6, 7, 4, 9, 3] ;X = [6, 7, 9, 3, 4] ;X = [6, 7, 9, 4, 3] ;Programowanie w logice.Prolog ©2007 2009 by P.FulmaÅ„ski (ostatnia modyfikacja: 18 maja 2009) 50 ROZDZIAA 5.ODCICIEX = [6, 9, 3, 4, 7] ;X = [6, 9, 3, 7, 4] ;X = [6, 9, 4, 3, 7] ;X = [6, 9, 4, 7, 3] ;X = [6, 9, 7, 3, 4] ;X = [6, 9, 7, 4, 3] ;X = [3, 6, 4, 7, 9] ;X = [3, 6, 4, 9, 7] ;X = [3, 6, 7, 4, 9] ;X = [3, 6, 7, 9, 4] ;X = [3, 6, 9, 4, 7] ;X = [3, 6, 9, 7, 4]Tak jak siÄ™ tego spodziewaliÅ›my - najpierw poszukiwane sÄ… odpowiedzi dla pierwszychustalonych przez program argumentów, czyli znjdowana jest permutacja[6,3,4,7,9],nastÄ™pnie cyfra 7 jest zastÄ™powana kolejnÄ… możliwÄ… (9) i wyznaczana jest ostatnia cyfraciÄ…gu (7), itd.Pytanie 5.2.Na ile istotna dla Prologu jest kolejność faktów i reguÅ‚? PodajprzykÅ‚ad.JeÅ›li program dziaÅ‚a deterministycznie i nie ma w nim odcięć, to kolejenośćfaktów i reguÅ‚ ma wpÅ‚yw jedynie na kolejność znajdowania (a zatem i wypisywania naekranie) odpowiedzi.DokÅ‚adniej jest o tym mowa w poprzednim pytaniu.JeÅ›li naszezapytanie nie jest deterministyczne tzn.może zostać wygenerowany nieskoÅ„czony ciÄ…godpowiedzi, to kolejność predykatów w reguÅ‚ach i faktów może być istotna.Np:a(X,Y) :- c(X), b(Y).c(0).c(X) :- c(Y), X is Y-1.b(0).b(X) :- b(Y), X is Y+1.zadziaÅ‚a inaczej niż:a(X,Y) :- b(X), c(Y).c(0).c(X) :- c(Y), X is Y-1.b(0).b(X) :- b(Y), X is Y+1.o czym przekonujÄ… nas wyniki, odpowiednio?- a(C,D).C = 0,D = 0 ;C = 0,D = 1 ;C = 0,D = 2 ;Programowanie w logice.Prolog ©2007 2009 by P.FulmaÅ„ski (ostatnia modyfikacja: 18 maja 2009) 5.3.PYTANIA I ODPOWIEDZI.51oraz?- a(C,D).C = 0,D = 0 ;C = 0,D = -1 ;C = 0,D = -2 ;Formalnie peÅ‚ne zbiory odpowiedzi na powyższe zapytanie dla obu reguÅ‚ sÄ… identyczne,lecz biorÄ…c pod uwagÄ™ fakt, że dysponujemy skoÅ„czonym czasem na znalezienie rozwiÄ…zaÅ„,wygenerowane zbiory nie bÄ™dÄ… siÄ™ pokrywać poza punktemC=0,D=0.Pytanie 5.3.Co nazywamy  odcieciem ? Zilustruj dziaÅ‚anie tego mechanizmuna przykaÅ‚adzie.Operator odciÄ™cia (!) pojawiajÄ…cy siÄ™ w regule speÅ‚nia rolÄ™ trwaÅ‚egopodstawienia staÅ‚ych w miejsce zmiennych poprzedzajÄ…cych ten operator w obrÄ™bie reguÅ‚y.Jego dziaÅ‚anie rozciÄ…ga siÄ™ jednak na wszystkie kolejne pojawienia siÄ™ tych zmienych wprogramie.Można powiedzieć, że!przesuwa poczÄ…tek reguÅ‚y do miejsca pojawienia siÄ™w niej i redukuje ilość zmiennych w dalszym kodzie programu.Ponieważ dziaÅ‚anie tegooperatora zostaÅ‚o już poparte przykÅ‚adami na wykÅ‚adzie proponujÄ™,  zbadać jak zachowasiÄ™ nastÄ™pujÄ…cy programeksperyment(Y) :- !.spójrzmy:?- eksperyment(X).Yes?- eksperyment(a).Yes?- eksperyment(1).Yes?- eksperyment(*).Yes?- eksperyment(_).YesOkazuje siÄ™ zatem, że powyższy zapis oznacza po prostu zdanie prawdziwe a zmiennaXnie ma okreÅ›lonego typu.Programowanie w logice.Prolog ©2007 2009 by P.FulmaÅ„ski (ostatnia modyfikacja: 18 maja 2009) 52 ROZDZIAA 5.ODCICIEProgramowanie w logice.Prolog ©2007 2009 by P.FulmaÅ„ski (ostatnia modyfikacja: 18 maja 2009) RozdziaÅ‚ 6WejÅ›cie i wyjÅ›cie.Operatory6.1 Czytanie i pisanie termów6.1.1 Czytanie termówNajprostszym sposobem pobierania danych od użytkownika jest odczytywanie informacjiwprowadzonych za pomocÄ… urzÄ…dzenia standardowego wejÅ›cia jakim zwykle jest klawia-tura.Zadanie to realizuje predykatread.Niech dany bÄ™dzie nastÄ™pujÄ…cy programa(1,b).a(1,c).a(2,d).a(2,e).e(X) :- read(Y),a(Y,X).Efektem jego dziaÅ‚ania jest?- e(X).|: [1.][ENTER]X = b ;X = c ;NoZauważmy, że" Wprowadzony term musi koÅ„czyć siÄ™ znakiem kropki (.)." Predykatreadmożna uzgodnić tylko raz.Jak widać w powyższym przykÅ‚adzie,Prolog podczas nawracania nie pytaÅ‚ już o kolejne liczby.W tym przypadku na-wracanie to można wymusić predykatemrepeatmodyfikujÄ…c reguÅ‚Ä™ do postacie(X) :- repeat,read(Y),a(Y,X).w efekcie czego otrzymujemy?- e(X).|: [1.][ENTER]Programowanie w logice.Prolog ©2007 2009 by P.FulmaÅ„ski (ostatnia modyfikacja: 18 maja 2009) 54 ROZDZIAA 6.WEJZCIE I WYJZCIE.OPERATORYX = b ;X = c ;|: [2.][ENTER]X = d ;X = e ;.Ogólnie mówiÄ…c predykatrepeat/0koÅ„czy siÄ™ zawsze sukcesem przy pierwszymjego wywoÅ‚aniu a także we wszystkich wywoÅ‚aniach bÄ™dÄ…cych wynikiem nawra-cania.Predykaty wystÄ™pujÄ…ce zarepeatsÄ… wywoÅ‚ywane dopóki wszystkie niezakoÅ„czÄ… siÄ™ sukcesem.Dlatego najprostszym przykÅ‚adem  pÄ™tli nieskoÅ„czonejw Prologu jest schematrepeat,., fail.Poniżej przedstawiamy inny prostyprogram wykorzystujÄ…cy predykatrepeatcommand_loop:-write( repeat example ),nl,repeat,write( Enter command (end to exit):  ),read(X),write(X), nl,X = end.Efektem dziaÅ‚ania programu jest?- command_loop.Enter command (end to exit): [ala.][ENTER]alaEnter command (end to exit): [ma.][ENTER]maEnter command (end to exit): [kota.][ENTER]kotaEnter command (end to exit): [end [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • gieldaklubu.keep.pl
  •