{"id":2574,"date":"2021-01-19T13:19:38","date_gmt":"2021-01-19T06:19:38","guid":{"rendered":"https:\/\/luckytruedev.com\/learning\/?p=2574"},"modified":"2021-01-19T13:19:40","modified_gmt":"2021-01-19T06:19:40","slug":"prolog","status":"publish","type":"post","link":"https:\/\/luckytruedev.com\/learning\/prolog\/","title":{"rendered":"Prolog"},"content":{"rendered":"\n<p><strong>Definisi<\/strong><\/p>\n\n\n\n<p><sub>Prolog\u00a0kependekan dari Programming of Logic adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural.<\/sub> <sub>Namanya diambil dari bahasa Perancis\u00a0yaitu<\/sub> <em><sub>programmation en logique <\/sub><\/em><sub>(pemrograman logika).<\/sub> <sub>Bahasa ini diciptakan oleh\u00a0Alain Colmerauer\u00a0dan\u00a0Robert Kowalski\u00a0sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika.<\/sub><\/p>\n\n\n\n<p><sub>Algoritma dari prolog terdiri dari logika dan kontrol, logika terdiri dari fakta dan peraturan sedangkan kontrol cara sebuah algoritma untuk diterapkan pada sebuah peraturan.<\/sub><\/p>\n\n\n\n<p><strong>Fakta dan Peraturan (Facts and Rules)<\/strong><\/p>\n\n\n\n<p><sub>Fakta adalah satu unit informasi yang selalu bernilai benar.<\/sub><\/p>\n\n\n\n<p><sub>Peraturan merupakan suatu pernyataan yang mengungkap sebuah hubungan diantara fakta-fakta dengan implikasi logika :-.<\/sub><\/p>\n\n\n\n<p><sub>Peraturan benar jika syarat terpenuhi.<\/sub><\/p>\n\n\n\n<p><sub>Peraturan terdiri dari bagian syarat (badan klausa)<\/sub><\/p>\n\n\n\n<p><sub>Kesimpulan&nbsp; merupakan (kepala klausa).<\/sub><\/p>\n\n\n\n<p><sub>Kesimpulan akan memberikan nilai benar ketika syarat juga bernilai benar.<\/sub><\/p>\n\n\n\n<p><strong>Definsi Fakta<\/strong><\/p>\n\n\n\n<p><sub>lelaki(X)&nbsp; : X adalah lelaki<\/sub><\/p>\n\n\n\n<p><sub>&nbsp; perempuan(X) &nbsp; : X adalah perempuan<\/sub><\/p>\n\n\n\n<p><sub>&nbsp; ayah(Y,X) &nbsp; : Y adalah ayah dari X<\/sub><\/p>\n\n\n\n<p><sub>&nbsp; ibu(Y,X) &nbsp; : Y adalah ibu dari X<\/sub><\/p>\n\n\n\n<p><strong><sub>&nbsp; <\/sub><\/strong><sub>kakek(Z,X) &nbsp; : Z adalah kakek dari X<\/sub><\/p>\n\n\n\n<p><strong>Definisi Peraturan<\/strong><\/p>\n\n\n\n<p><sub>saudarakandung(X,Y) :- ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y).<br>kakek(X,Y) :- bapak(X,S), ibu(S,Y) ; bapak(X,S), bapak(S,Y).<br>nenek(X,Y) :- ibu(X,S), ibu(S,Y) ; ibu(X,S), bapak(S,Y).<\/sub><\/p>\n\n\n\n<p><sub>anaklelaki(X,Y,Z) : &#8211; bapak(Y,X), ibu(Z,X) \u00a0<\/sub><\/p>\n\n\n\n<p><sub>anakperempuan(X,Y,Z) :- bapak(Y,X), ibu(Z,X)<\/sub><\/p>\n\n\n\n<p><sub>Sebagai contoh misalnya untuk mengetahui saudara kandung, kakek dan nenek sebagaimana pada fakta-fakta di atas.<\/sub><\/p>\n\n\n\n<p><sub>&nbsp; Saudara Kandung<\/sub><\/p>\n\n\n\n<p><sub>Saudara kandung di dapat jika terdapat hubungan bahwa dua orang memiliki bapak dan ibu yang sama, bentuk peraturan (rules) nya sebagai berikut<\/sub><\/p>\n\n\n\n<p><sub>&nbsp;<\/sub><em><sub>saudarakandung(X,Y) :- ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y),<\/sub><\/em><\/p>\n\n\n\n<p><sub>dimana <\/sub><em><sub>saudarakandung(X,Y) <\/sub><\/em><sub>merupakan bagian kesimpulan (kepala) dan<\/sub><em><sub> ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y) <\/sub><\/em><sub>adalah bagian syarat(badan).<\/sub><\/p>\n\n\n\n<p><strong>Silsilah Keluarga<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"406\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-1024x406.png\" alt=\"\" class=\"wp-image-2581\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-1024x406.png 1024w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-300x119.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-768x305.png 768w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-110x44.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-420x167.png 420w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21-770x305.png 770w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/01\/Picture1-21.png 1450w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><sub>Pada contoh di atas, bisa dilihat salah satu fakta mengatakan bahwa <\/sub><sub>udin<\/sub><sub> adalah bapak dari <\/sub><sub>kurdi<\/sub><sub> yang ditulis dalam klausa<\/sub><\/p>\n\n\n\n<p><sub>\u00a0 \u00a0<\/sub><strong><em><sub>bapak(udin, kurdi).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Prolog bisa digunakan untuk mencari kebenaran hubungan dari fakta-fakta di atas, pertama prolog digunakan untuk mengetahui hubungan antara bapak dengan anak, ibu dengan anak,<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?- bapak(<\/sub><\/em><\/strong><strong><em><sub>ucup<\/sub><\/em><\/strong><strong><em><sub>, <\/sub><\/em><\/strong><strong><em><sub>ocid<\/sub><\/em><\/strong><strong><em><sub>).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>akan menghasilkan nilai<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; true<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>yang menyatakan bahwa ada hubungan ucup sebagai bapak dari ocid.<\/sub><\/p>\n\n\n\n<p><strong><em><sub>Contoh lagi :<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-ibu(<\/sub><\/em><\/strong><strong><em><sub>uneh<\/sub><\/em><\/strong><strong><em><sub>, <\/sub><\/em><\/strong><strong><em><sub>karta<\/sub><\/em><\/strong><strong><em><sub>).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Yang berarti apakah <\/sub><sub>uneh<\/sub><sub> merupakan ibu dari <\/sub><sub>karta<\/sub><sub>, maka prolog akan memberi jawaban<\/sub><\/p>\n\n\n\n<p><strong><em><sub>\u00a0 false<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>mungkin kita tidak hanya ingin menguji kebenaran pernyataan dengan jawaban true atau false, tetapi mungkin pertanyaannya adalah siapa saja anak dari <\/sub><sub>udin<\/sub><sub><\/sub><\/p>\n\n\n\n<p><sub>misalnya, <\/sub><sub>siapakah<\/sub><sub> anak dari <\/sub><sub>udin<\/sub><sub> dari istri yang bernama <\/sub><sub>uneh<\/sub><sub>. Penulisan dalam prolog sebagai berikut :<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-ibu(<\/sub><\/em><\/strong><strong><em><sub>uneh<\/sub><\/em><\/strong><strong><em><sub>, X).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Prolog akan memberitahukan nilai X agar pernyataan tersebut benar<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; X = <\/sub><\/em><\/strong><strong><em><sub>emeh<\/sub><\/em><\/strong><strong><em><sub>;<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Kemudian dengan mengetikkan (;) semicolon, akan ditampilkan jawaban berikutnya yaitu.<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; X = <\/sub><\/em><\/strong><strong><em><sub>kurdi<\/sub><\/em><\/strong><strong><em><sub>;<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><strong><em><sub>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Jika kita berusaha untuk mengetikkan semicolon kembali, prolog akan memberikan nilai <\/sub><strong><em><sub>false<\/sub><\/em><\/strong><sub>, yang berarti jawaban tidak ditemukan lagi.<\/sub><\/p>\n\n\n\n<p><sub>Hal lain yang bisa dilakukan adalah mengetahui semua fakta yang memiliki predikat bapak misalnya dengan mengetikkan<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-bapak(X,Y).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Prolog akan memberikan semua jawaban hubungan bapak antara X dan Y sebagai berikut :<\/sub><\/p>\n\n\n\n<p><strong><em><sub>\u00a0 X = udin,<br>\u00a0 Y = pengkuh;<br>\u00a0 X = udin,<br>\u00a0 Y = nonong;<\/sub><\/em><\/strong><sub><br>\u00a0 \u2026 dan seterusnya<\/sub><\/p>\n\n\n\n<p><sub>Kemudian<\/sub><sub> <\/sub><sub>jika<\/sub><sub> <\/sub><sub>kita<\/sub><sub> <\/sub><sub>menuliskan<\/sub><sub> prolog <\/sub><sub>sbb<\/sub><sub> :<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-saudarakandung(<\/sub><\/em><\/strong><strong><em><sub>romlah<\/sub><\/em><\/strong><strong><em><sub>,<\/sub><\/em><\/strong><strong><em><sub>ocid<\/sub><\/em><\/strong><strong><em><sub>).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Prolog akan memberikan nilai true, karena bapak mereka adalah <\/sub><sub>ucup<\/sub><sub> dan ibu mereka adalah <\/sub><sub>icih<\/sub><sub>.<\/sub><\/p>\n\n\n\n<p><sub>Sedangkan jika dituliskan pertanyaan<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-saudarakandung(<\/sub><\/em><\/strong><strong><em><sub>nonong<\/sub><\/em><\/strong><strong><em><sub>,<\/sub><\/em><\/strong><strong><em><sub>emeh<\/sub><\/em><\/strong><strong><em><sub>).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Prolog akan memberikan nilai false, keduanya memiliki bapak yang sama tetapi ibu mereka berbeda.<\/sub><\/p>\n\n\n\n<p><sub>Berdasarkan hal tersebut juga, bisa diketahui siapa saja yang bersaudara kandung, misalnya kita ingin mengetahui dari fakta-fakta tersebut siapa saja saudara kandung dari <\/sub><sub>pengkuh<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; ?-saudarakandung(<\/sub><\/em><\/strong><strong><em><sub>pengkuh<\/sub><\/em><\/strong><strong><em><sub>,X).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><strong><em><sub>Jawabannya :<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><strong><em><sub>\u00a0 X = nonong; &lt;enter><br>\u00a0 X = karta; &lt;enter><br>\u00a0 false<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Begitu juga dengan hubungan kakek dan cucu, kakek adalah bapak dari bapak kandung atau bapak dari ibu kandung, sehingga peraturan tersebut ditulis sebagai berikut :<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; Kakek(X,Y) :- bapak(X,S), bapak(S, Y) ; bapak(X, T), ibu(T,Y).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>Semicolon memiliki arti \u201catau\u201d.<\/sub><\/p>\n\n\n\n<p><sub>&nbsp; Contoh <\/sub><strong><em><sub>?-kakek(X,<\/sub><\/em><\/strong><strong><em><sub>bale<\/sub><\/em><\/strong><strong><em><sub>).<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><sub>&nbsp; Prolog akan memberikan jawaban<\/sub><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; X = <\/sub><\/em><\/strong><strong><em><sub>udin<\/sub><\/em><\/strong><strong><em><sub>;<\/sub><\/em><\/strong><\/p>\n\n\n\n<p><strong><em><sub>&nbsp; X = <\/sub><\/em><\/strong><strong><em><sub>ucup<\/sub><\/em><\/strong><strong><em><sub>.<\/sub><\/em><\/strong><\/p>\n<div id=\"lucky-3504247997\" class=\"lucky-after-content lucky-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-5605825534849002\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-5605825534849002\" \ndata-ad-slot=\"5317815257\" \ndata-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Definisi Prolog\u00a0kependekan dari Programming of Logic adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural. Namanya diambil dari bahasa Perancis\u00a0yaitu programmation en logique (pemrograman logika). Bahasa ini diciptakan oleh\u00a0Alain Colmerauer\u00a0dan\u00a0Robert Kowalski\u00a0sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika. Algoritma dari prolog terdiri dari logika dan kontrol, logika [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[347],"tags":[],"class_list":["post-2574","post","type-post","status-publish","format-standard","hentry","category-mtk-ltdv"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/comments?post=2574"}],"version-history":[{"count":1,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2574\/revisions"}],"predecessor-version":[{"id":2582,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2574\/revisions\/2582"}],"wp:attachment":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/media?parent=2574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/categories?post=2574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/tags?post=2574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}