{"id":163,"date":"2017-08-18T00:01:57","date_gmt":"2017-08-17T22:01:57","guid":{"rendered":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/?p=163"},"modified":"2017-08-18T00:01:57","modified_gmt":"2017-08-17T22:01:57","slug":"skladnia-i-struktura","status":"publish","type":"post","link":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/2017\/08\/18\/skladnia-i-struktura\/","title":{"rendered":"Sk\u0142adnia i struktura"},"content":{"rendered":"<p><span style=\"font-size: medium;\">Prolog jest j\u0119zykiem programowania w logice. Jest j\u0119zykiem deklaratywnym, co oznacza, \u017ce nie ma potrzeby tworzenia algorytmu, kt\u00f3ry rozwi\u0105zuje problem \u2013 nale\u017cy za to opisa\u0107 problem tak, by system m\u00f3g\u0142 sam wywnioskowa\u0107, jakie jest jego rozwi\u0105zanie.<\/span><br \/>\n&nbsp;<\/p>\n<h2 style=\"text-align: center;\">Opisujemy <b>CO<\/b>\u00a0chcemy rozwi\u0105za\u0107, a nie <strong>JAK<\/strong>\u00a0chcemy to zrobi\u0107.<\/h2>\n<p>&nbsp;<br \/>\n<span style=\"font-size: medium;\">Programowanie polega na podaniu zbioru predykat\u00f3w \u2013 podstawiaj\u0105c do nich sta\u0142e tworzymy baz\u0119 fakt\u00f3w, a okre\u015blaj\u0105c zwi\u0105zki logiczne mi\u0119dzy sta\u0142ymi, tworzymy zbi\u00f3r regu\u0142.<\/span><br \/>\n&nbsp;<br \/>\nEtapy pracy z prologiem:<br \/>\n1.Definiowanie obiekt\u00f3w poprzez fakty i zwi\u0105zki mi\u0119dzy obiektami.<br \/>\n2.Definiowanie regu\u0142.<br \/>\n<span style=\"font-size: medium;\"> 3.Tworzenie zapyta\u0144.<\/span><br \/>\n&nbsp;<br \/>\n<b>Termy<\/b>:<\/p>\n<ul>\n<li>sta\u0142e:\n<ul>\n<li>atomy \u2013 <span style=\"font-size: medium;\">zapisujemy za pomoc\u0105 ci\u0105gu znak\u00f3w, rozpoczynaj\u0105c od ma\u0142ej litery; zdanie uj\u0119te w apostrofy te\u017c jest atomem;<\/span><\/li>\n<li>liczby \u2013 ca\u0142kowite jak i rzeczywiste;<\/li>\n<\/ul>\n<\/li>\n<li>zmienne \u2013 zapisujemy jako ci\u0105g znak\u00f3w, rozpoczynaj\u0105c od du\u017cej litery; zmienn\u0105 mo\u017ce by\u0107 te\u017c znak podkre\u015blenia, kt\u00f3ry jest zmienn\u0105 anonimow\u0105, u\u017cywan\u0105 w momencie, w kt\u00f3rym chcemy si\u0119 tylko dowiedzie\u0107, czy co\u015b jest prawd\u0105 i nie interesuje nas co to;<\/li>\n<li>termy z\u0142o\u017cone \u2013 to struktura, kt\u00f3r\u0105 tworzymy poprzez zagnie\u017cd\u017canie term\u00f3w;<\/li>\n<\/ul>\n<p><span style=\"font-size: medium;\">Proste termy to sta\u0142e i zmienne, a z\u0142o\u017cone to zbi\u00f3r term \u0142\u0105cz\u0105cych si\u0119 w jedn\u0105 ca\u0142o\u015b\u0107. Do \u0142\u0105czenia term\u00f3w potrzebne s\u0105 predykaty, kt\u00f3re podobnie jak sta\u0142e s\u0105 ci\u0105giem cyfr lub znak\u00f3w rozpoczynaj\u0105cych si\u0119 od ma\u0142ej litery.<\/span><br \/>\n<span style=\"font-size: medium;\"><i>predykant(terma, termb)<\/i><\/span><br \/>\n<span style=\"font-size: medium;\"><i>predykant(terma, predykant(termb,termc))<\/i><\/span><br \/>\n<span style=\"font-size: medium;\">Natomiast powy\u017cej predykant po\u0142\u0105czy\u0142 term prosty <\/span><span style=\"font-size: medium;\"><i>terma<\/i><\/span><span style=\"font-size: medium;\"> z termem z\u0142o\u017conym, kt\u00f3rym jest <\/span><span style=\"font-size: medium;\"><i>predykant<\/i><\/span><span style=\"font-size: medium;\"><i>(termb,termc)<\/i><\/span><span style=\"font-size: medium;\">.<\/span><br \/>\n<span style=\"font-size: medium;\">Termy to obiekty.<\/span><br \/>\n&nbsp;<br \/>\n<span style=\"font-size: medium;\"><b>Predykant<\/b><\/span><span style=\"font-size: medium;\"> \u2013 to nazwa zwi\u0105zku lub relacji mi\u0119dzy obiektami. Kolejno\u015b\u0107 obiekt\u00f3w w relacji jest bez znaczenia, jednak przyjmuj\u0105c konkretny spos\u00f3b zapisywania i odczytywania nale\u017cy si\u0119 go konsekwentnie trzyma\u0107.<\/span><br \/>\n&nbsp;<br \/>\n<b>Fakt<\/b> \u2013 to predykat zako\u0144czony kropk\u0105; stwierdzenie, kt\u00f3re w odniesieniu do opisywanych obiekt\u00f3w uwa\u017camy za prawdziwe.<br \/>\nposiada(tomek,auto). &#8211; to prawda, \u017ce obiekt tomek posiada obiekt auto; przedstawiona ca\u0142o\u015b\u0107 to fakt.<br \/>\n&nbsp;<br \/>\n<b>Regu\u0142a<\/b> \u2013 sk\u0142ada si\u0119 z dw\u00f3ch cz\u0119\u015bci:<\/p>\n<ul>\n<li>g\u0142owa \u2013 to jeden predykat; znajduje si\u0119 po lewej stronie;<\/li>\n<li>cia\u0142o \u2013 to jeden lub wi\u0119cej predykat\u00f3w, kt\u00f3re rozdzielamy przecinkami (oznaczaj\u0105 logiczne \u201ei\u201d) b\u0105d\u017a \u015brednikami (oznaczaj\u0105 logiczne \u201elub\u201d); znajduje si\u0119 po prawej stronie;<\/li>\n<\/ul>\n<p>G\u0142ow\u0119 od cia\u0142a oddzielamy znakami dwukropku i \u015brednika <b>:-<\/b> oznaczaj\u0105cymi \u201eje\u017celi\u201d, a ca\u0142\u0105 regu\u0142\u0119 ko\u0144czymy kropk\u0105.<br \/>\nNajpro\u015bciej ujmuj\u0105c regu\u0142a to zbi\u00f3r warunk\u00f3w (kt\u00f3re znajduj\u0105 si\u0119 w ciele), kt\u00f3re musz\u0105 zosta\u0107 spe\u0142nione aby cel (kt\u00f3rym jest g\u0142owa) r\u00f3wnie\u017c zosta\u0142 spe\u0142niony, czyli aby mo\u017cna by\u0142o mu przypisa\u0107 logiczn\u0105 prawd\u0119.<br \/>\n&nbsp;<br \/>\n<b>Baza danych<\/b> \u2013 zbi\u00f3r fakt\u00f3w i regu\u0142.<br \/>\n&nbsp;<br \/>\n<b>Klauzula<\/b> to fakty i regu\u0142y.<br \/>\n&nbsp;<br \/>\n<b>Program<\/b> sk\u0142ada si\u0119 z <i>uporz\u0105dkowanych<\/i> klauzul \u2013 klauzule w uruchomionym programie rozpatrywane s\u0105 w takiej kolejno\u015bci w jakiej znajduj\u0105 si\u0119 w pliku \u017ar\u00f3d\u0142owym.<br \/>\n&nbsp;<br \/>\n<b>Zapytanie<\/b> ma struktur\u0119 regu\u0142y i tak samo ko\u0144czy si\u0119 kropk\u0105. Wprowadzamy je w kompilatorze j\u0119zyka prolog po znaku zach\u0119ty, kt\u00f3rym jest znak zapytania ze \u015brednikiem ?-. Wciskaj\u0105c klawisz ENTER zlecamy kompilatorowi przeszukanie naszego programu \u2013 czy na podstawie fakt\u00f3w i regu\u0142 znajduj\u0105cych si\u0119 w tym programie mo\u017cna wykaza\u0107 prawdziwo\u015b\u0107 wprowadzonego przez nas zapytania \u2013 <i>true<\/i> oznacza, \u017ce istniej\u0105 takie klauzule, kt\u00f3re stwierdzaj\u0105 prawdziwo\u015b\u0107 naszego zapytanie, <i>false<\/i> oznacza, \u017ce albo istniej\u0105 klauzule na podstawie kt\u00f3rych stwierdza si\u0119 nie prawd\u0119 naszego zapytania, albo nie istniej\u0105 takie klauzule, na podstawie kt\u00f3rych mo\u017cna by by\u0142o stwierdzi\u0107 prawd\u0119 b\u0105d\u017a nieprawd\u0119.<\/p>\n<ul>\n<li>zapytanie elementarne \u2013 nie zawiera zmiennych; oczekiwan\u0105 odpowiedzi\u0105 jest true\/false;<\/li>\n<li>zapytanie nieelementarne \u2013 zawieraj\u0105 zmienne; oczekiwan\u0105 odpowiedzi\u0105 s\u0105 podstawienia dla wprowadzonych w zapytanie zmiennych.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Prolog jest j\u0119zykiem programowania w logice. Jest j\u0119zykiem deklaratywnym, co oznacza, \u017ce nie ma potrzeby tworzenia algorytmu, kt\u00f3ry rozwi\u0105zuje problem \u2013 nale\u017cy za to opisa\u0107 problem tak, by system m\u00f3g\u0142 sam wywnioskowa\u0107, jakie jest jego rozwi\u0105zanie. &nbsp; Opisujemy CO\u00a0chcemy rozwi\u0105za\u0107, a nie JAK\u00a0chcemy to zrobi\u0107. &nbsp; Programowanie polega na podaniu&#8230;<\/p>\n<p class=\"continue-reading-button\"> <a class=\"continue-reading-link\" href=\"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/2017\/08\/18\/skladnia-i-struktura\/\">Czytaj dalej<i class=\"crycon-right-dir\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,4],"tags":[],"_links":{"self":[{"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/posts\/163"}],"collection":[{"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":0,"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/posts\/163\/revisions"}],"wp:attachment":[{"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/media?parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/categories?post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lewandowskit.eduweb.pwste.edu.pl\/prolog\/index.php\/wp-json\/wp\/v2\/tags?post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}