Minggu, 08.01.2010, 01:19am (GMT)
  Depan
  Profil
  RSS
  Links
  PetaSitus
  Kontak
  CHATTING
 
INAHOST.COM | Hosting Murah IIX & USA mulai dari Rp. 6500/thn ; Jasa Pembuatan Website | Company Profile | Web Application | Corporate Identity | CD interactive ; Puasa Adalah Benteng Penghalang ; Antisipasi Praktis Terhadap Flu Babi (H1N1) ; Jurus-jurus praktis memulai bisnis
::| Kata_kunci:       [Cari_Lengkap]
 
Semua Artikel  
  Pemrograman
  Desain Grafik
  Desain Web
  Hacking
  SEO
  Hosting
  Komputer
  Aplikasi
  Musik
  Film
  Ponsel & PDA
  Tips & Triks
  Internet
  Blog
  Cinta
  Agama Islam
  Kesehatan
  Bisnis
  Motivasi
  Aneh dan Unik
  Linux
  Materi Kuliah
  Umum
  Tahukah anda?
  Humor
  Skripsi/PI/TA
  Informasi
  I Love Indonesia
  ::| Artikel langganan
Nama Lengkap:
Email:
 
 
 
Materi Kuliah
 
Tentang Bahasa Pemrograman Prolog
Jumat, 11.13.2009, 09:33am (GMT)

BAHASA PEMROGRAMAN PROLOG

 

 

Sejarah Prolog

-      Prolog singkatan dari Programming in Logic.

-      Dikembangkan oleh  Alain Colmenraurer dan P.Roussel di Universitas Marseilles Perancis, tahun1972.

-      Prolog populer di Eropa untuk aplikasi artificial intelligence, sedangkan di Amerika peneliti mengembangkan aplikasi yang sama, yaitu LISP.

 

Perbedaan Prolog dengan Bahasa Lainnya

-      Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran):

o   diperlukan algoritma/prosedur untuk memecahkan masalah (procedural languange)

o   program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang berbeda-beda.

o   Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.

 

-      Bahasa Pemrograman Prolog :

o   Object oriented languange atau declarative languange.

o   Tidak terdapat prosedur, tetapi  hanya kumpulan data-data objek (fakta) yang akan diolah, dan relasi antar objek tersebut membentuk aturan yang diperlukan untuk mencari suatu jawaban

o   Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.

o   Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.

o   Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.

o   Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu).

o   Contoh : Pembuatan program catur dengan Prolog

 

Aplikasi Prolog :

-      Sistem Pakar (Expert System)

Program menggunakan teknik pengambilan kesimpulan dari data-data yang didapat, layaknya seorang ahli.

Contoh dalam mendiagnosa penyakit

-      Pengolahan Bahasa Alami (Natural Languange Processing)

Program dibuat agar pemakai dapat berkomunikasi dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.

-      Robotik

Prolog digunakan untuk mengolah data masukanyang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan.

-      Pengenalan Pola (Pattern Recognition)

Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek dengan objek yang lain.

-      Belajar (Learning)

Program belajar dari kesalahan yang pernah dilakukan, dari pengamataqn atau dari hal-hal yang pernah diminta untuk dilakukan.


Fakta dan Relasi

 

-      Prolog terdiri dari kumpulan data-data objek yang merupakan suatu fakta.

-      Fakta dibedakan 2 macam :

o   Menunjukkan relasi.

o   Menunjukkan milik/sifat.

-      Penulisannya diakhiri dengan tanda titik “.”

-      Contoh :

Fakta

Prolog

Slamet adalah ayah Amin

ayah (slamet, amin).

Anita adalah seorang wanita

wanita (anita).

Angga suka renang dan tenis

suka(angga, renang). dan suka(angga,tenis).

Jeruk berwarna jingga

jngga(jeruk).

 

 

Aturan (“Rules”)

 

-      Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.

-      Sebuah aturan dinyakatakan sebagai suatu kalimat bersyarat.

-      Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.

-      Contoh :

Fakta dan Aturan

Prolog

F : Tino suka apel

A : Yuli suka sesuatu yang disukai Tino

suka(tino, apel).

suka(yuli,Sesuatu) :-  suka(tino,Sesuatu).

   

-      Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh.

-      Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”.

-      Aturan memiliki sifat then/if conditional

“Kepala(head) benar jika tubuh (body) benar”.



Fakta dan Aturan

Prolog

F : Slamet adalah ayah dari Amin

F : Amin adalah ayah dari Badu

F : Slamet adalah kakek dari Badu

A :

Slamet adalah benar kakek Badu jika Slamet adalah benar ayah Amin dan Amin adalah benar ayah Badu.

ayah(slamet,amin).

ayah(amin,badu).

kakek(slamet,badu).

 

kakek(slamet,amin) :-

ayah(slamet,amin) and

ayah(amin,badu).

F : Amin adalah saudara kandung Anang

F : Amin mempunyai ayah Slamet

F:  Anang mempunyai ayah Slamet.

A :

Amin adalah benar saudara kandung Anang, jika Amin mempunyai ayah Slamet dan Anang juga mempunyai ayah Slamet.

saudara_kandung(amin,anang).

ayah(slamet,amin).

ayah(slamet,anang).

 

 

saudara_kandung(amin,anang) :-

ayah(slamet,amin) and

ayah(slamet,anang).

 

Pertanyaan (“Query”)

 

-      Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada.

-      Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.


-      Contoh :

Pertanyaan

Prolog dan Jawaban Program

Apakah Tini suka boneka ?

?- suka(tini,boneka).

Yes ……. (jika faktanya Tini suka boneka)

No……..…(jika tidak sesuai fakta).

Apakah yang disukai Tini ?

?- suka(tini,Apa).

Apa=boneka

Siapakah yang suka boneka ?

?- suka(Siapa,boneka).

Siapa=tini

Dari contoh silsilah keluarga di atas :

Siapakah kakek Budi ?

 

 

Siapakah cucu Slamet ?

 

 

?- kakek(Siapa,budi).

Siapa=slamet

 

?- kakek(slamet,Cucu).

Cucu=budi ;

Cucu=badu

 

(jika kemungkinan ada lebih dari satu jawaban gunakan tanda “;” pada akhir setiap jawaban).

 

 

Predikat (“Predicate”)

 

-      Predikat adalah nama simbolik untuk relasi.

-      Contoh :           ayah(slamet,amin).

Predikat dari fakta tersebut ditulis :  ayah(simbol,simbol).

dimana ayah adalah nama predikat, sedangkan slamet dan amin adalah menujukkan argumen.

Sebuah predikat dapat tidak memiliki atau memiliki argumen dengan jumlah bebas. Jumlah argumen suatu predikat disebut aritas (arity).

                ayah(nama)   …… aritas-nya 1

                ayah(nama1,nama2) ….. aritasnya 2

-      Syarat-syarat penulisan nama predikat :

o   Harus diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis bawah.

o   Panjang nama predikat maksimum 250 karakter.

o   Tidak diperbolehkan menggunakan spasi, tanda minus, tanda bintang dan garis miring.

Variabel

 

-      Varibel adalah besaran yang nilainya dapat berubah-ubah.

 

-      Tata cara penulisan variabel :

1.       Nama varibel harus diawali huruf besar atau garis bawah(_)

2.       Nama variabel dapat terdiri dari huruf, bilangan, atau simbol dan merupakan kesatuan dengan panjang maksimum 250 karakter.

3.       Nama variabel hendaknya mengandung makna yang berkaitan dengan data yang dinyatakannya.

 

-      Contoh : dari silsilah di atas :

?- ayah(slamet,Anak).

Anak=budi ;

Anak=badu

No

Dari query di atas akan dicari siapakah anak dari ayah yang bernama Slamet. Karena mempunyai relasi yang sama (yaitu ayah), variabel Anak akan mencari nilai dari konstanta suatu fakta/aturan yang sepadan.

Tanda “;” digunakan bila terdapat kemungkinan ada lebih dari satu jawaban.

“No” berarti tidak ada lagi kemungkinan jawaban.

 

Contoh : dari silsilah di atas :

                        ?- ayah(slamet,X),ayah(X,Y).

                        X=amin

                        Y=budi  ;

                        X=amin

                        Y=badu  ;

                        X=anang

                        Y=didi   ;

                        X=anang

                        Y=didi

                        No

 

 

%% FAKTA */

       

%%orang tua */

        ayah(slamet,amin).

        ayah(slamet,anang).

        ayah(amin,budi).

        ayah(amin,badu).

        ayah(anang,didi).

        ayah(anang,dadi).

        ayah(santoso,bu_amin).

        ayah(supardi,bu_anang).

        ibu(bu_slamet,amin).

        ibu(bu_slamet,anang).

        ibu(bu_amin,budi).

        ibu(bu_amin,badu).

        ibu(bu_anang,didi).

        ibu(bu_anang,dadi).

        ibu(bu_santoso,bu_amin).

        ibu(bu_santoso,bu_anang).

 

%% ATURAN */

 

%% Kakek adalah kakek Cucu */

 

        kakek(Kakek,Cucu) :-

                ayah(Ayah,Cucu),

                ayah(Kakek,Ayah).

        kakek(Kakek,Cucu) :-

                ibu(Ibu,Cucu),

                ayah(Kakek,Ibu).

%% Nenek adalah nenek Cucu */

 

        nenek(Nenek,Cucu) :-

                ayah(Ayah,Cucu),

                ibu(Nenek,Ayah).

        nenek(Nenek,Cucu) :-

                ibu(Ibu,Cucu),

                ibu(Nenek,Ibu).

 

 

 

 

%% Nama1 adalah saudara kandung Nama2

 

        saudara_kandung(Nama,Name) :-

                ayah(Ayah,Nama),

                ayah(Ayah,Name),

                ibu(Ibu,Nama),

                ibu(Ibu,Name),

                Nama \= Name.

 

%% Sdr1 adalah saudara sepupu Sdr2

 

        saudara_sepupu(Sdr1,Sdr2) :-

                ayah(Ayah1,Sdr1),

                ayah(Ayah2,Sdr2),

                saudara_kandung(Ayah1,Ayah2).

 

        saudara_sepupu(Sdr1,Sdr2) :-

                ayah(Ayah,Sdr1),

                ibu(Ibu,Sdr2),

                saudara_kandung(Ayah,Ibu).

 

        saudara_sepupu(Sdr1,Sdr2) :-

                ibu(Ibu,Sdr1),

                ayah(Ayah,Sdr2),

                saudara_kandung(Ibu,Ayah).

 

        saudara_sepupu(Sdr1,Sdr2) :-

                ibu(Ibu1,Sdr1),

                ibu(Ibu2,Sdr2),

                saudara_kandung(Ibu1,Ibu2).

 

%-----------------------------------------------%

%  APPLIED LOGIC SYSTEM           %

%  LAY MEDICINE  (medicine.pl)      %

%-----------------------------------------------%

 

% Predicate : relieve

%               relieve(DRUG,SYMPTOM).

%  SYMPTOM is a manifestation of an underlying disease process,

%  but is distinct from the disease process itself.

%

relieve(aspirin,headache).

relieve(aspirin,moderate_pain).

relieve(aspirin,moderate_arthritis).

relieve(aspirin_codeine_combination,severe_pain).

relieve(cough_cure_xm,cough).

relieve(pain_gone,severe_pain).

relieve(ko_diarrhea,diarrhea).

relieve(de_congest,cough).

relieve(de_congest,nasal_congestion).

relieve(penicillin,pneumonia).

relieve(bis_cure,diarrhea).

relieve(bis_cure,nausea).

relieve(noasprinol,headache).

relieve(noasprinol,moderate_pain).

relieve(triple_tuss,nasal_congestion).

 

% Predicate : aggravates

%               aggravates(DRUG,CONDITION).

%  CONDITION is a single disease process, or collection of disease process,

%  sometime called a syndrome.

%

aggravates(aspirin,asthma).

aggravates(aspirin,peptic_ulcer).

aggravates(ko_diarrhea,fever).

aggravates(de_congest,high_blood_pressure).

aggravates(de_congest,heart_disease).

aggravates(de_congest,diabetes).

aggravates(de_congest,glaucoma).

aggravates(bis_cure,diabetes).

aggravates(bis_cure,gout).

aggravates(bis_cure,fever).

 

 

%% Add fact

 

form_of_pain(moderate_pain).

form_of_pain(severe_pain).

 

 

 

 

 

%%% RULE

 

relieve_cold(Drug) :- relieve(Drug,cough),relieve(Drug,nasal_congestion).

relieve_cold(relieve_nose) :- relieve(relieve_nose,cough).

asthma_involved(Drug,Condition) :- aggravates(aspirin,asthma),relieve(Drug,Condition).

pain_killer(Drug) :- relieve(Drug,moderate_pain).

pain_killer(Drug) :- relieve(Drug,severe_pain).

pain_killer(Drug) :- form_of_pain(Condition),relieve(Drug,Condition).

 

 

complains_of(john,headache).

suffers_from(john,peptic_ulcer).

 

should_take(Person,Drug) :- complains_of(Person,Symptom),

                                        suppresses(Drug,Symptom),

                                        not(unsuitable_for(Person,Drug)).

suppresses(Drug,Symptom) :- relieve(Drug,Symptom).

unsuitable_for(Person,Drug) :- aggravates(Drug,Conditon),

                                           suffers_from(Person,Condition).


Komentar (0)        Cetak        Beri tau temen        Atas


Artikel yang berhubungan:
» Script PHP Menampilkan Hasil Pencarian Multikategori
» Menyimpan Tulisan Arab Ke MySQL
» Tentang DOM di Javascript
» Script Multiple File Upload Dengan PHP
» Ide Pembuatan Script PHP Upload Download File Via Folder
» Multi Language dengan PHP
» Tutorial membuat program java (J2ME) di HP
» Tentang Bahasa Pemrograman Web
» jQuery Ajax Display for Loading Content
» Trick Upload PHP Auto Rename
» Sejarah Pemrograman bahasa java
» Cara Membuat Rss
» Sekilas Tentang Cake PHP
» Lebih dalam dengan operasi string bag.1
» Pengenalan dan Sejarah PHP


Artikel lain:
Materi hardware dan Software (05.27.2009)



 
  ::| Events
July 2010  
Mg Sn Sl Rb Km Jm Sb
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 

 
Bookmark and Share Page Ranking Tool