SlideShare a Scribd company logo
1 of 11
Download to read offline
User Guide PROgramming LOGic
                              Ir. S N M P Simamora, M.T.
                 Communication Systems Division, Pangalengge Educations

Pengantar Interpreter

Prolog adalah salah satu contoh Interpreter, meskipun ada juga dalam bentuk compiler. Yang
dimaksud dengan interpreter sebuah perangkat lunak, apabila memiliki ciri khas sebagai berikut:
     Menerjemahkan line-code baris per baris; sehingga langsung dikerjakan. Untuk itu source
     program tidak dituntut untuk ditulis secara lengkap dulu.
     Jika saat dijalankan (generate) ditemukan bugs, maka dapat langsung dicari kesalahannya
     dan diperbaiki. Hal ini memudahkan dilakukan secara interaktif.
     Pada saat proses penerjemahan tidak pernah menghasilkan object program (object code).
     Karena alasan inilah mengapa executable program juga tidak pernah ada dalam kamus
     interpreter.
     Proses penerjemahan dirasa lebih cepat dikarenakan baris per baris dari line-code langsung
     dijalankan, sehingga hasilnya dapat dilihat.
     Dalam membangun aplikasi pemrograman dirasa lebih lambat dikarenakan tidak dihasilkan
     executable program, sehingga proses interpretasi dilakukan berulang kali sampai kepada
     hasil yang diinginkan. Disamping itu juga source program masih tetap selalu digunakan jika
     ingin menjalankan aplikasi program.
     Karena alasan source program selalu digunakan menyebabkan keamanan atasnya sangat
     rentan untuk diedit oleh pihak lain.

Bahasa Prolog pertama kali dibuat pada tahun 1970 oleh Alain Cormerauer dan Phillippe
Roussel di Marseilles University, Prancis. Pengembangan lebih lanjut adalah di komputer mikro
sehingga disebut Microprolog.
Hal-hal yang cocok untuk diimplementasikannya Prolog Language seperti:
     Pemecahan masalah
     Robotika dan Sistem Pakar
     Pemakaian pangkalan data yang dinamik dan berhubungan
     Pemakaian bahasa sehari-hari dalam mengkomunikasikan kepada aplikasi
     Mendiagnosa sebuah problema kompleks

Bahasa Prolog dikenal lebih efisien dari bahasa pemrograman tingkat tinggi lain, sekalipun untuk
Bahasa Basic. Sebagai perbandingan untuk satu aplikasi pemrograman, Bahasa Prolog
membutuhkan line-code 10x lebih pendek dibandingkan dengan Bahasa Pascal.

Disamping itu juga Bahasa Prolog termasuk bahasa deklaratif, yakni terlebih dahulu menyajikan
fakta-fakta dan aturan-aturan yang diperlukan dalam menuju sebuah pemecahan masalah. Ini
berarti memungkinkan setiap penggunaan yang bekerja dengan informasi dan relasi-relasinya,
dan sebagai hasilnya didapatkan konklusi yang lebih pasti.

Bahasa Prolog selalu berpedoman kepada hubungan di antara kata-kata, anak kalimat, frasa dan
kontekstual. Untuk itu selalu dinamis dalam pemanfaatan natural language, sehingga seolah-olah
kita dapat mengkomunikasikan sesuatu dengan bahasa sehari-hari.

Bahasa Prolog bekerja secara efektif dengan fakta-fakta dan hubungannya sehingga lebih
memungkinkan dalam desain perangkat dari hubungan basis data, karena selalu menggali
terlebih dahulu dari dasar pengetahuan. Hal ini sangat mendekati dengan proses kerja dari basis
data yang menekankan kepada keterhubungan antara konsep-konsep yang dijabarkan dalam
sekumpulan data dan tingkatannya.

Lebih jauh dimungkinkan pengembangan Bahasa Prolog untuk bidang energi relativitas dan
nuklir yang menuntut solusi optimal pada masalah yang kompleks dan pelik.

                                                                                                   1
Dalam pembahasan kali ini digunakan interpreter Turbo Prolog v2.0 dari Borland Corp. pada
platform sistem operasi Windows’98 SE.




Seiring dengan perkembangan sistem operasi berbasis 32 bit (Graphical User Interface),
interpreter yang bisa menerjemahkan Bahasa Prolog contohnya seperti berikut ini: (berjalan pada
platform Windows ‘98)




                                                                                                  2
Beberapa Tipe Data dan Operator

            Tipe Domains                                       Penjelasan
Char                               Data numerik, huruf tunggal, atau simbol-simbol yang diapit oleh
                                   tanda peti (‘ … ’)
String                             Semua kombinasi dari angka, huruf, dan simbol-simbol lain yang
                                   diapit tanda petik ganda (“ … ”)
File                               File yang tersimpan di dalam disk (external memory maupun
                                   archival memory)
Integer                            Semua bilangan bulat kecuali floating-point
Real                               Semua bilangan bulat termasuk floating-point
Symbol                             Sama seperti pada tipe domains string, akan tetapi tanpa tanda
                                   petik.


         Operand-1            Operator                 Operand-2                     Hasil
Integer                         +,−,∗                    Integer                   Integer
Real                            +,−,∗                    Integer                     Real
Integer                         +,−,∗                      Real                      Real
Real                            +,−,∗                      Real                      Real
Integer / Real                    /                        Real                      Real
Integer                                                  Integer                   Integer
                                 div
Integer                                                  Integer                   Integer
                                mod


             Fungsi                                       Penjelasan
abs(X)                        Mencari harga absolut dari X
cos(X)                        Fungsi trigonometri untuk mencari nilai cosine sudut X
sin(X)                        Fungsi trigonometri untuk mencari nilai sine sudut X
tan(X)                        Fungsi trigonometri untuk mencari nilai tangent sudut X
arctan(X)                     Fungsi trigonometri untuk mencari nilai anti-tangent sudut X
exp(X)                        Mencari nilai eksponensial dari X
ln(X)                         Mencari nilai logaritma natural dari X
log(X)                        Mencari nilai logaritma dari X
sqrt(X)                       Mencari nilai akar dari X
                              Mendapatkan bilangan random real untuk interval: 0 ≤ X < 1
random(X)
                              Mendapatkan bilangan random integer untuk interval: 0 ≤ Y < X
random(X,Y)
round(X)                      Mendapatkan bilangan numerik dengan membulatkan nilai X
trunc(X)                      Menghilangkan angka desimal X



          Operator                                      Penjelasan
                                Lebih kecil daripada S
<
                                Lebih kecil atau sama dengan S
≤
                                Sama dengan S
=
                                Lebih besar daripada S
>
                                Lebih besar atau sama dengan S
≥
                                Tidak sama dengan S
<> atau ><
Note : S adalah sesuatu nilai numerik sembarang




                                                                                                      3
Aturan Sintaks Bahasa Prolog

    Domains
              …
              …
    Predicates
              …
              …
    Goals
              …
              …
    Clauses
              …
              …
    misalkan:
             Naek menyukai Bahasa Prolog
             Dr. Pardomuan menemukan komputer D76
             Aju Allen mendapatkan nilai A+ untuk mata kuliah Elektromagnetik
             Jika Aju Allen mendapatkan nilai A+ untuk mata kuliah Elektromagnetik, maka Yehuda juga

    Dalam Bahasa Prolog dituliskan sebagai berikut:
         suka(naek,”Bahasa Prolog”).
         menemukan(“Dr.Pardomuan”,”komputer D76”).
         dapat_nilai(aju_allen,”A+”,elektromagnetik).
         dapat_nilai(yehuda,nilai,mata_kuliah) if dapat_nilai(aju_allen,nilai,mata_kuliah).


Pengenalan Studi Kasus

   Kasus-1:
   Dalam sebuah hasil ujian EL-560 Pengolahan Sinyal Informasi, beberapa mahasiswa
   mendapatkan nilai sebagai berikut:
            M. Schmoth             B
            Naftali                A
            An Lah Kho             B
            Elvira                 C
            Abner                  C
   Seorang mahasiswa bernama Lewi selalu diprediksi prestasinya menyamai mahasiswa yang
   bernama Naftali.
   Buatlah fakta-fakta ini dalam Bahasa Prolog.

   Solusi:
   domains
     nama = string
     nilai = symbol
   predicates
     nilai_el560(nama,nilai)
   clauses
     nilai_el560(quot;M. Schmothquot;,b).
     nilai_el560(quot;Naftaliquot;,a).
     nilai_el560(quot;An Lah Khoquot;,b).
     nilai_el560(quot;Elviraquot;,c).
     nilai_el560(quot;Abnerquot;,c).
     nilai_el560(quot;Lewiquot;,Punten) if nilai_el560(quot;Naftaliquot;,Punten).


                                                                                                       4
Kasus-2:
Sebuah silsilah Toga Raja Sumba ditunjukkan berikut ini:
                  Raja Sumba




    Sihombing                   Simamora




          Purba                   Manalu                Debataraja   Rambe (Somerham)


Buatlah dalam Bahasa Prolog.

Solusi:
domains
  kakek = string
  ayah = string
  anak = string
  cucu = string
  buyut = string
  ompu = string
predicates
  anaknya(ayah,anak)
  cucunya(kakek,cucu)
  pomparanna(buyut,ompu)
clauses
  anaknya(quot;Raja Sumbaquot;,quot;Simamoraquot;).
  anaknya(quot;Raja Sumbaquot;,quot;Sihombingquot;).
  anaknya(quot;Simamoraquot;,quot;Purbaquot;).
  anaknya(quot;Simamoraquot;,quot;Manaluquot;).
  anaknya(quot;Simamoraquot;,quot;Debatarajaquot;).
  cucunya(quot;Raja Sumbaquot;,quot;Purbaquot;).
  cucunya(quot;Raja Sumbaquot;,quot;Manaluquot;).
  cucunya(quot;Raja Sumbaquot;,quot;Debatarajaquot;).
  pomparanna(quot;Debatarajaquot;,quot;Raja Sumbaquot;).
  pomparanna(quot;Rambequot;,Ompu) if pomparanna(quot;Debatarajaquot;,Ompu).


Kasus-3:
Silahkan analisa line-code Bahasa Prolog berikut ini:
domains
  suku = string
  negara = string
  kota = string
  pekerjaan = symbol
predicates
  kebangsaan(suku,negara)
  letaknya(kota,negara)
  domisil(suku,kota)
  legal(pekerjaan,kota)

                                                                                        5
clauses
  kebangsaan(quot;Batakquot;,quot;Indonesiaquot;).
  kebangsaan(quot;Melayuquot;,quot;Malaysiaquot;).
  kebangsaan(quot;Benggalingquot;,quot;Indiaquot;).
  letaknya(quot;Medanquot;,quot;Indonesiaquot;).
  letaknya(quot;Dolok Sanggulquot;,quot;Indonesiaquot;).
  domisil(quot;Batakquot;,quot;Humbangquot;).
  domisil(quot;Mandailingquot;,quot;Natalquot;).
  domisil(quot;Batakquot;,quot;Tobaquot;).
  legal(polisi,quot;Tiga Linggaquot;).
  legal(pengemis,quot;Jakartaquot;).
  legal(tukang_becak,Kota) if legal(pengemis,Kota).


Solusi:
Analisa-1:
Untuk domains symbol tidak diperbolehkan menggunakan huruf capital; huruf capital hanya
bisa dipergunakan untuk domains string dan untuk goals. Sebaliknya pada domains string,
meskipun telah huruf capital namun tidak diapit oleh tanda petik dua (“…”) tidak
diperbolehkan.
Berikutnya hanya di badan clauses saja diperbolehkan sebuah assignment diakhiri dengan
tanda titik (•).
Misalkan pada cuplikan line-code berikut ini adalah yang salah:
clauses
   legal(Pengemis,quot;Jakartaquot;).
   kebangsaan(Melayu,quot;Malaysiaquot;).
   letaknya(quot;Dolok Sanggulquot;,quot;Indonesiaquot;)


Analisa-2:
Bagian domains dapat dihilangkan asalkan tipenya menggantikan nama variable pada bagian
predicates.
Misalkan:
domains
  suku = string
  negara = string
   …
predicates
  kebangsaan(suku,negara)
  …
Digantikan menjadi:
predicates
  kebangsaan(string,string)
  …


Analisa-3:
Letak dari line-code berikut harus sekelompok.
Misalkan:
   …
  legal(pengemis,quot;Jakartaquot;).
  legal(tukang_becak,Kota) if legal(pengemis,Kota).
  …


                                                                                          6
Sehingga apabila tidak sekelompok dituliskan seperti berikut:
  …
  legal(tukang_becak,Kota) if legal(pengemis,Kota).
  domisil(quot;Mandailingquot;,quot;Natalquot;).
  domisil (quot;Batakquot;,quot;Tobaquot;).
  legal(polisi,quot;Tiga Linggaquot;).
  …

Akan muncul pesan kesalahan:
Clauses for the same predicate should be grouped.

Analisa-4:
Untuk menanyakan apakah Suku Batak berkebangsaan Indonesia :
Goal: kebangsaan(quot;Batakquot;,quot;Indonesiaquot;)
Yes

Untuk menanyakan letak Dolok Sanggul dimana :
Goal: letaknya(quot;Dolok Sanggulquot;,Dimana)
Dimana=Indonesia
1 Solution

Untuk menanyakan apakah Suku Melayu berkebangsaan Afrika Selatan :
Goal: kebangsaan(quot;Melayuquot;,quot;Afrika Selatanquot;)
No

Untuk menanyakan selain pekerjaan pengemis yang dilegalkan di Jakarta, apakah tukang
becak juga termasuk :
Goal: legal(tukang_becak,quot;Jakartaquot;)
Yes

Untuk menanyakan pekerjaan legal di beberapa kota berdasarkan fakta yang diberikan :
Goal: legal(Apa,Dimana)
Apa=polisi, Dimana=Tiga Lingga
Apa=pengemis, Dimana=Jakarta
Apa=tukang_becak, Dimana=Jakarta
3 Solutions

Untuk menanyakan Suku Batak berdomisil dimana saja:
Goal: domisil(quot;Batakquot;,Dimana)
Dimana=Humbang
Dimana=Toba
2 Solutions

Untuk menanyakan kota apa saja yang letaknya di Indonesia berdasar fakta yang disajikan:
Goal: letaknya(Apa,quot;Indonesiaquot;)
Apa=Medan
Apa=Dolok Sanggul
2 Solutions

Untuk menanyakan apakah kota Texas letaknya di Indonesia berdasar fakta yang disajikan:
Goal: letaknya(quot;Texasquot;,quot;
Indonesiaquot;)
No

                                                                                           7
Untuk menanyakan dimana letak kota Texas:
Goal: letaknya(quot;Texasquot;,Dimana)
No Solution
                                       Karena       berdasarkan    kamus
                                       pengetahuan, tidak disajikan fakta
                                       letak kota Texas



Kasus-4:
Bangunlah sebuah operator artihmatika sederhana dalam Bahasa Prolog, yang meliputi
empat dasar operasi artihematika terhadap dua buah operand yang diinput oleh user.
Silahkan analisa line-code yang telah dibangun.

Solusi:
domains
  op1 = integer
  op2 = integer
  op3 = integer
predicates
  kali(op1,op2,op3)
  bagi(op1,op2,op3)
  tambah(op1,op2,op3)
  kurang(op1,op2,op3)
clauses
  kali(A,B,X) if X=A*B.
  bagi(A,B,X) if X=A/B.
  tambah(A,B,X) if X=A+B.
  kurang(A,B,X) if X=A-B.


Analisa-1:
Untuk melakukan proses berikut → 50 ÷ 125, line-code-nya adalah:
Goal: bagi(50,125,X)
X=0
1 Solution

Namun mengapa X bernilai 0        , bagaimana jika domains untuk proses pembagian, kita
ubah sebagai berikut:
domains
  op1 = integer
  op2 = integer
  op3 = real
predicates
  kali(op1,op2,op3)
  bagi(op1,op2,op3)
  tambah(op1,op2,op3)
…

Sehingga saat kita panggil kembali menggunakan code yang tadi, didapatkan:
Goal: bagi(50,125,X)
X=0.4
1 Solution


                                                                                          8
Analisa-2:
Berikut akan dilakukan editing pada line-code untuk hasil yang sama, yakni sebagai berikut:
domains
  op1 = integer
  op2 = integer
  op3 = real
predicates
  kali(op1,op2,op3)
  bagi(op1,op2,op3)
  tambah(op1,op2,op3)
  kurang(op1,op2,op3)
goal
  bagi(50,125,Jawaban),write(Jawaban),nl.
clauses
  kali(A,B,X) if X=A*B.
  bagi(A,B,X) if X=A/B.
  tambah(A,B,X) if X=A+B.
  kurang(A,B,X) if X=A-B.

Untuk melakukan proses → 5 − (-3) , ditulis sebagai berikut:
…
goal
  kurang(5,-3,Haasil),write(Haasil),nl.
…

Namun yang harus diingiat bahwa tidak boleh menuliskan secara bersamaan seperti berikut:
…
goal
  kali(2,3,Hasil),write(Hasil),nl.
  bagi(50,125,Jawaban),write(Jawaban),nl.
  tambah(5,-7,Jawabann),write(Jawabann),nl.
  kurang(5,-3,Haasil),write(Haasil),nl.
…

Analisa-3:
Berikut akan dilakukan editing pada line-code untuk menghitung :
Log(2.5)
  144
ln(12.182493961)

goal                                0.39794000867
 N=log(2.5),
 write(N).

goal
                                      12
  N=sqrt(144),
  write(N).

goal
 N=ln(12.182493961),                    2.5
 write(N).



                                                                                              9
Kasus-5:
Hitunglah berapa panjang string dari kalimat berikut:
Communication Systems Division, Pangalengge Educations

Solusi:
goal
  X = quot;Communication Systems Division, Pangalengge Educationsquot;,
  str_len(X,N),
  write(N).
                                    54


Kasus-6:
Hitunglah berapa nilai logaritma natural dari 12.182493961 dengan menggunakan editing
pada line code sebelumnya.

Solusi:
domains
  op1 = real
  op2 = real
predicates
  log_nat(op1,op2)
clauses
  log_nat(X,N) :-
        N=ln(X).

Untuk mendapatkan hasil yang sama, dituliskan sebagai berikut:
Goal: log_nat(12.182493961,Berapa)
Berapa=2.5
1 Solution


Kasus-7:
Dua buah string disebutkan sebagai berikut:
Bahasa
dan
Prolog
Gabungkanlah dua buah string tersebut menggunakan sintaks: concat

Solusi:
goal
 X=quot;Bahasaquot;,
 Y=quot; Prologquot;,
 concat(X,Y,Gabung),
 write(Gabung).



Kasus-8:
Sebuah PFK → Ax2 + Bx + C
Carilah nilai diskriminannya dengan mendapatkan nilai masing-masing untuk elemen A, B, C
dari user.



                                                                                           10
Solusi:
   domains
     op1 = integer
     op2 = integer
     op3 = integer
     dis = real
   predicates
     diskriminan(op1,op2,op3,dis)
   clauses
     diskriminan(A,B,C,D) :-
         D=B*B-4*A*C.

   Misalkan untuk PFK → X2 − 3X + 2, maka didapatkan nilai diskriminanya adalah sebagai
   berikut:
   Goal: diskriminan(1,-3,2,Berapa)
   Berapa=1
   1 Solution

   Misalkan untuk PFK → X2 + X − 12, apakah nilai diskriminannya adalah −49, dapat
   ditanyakan sebagai berikut:
   Goal: diskriminan(1,1,-12,-49)
   No

   Ternyata bukan ☺☺, apakah 49?
   Goal: diskriminan(1,1,-12,49)
   Yes




Reference:
    Bratko, I, “Prolog Programming for Artificial Intelligence – 1st edition”, Addison-Wesley,
    Massachusetts, 1986.
    Clocksin, W.F and Mellish, C.S., “Programming in Prolog – 3rd edition”, Springer-Verlag,
    Berlin, 1987.
    Cohen, J., “A view of the origins and development of PROLOG – Communications of the
    Association for Computing Machinery”, 1988,
    Colomb, R.M., “Enhancing unification in PROLOG through clause indexing”, Journal of Logic
    Programming, 1991
    Covington, M.A., “Natural Language Processing for Prolog Programmers”, Prentice-Hall,
    Englewood Cliffs, New Jersey, 1994.




                                                                                                 11

More Related Content

What's hot

05 - Teknik Dasar AI - Planning.pdf
05 - Teknik Dasar AI - Planning.pdf05 - Teknik Dasar AI - Planning.pdf
05 - Teknik Dasar AI - Planning.pdfElvi Rahmi
 
Laporan KERJA PRAKTEK
Laporan KERJA PRAKTEKLaporan KERJA PRAKTEK
Laporan KERJA PRAKTEKyogapramudya4
 
Materi Rangkaian Digital I
Materi Rangkaian Digital IMateri Rangkaian Digital I
Materi Rangkaian Digital IAmien Nuryanto
 
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0Marlinda
 
2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)Kelinci Coklat
 
Lqr pada motor dc (kontrol optimal)
Lqr pada motor dc (kontrol optimal)Lqr pada motor dc (kontrol optimal)
Lqr pada motor dc (kontrol optimal)Pamor Gunoto
 
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
Program Pengurutan  (Sorting) dan Pencarian  (Searching) DataProgram Pengurutan  (Sorting) dan Pencarian  (Searching) Data
Program Pengurutan (Sorting) dan Pencarian (Searching) DataSimon Patabang
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaBuhori Muslim
 
Sum of product dan product of sum
Sum of product dan product of sumSum of product dan product of sum
Sum of product dan product of sumArlis Ikhla Afrina
 
Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)ahmad haidaroh
 
cara menghitung Minterm dan maxterm aljabar boolean
cara menghitung Minterm dan maxterm aljabar booleancara menghitung Minterm dan maxterm aljabar boolean
cara menghitung Minterm dan maxterm aljabar booleanAwas Andreas
 
Instrumentasi
InstrumentasiInstrumentasi
Instrumentasipolmed
 

What's hot (20)

05 - Teknik Dasar AI - Planning.pdf
05 - Teknik Dasar AI - Planning.pdf05 - Teknik Dasar AI - Planning.pdf
05 - Teknik Dasar AI - Planning.pdf
 
Register geser
Register geserRegister geser
Register geser
 
Laporan KERJA PRAKTEK
Laporan KERJA PRAKTEKLaporan KERJA PRAKTEK
Laporan KERJA PRAKTEK
 
Materi Rangkaian Digital I
Materi Rangkaian Digital IMateri Rangkaian Digital I
Materi Rangkaian Digital I
 
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0
APLIKASI DATA BARANG DAN DATA SUPPLIER MENGGUNAKAN VISUAL BASIC 6.0
 
Pengenalan bahasa C++
Pengenalan bahasa C++Pengenalan bahasa C++
Pengenalan bahasa C++
 
2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)
 
Lqr pada motor dc (kontrol optimal)
Lqr pada motor dc (kontrol optimal)Lqr pada motor dc (kontrol optimal)
Lqr pada motor dc (kontrol optimal)
 
Soal soal adc 2
Soal soal adc 2Soal soal adc 2
Soal soal adc 2
 
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
Program Pengurutan  (Sorting) dan Pencarian  (Searching) DataProgram Pengurutan  (Sorting) dan Pencarian  (Searching) Data
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
 
Ai 6
Ai 6Ai 6
Ai 6
 
14237 19 & 20 jst
14237 19 & 20 jst14237 19 & 20 jst
14237 19 & 20 jst
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logika
 
Sum of product dan product of sum
Sum of product dan product of sumSum of product dan product of sum
Sum of product dan product of sum
 
Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)
 
Bab iv
Bab ivBab iv
Bab iv
 
Array dan Contoh
Array dan ContohArray dan Contoh
Array dan Contoh
 
cara menghitung Minterm dan maxterm aljabar boolean
cara menghitung Minterm dan maxterm aljabar booleancara menghitung Minterm dan maxterm aljabar boolean
cara menghitung Minterm dan maxterm aljabar boolean
 
Instrumentasi
InstrumentasiInstrumentasi
Instrumentasi
 

Similar to Programming Logic (PROLOG)

Similar to Programming Logic (PROLOG) (20)

E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pelatihan Bahasa R
Pelatihan Bahasa RPelatihan Bahasa R
Pelatihan Bahasa R
 
Java2
Java2Java2
Java2
 
Pseudocode
PseudocodePseudocode
Pseudocode
 
Struktur Level Data
Struktur Level DataStruktur Level Data
Struktur Level Data
 
Praktikum 1 - Prolan.pdf
Praktikum 1 - Prolan.pdfPraktikum 1 - Prolan.pdf
Praktikum 1 - Prolan.pdf
 
Bab 2-intro-python
Bab 2-intro-pythonBab 2-intro-python
Bab 2-intro-python
 
Cc++
Cc++Cc++
Cc++
 
Dasar pemrograman basic
Dasar pemrograman basicDasar pemrograman basic
Dasar pemrograman basic
 
Galeri PythonTeX
Galeri PythonTeXGaleri PythonTeX
Galeri PythonTeX
 
Pertemuan 3 - Konsep Dasar Pemrograman
Pertemuan 3 - Konsep Dasar PemrogramanPertemuan 3 - Konsep Dasar Pemrograman
Pertemuan 3 - Konsep Dasar Pemrograman
 
Bahasa pemograman
Bahasa pemograman Bahasa pemograman
Bahasa pemograman
 
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
3122500055_Fadhilah Margi Pertiwi_1 D3 IT B_Laporan Praktikum WPW 1.pdf
 
bab3_alpro1.pptx
bab3_alpro1.pptxbab3_alpro1.pptx
bab3_alpro1.pptx
 
Wirman algoritma
Wirman algoritmaWirman algoritma
Wirman algoritma
 
Faris persentasi
Faris persentasiFaris persentasi
Faris persentasi
 
Chendra (pemrograman)
Chendra (pemrograman)Chendra (pemrograman)
Chendra (pemrograman)
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 

More from S N M P Simamora

Algoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementAlgoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementS N M P Simamora
 
konsep mnemonic-instruction
konsep mnemonic-instructionkonsep mnemonic-instruction
konsep mnemonic-instructionS N M P Simamora
 
Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1S N M P Simamora
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110S N M P Simamora
 
Cover paper Algoritma Symboolon
Cover paper Algoritma SymboolonCover paper Algoritma Symboolon
Cover paper Algoritma SymboolonS N M P Simamora
 
Silabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerSilabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerS N M P Simamora
 
Konsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerKonsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerS N M P Simamora
 
Silabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiSilabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiS N M P Simamora
 
Teknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaTeknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaS N M P Simamora
 
Model Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaModel Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaS N M P Simamora
 
Konsep dan Terapan Matriks
Konsep dan Terapan MatriksKonsep dan Terapan Matriks
Konsep dan Terapan MatriksS N M P Simamora
 
Telekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiTelekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiS N M P Simamora
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptS N M P Simamora
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptS N M P Simamora
 

More from S N M P Simamora (20)

Power over-ethernet
Power over-ethernetPower over-ethernet
Power over-ethernet
 
Algoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementAlgoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statement
 
konsep mnemonic-instruction
konsep mnemonic-instructionkonsep mnemonic-instruction
konsep mnemonic-instruction
 
Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110
 
Cover paper Algoritma Symboolon
Cover paper Algoritma SymboolonCover paper Algoritma Symboolon
Cover paper Algoritma Symboolon
 
Algoritma Symboolon
Algoritma SymboolonAlgoritma Symboolon
Algoritma Symboolon
 
Silabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerSilabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi Komputer
 
Wireless Sensor Network
Wireless Sensor NetworkWireless Sensor Network
Wireless Sensor Network
 
Konsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerKonsep Process dalam Sistem Komputer
Konsep Process dalam Sistem Komputer
 
ADICT 2012 Presentation
ADICT 2012 PresentationADICT 2012 Presentation
ADICT 2012 Presentation
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Silabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiSilabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem Operasi
 
Teknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaTeknologi Wireless dan Karakteristiknya
Teknologi Wireless dan Karakteristiknya
 
Model Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaModel Eksponensial dan Logaritma
Model Eksponensial dan Logaritma
 
Formula Matematika
Formula MatematikaFormula Matematika
Formula Matematika
 
Konsep dan Terapan Matriks
Konsep dan Terapan MatriksKonsep dan Terapan Matriks
Konsep dan Terapan Matriks
 
Telekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiTelekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi Informasi
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 

Recently uploaded

aksi nyata pendidikan inklusif.pelatihan mandiri pmm
aksi nyata pendidikan inklusif.pelatihan mandiri pmmaksi nyata pendidikan inklusif.pelatihan mandiri pmm
aksi nyata pendidikan inklusif.pelatihan mandiri pmmeunikekambe10
 
Panduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfPanduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfandriasyulianto57
 
Materi power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptMateri power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptAcemediadotkoM1
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxmtsmampunbarub4
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxHeruFebrianto3
 
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
Teknik Menjawab Kertas P.Moral SPM  2024.pptxTeknik Menjawab Kertas P.Moral SPM  2024.pptx
Teknik Menjawab Kertas P.Moral SPM 2024.pptxwongcp2
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxFardanassegaf
 
PRESENTASI EEC social mobile, and local marketing.pptx
PRESENTASI EEC social mobile, and local marketing.pptxPRESENTASI EEC social mobile, and local marketing.pptx
PRESENTASI EEC social mobile, and local marketing.pptxPCMBANDUNGANKabSemar
 
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxsyafnasir
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfCloverash1
 
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanTPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanNiKomangRaiVerawati
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKARenoMardhatillahS
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisNazla aulia
 
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.aechacha366
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaSABDA
 
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasMembuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasHardaminOde2
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...Kanaidi ken
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiIntanHanifah4
 
SILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxSILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxrahmaamaw03
 

Recently uploaded (20)

aksi nyata pendidikan inklusif.pelatihan mandiri pmm
aksi nyata pendidikan inklusif.pelatihan mandiri pmmaksi nyata pendidikan inklusif.pelatihan mandiri pmm
aksi nyata pendidikan inklusif.pelatihan mandiri pmm
 
Panduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfPanduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdf
 
Materi power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptMateri power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .ppt
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
 
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptxPPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
PPT Materi Jenis - Jenis Alat Pembayaran Tunai dan Non-tunai.pptx
 
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
Teknik Menjawab Kertas P.Moral SPM  2024.pptxTeknik Menjawab Kertas P.Moral SPM  2024.pptx
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
 
PRESENTASI EEC social mobile, and local marketing.pptx
PRESENTASI EEC social mobile, and local marketing.pptxPRESENTASI EEC social mobile, and local marketing.pptx
PRESENTASI EEC social mobile, and local marketing.pptx
 
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdf
 
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanTPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara Inggris
 
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
 
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasMembuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajii
 
SILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxSILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docx
 

Programming Logic (PROLOG)

  • 1. User Guide PROgramming LOGic Ir. S N M P Simamora, M.T. Communication Systems Division, Pangalengge Educations Pengantar Interpreter Prolog adalah salah satu contoh Interpreter, meskipun ada juga dalam bentuk compiler. Yang dimaksud dengan interpreter sebuah perangkat lunak, apabila memiliki ciri khas sebagai berikut: Menerjemahkan line-code baris per baris; sehingga langsung dikerjakan. Untuk itu source program tidak dituntut untuk ditulis secara lengkap dulu. Jika saat dijalankan (generate) ditemukan bugs, maka dapat langsung dicari kesalahannya dan diperbaiki. Hal ini memudahkan dilakukan secara interaktif. Pada saat proses penerjemahan tidak pernah menghasilkan object program (object code). Karena alasan inilah mengapa executable program juga tidak pernah ada dalam kamus interpreter. Proses penerjemahan dirasa lebih cepat dikarenakan baris per baris dari line-code langsung dijalankan, sehingga hasilnya dapat dilihat. Dalam membangun aplikasi pemrograman dirasa lebih lambat dikarenakan tidak dihasilkan executable program, sehingga proses interpretasi dilakukan berulang kali sampai kepada hasil yang diinginkan. Disamping itu juga source program masih tetap selalu digunakan jika ingin menjalankan aplikasi program. Karena alasan source program selalu digunakan menyebabkan keamanan atasnya sangat rentan untuk diedit oleh pihak lain. Bahasa Prolog pertama kali dibuat pada tahun 1970 oleh Alain Cormerauer dan Phillippe Roussel di Marseilles University, Prancis. Pengembangan lebih lanjut adalah di komputer mikro sehingga disebut Microprolog. Hal-hal yang cocok untuk diimplementasikannya Prolog Language seperti: Pemecahan masalah Robotika dan Sistem Pakar Pemakaian pangkalan data yang dinamik dan berhubungan Pemakaian bahasa sehari-hari dalam mengkomunikasikan kepada aplikasi Mendiagnosa sebuah problema kompleks Bahasa Prolog dikenal lebih efisien dari bahasa pemrograman tingkat tinggi lain, sekalipun untuk Bahasa Basic. Sebagai perbandingan untuk satu aplikasi pemrograman, Bahasa Prolog membutuhkan line-code 10x lebih pendek dibandingkan dengan Bahasa Pascal. Disamping itu juga Bahasa Prolog termasuk bahasa deklaratif, yakni terlebih dahulu menyajikan fakta-fakta dan aturan-aturan yang diperlukan dalam menuju sebuah pemecahan masalah. Ini berarti memungkinkan setiap penggunaan yang bekerja dengan informasi dan relasi-relasinya, dan sebagai hasilnya didapatkan konklusi yang lebih pasti. Bahasa Prolog selalu berpedoman kepada hubungan di antara kata-kata, anak kalimat, frasa dan kontekstual. Untuk itu selalu dinamis dalam pemanfaatan natural language, sehingga seolah-olah kita dapat mengkomunikasikan sesuatu dengan bahasa sehari-hari. Bahasa Prolog bekerja secara efektif dengan fakta-fakta dan hubungannya sehingga lebih memungkinkan dalam desain perangkat dari hubungan basis data, karena selalu menggali terlebih dahulu dari dasar pengetahuan. Hal ini sangat mendekati dengan proses kerja dari basis data yang menekankan kepada keterhubungan antara konsep-konsep yang dijabarkan dalam sekumpulan data dan tingkatannya. Lebih jauh dimungkinkan pengembangan Bahasa Prolog untuk bidang energi relativitas dan nuklir yang menuntut solusi optimal pada masalah yang kompleks dan pelik. 1
  • 2. Dalam pembahasan kali ini digunakan interpreter Turbo Prolog v2.0 dari Borland Corp. pada platform sistem operasi Windows’98 SE. Seiring dengan perkembangan sistem operasi berbasis 32 bit (Graphical User Interface), interpreter yang bisa menerjemahkan Bahasa Prolog contohnya seperti berikut ini: (berjalan pada platform Windows ‘98) 2
  • 3. Beberapa Tipe Data dan Operator Tipe Domains Penjelasan Char Data numerik, huruf tunggal, atau simbol-simbol yang diapit oleh tanda peti (‘ … ’) String Semua kombinasi dari angka, huruf, dan simbol-simbol lain yang diapit tanda petik ganda (“ … ”) File File yang tersimpan di dalam disk (external memory maupun archival memory) Integer Semua bilangan bulat kecuali floating-point Real Semua bilangan bulat termasuk floating-point Symbol Sama seperti pada tipe domains string, akan tetapi tanpa tanda petik. Operand-1 Operator Operand-2 Hasil Integer +,−,∗ Integer Integer Real +,−,∗ Integer Real Integer +,−,∗ Real Real Real +,−,∗ Real Real Integer / Real / Real Real Integer Integer Integer div Integer Integer Integer mod Fungsi Penjelasan abs(X) Mencari harga absolut dari X cos(X) Fungsi trigonometri untuk mencari nilai cosine sudut X sin(X) Fungsi trigonometri untuk mencari nilai sine sudut X tan(X) Fungsi trigonometri untuk mencari nilai tangent sudut X arctan(X) Fungsi trigonometri untuk mencari nilai anti-tangent sudut X exp(X) Mencari nilai eksponensial dari X ln(X) Mencari nilai logaritma natural dari X log(X) Mencari nilai logaritma dari X sqrt(X) Mencari nilai akar dari X Mendapatkan bilangan random real untuk interval: 0 ≤ X < 1 random(X) Mendapatkan bilangan random integer untuk interval: 0 ≤ Y < X random(X,Y) round(X) Mendapatkan bilangan numerik dengan membulatkan nilai X trunc(X) Menghilangkan angka desimal X Operator Penjelasan Lebih kecil daripada S < Lebih kecil atau sama dengan S ≤ Sama dengan S = Lebih besar daripada S > Lebih besar atau sama dengan S ≥ Tidak sama dengan S <> atau >< Note : S adalah sesuatu nilai numerik sembarang 3
  • 4. Aturan Sintaks Bahasa Prolog Domains … … Predicates … … Goals … … Clauses … … misalkan: Naek menyukai Bahasa Prolog Dr. Pardomuan menemukan komputer D76 Aju Allen mendapatkan nilai A+ untuk mata kuliah Elektromagnetik Jika Aju Allen mendapatkan nilai A+ untuk mata kuliah Elektromagnetik, maka Yehuda juga Dalam Bahasa Prolog dituliskan sebagai berikut: suka(naek,”Bahasa Prolog”). menemukan(“Dr.Pardomuan”,”komputer D76”). dapat_nilai(aju_allen,”A+”,elektromagnetik). dapat_nilai(yehuda,nilai,mata_kuliah) if dapat_nilai(aju_allen,nilai,mata_kuliah). Pengenalan Studi Kasus Kasus-1: Dalam sebuah hasil ujian EL-560 Pengolahan Sinyal Informasi, beberapa mahasiswa mendapatkan nilai sebagai berikut: M. Schmoth B Naftali A An Lah Kho B Elvira C Abner C Seorang mahasiswa bernama Lewi selalu diprediksi prestasinya menyamai mahasiswa yang bernama Naftali. Buatlah fakta-fakta ini dalam Bahasa Prolog. Solusi: domains nama = string nilai = symbol predicates nilai_el560(nama,nilai) clauses nilai_el560(quot;M. Schmothquot;,b). nilai_el560(quot;Naftaliquot;,a). nilai_el560(quot;An Lah Khoquot;,b). nilai_el560(quot;Elviraquot;,c). nilai_el560(quot;Abnerquot;,c). nilai_el560(quot;Lewiquot;,Punten) if nilai_el560(quot;Naftaliquot;,Punten). 4
  • 5. Kasus-2: Sebuah silsilah Toga Raja Sumba ditunjukkan berikut ini: Raja Sumba Sihombing Simamora Purba Manalu Debataraja Rambe (Somerham) Buatlah dalam Bahasa Prolog. Solusi: domains kakek = string ayah = string anak = string cucu = string buyut = string ompu = string predicates anaknya(ayah,anak) cucunya(kakek,cucu) pomparanna(buyut,ompu) clauses anaknya(quot;Raja Sumbaquot;,quot;Simamoraquot;). anaknya(quot;Raja Sumbaquot;,quot;Sihombingquot;). anaknya(quot;Simamoraquot;,quot;Purbaquot;). anaknya(quot;Simamoraquot;,quot;Manaluquot;). anaknya(quot;Simamoraquot;,quot;Debatarajaquot;). cucunya(quot;Raja Sumbaquot;,quot;Purbaquot;). cucunya(quot;Raja Sumbaquot;,quot;Manaluquot;). cucunya(quot;Raja Sumbaquot;,quot;Debatarajaquot;). pomparanna(quot;Debatarajaquot;,quot;Raja Sumbaquot;). pomparanna(quot;Rambequot;,Ompu) if pomparanna(quot;Debatarajaquot;,Ompu). Kasus-3: Silahkan analisa line-code Bahasa Prolog berikut ini: domains suku = string negara = string kota = string pekerjaan = symbol predicates kebangsaan(suku,negara) letaknya(kota,negara) domisil(suku,kota) legal(pekerjaan,kota) 5
  • 6. clauses kebangsaan(quot;Batakquot;,quot;Indonesiaquot;). kebangsaan(quot;Melayuquot;,quot;Malaysiaquot;). kebangsaan(quot;Benggalingquot;,quot;Indiaquot;). letaknya(quot;Medanquot;,quot;Indonesiaquot;). letaknya(quot;Dolok Sanggulquot;,quot;Indonesiaquot;). domisil(quot;Batakquot;,quot;Humbangquot;). domisil(quot;Mandailingquot;,quot;Natalquot;). domisil(quot;Batakquot;,quot;Tobaquot;). legal(polisi,quot;Tiga Linggaquot;). legal(pengemis,quot;Jakartaquot;). legal(tukang_becak,Kota) if legal(pengemis,Kota). Solusi: Analisa-1: Untuk domains symbol tidak diperbolehkan menggunakan huruf capital; huruf capital hanya bisa dipergunakan untuk domains string dan untuk goals. Sebaliknya pada domains string, meskipun telah huruf capital namun tidak diapit oleh tanda petik dua (“…”) tidak diperbolehkan. Berikutnya hanya di badan clauses saja diperbolehkan sebuah assignment diakhiri dengan tanda titik (•). Misalkan pada cuplikan line-code berikut ini adalah yang salah: clauses legal(Pengemis,quot;Jakartaquot;). kebangsaan(Melayu,quot;Malaysiaquot;). letaknya(quot;Dolok Sanggulquot;,quot;Indonesiaquot;) Analisa-2: Bagian domains dapat dihilangkan asalkan tipenya menggantikan nama variable pada bagian predicates. Misalkan: domains suku = string negara = string … predicates kebangsaan(suku,negara) … Digantikan menjadi: predicates kebangsaan(string,string) … Analisa-3: Letak dari line-code berikut harus sekelompok. Misalkan: … legal(pengemis,quot;Jakartaquot;). legal(tukang_becak,Kota) if legal(pengemis,Kota). … 6
  • 7. Sehingga apabila tidak sekelompok dituliskan seperti berikut: … legal(tukang_becak,Kota) if legal(pengemis,Kota). domisil(quot;Mandailingquot;,quot;Natalquot;). domisil (quot;Batakquot;,quot;Tobaquot;). legal(polisi,quot;Tiga Linggaquot;). … Akan muncul pesan kesalahan: Clauses for the same predicate should be grouped. Analisa-4: Untuk menanyakan apakah Suku Batak berkebangsaan Indonesia : Goal: kebangsaan(quot;Batakquot;,quot;Indonesiaquot;) Yes Untuk menanyakan letak Dolok Sanggul dimana : Goal: letaknya(quot;Dolok Sanggulquot;,Dimana) Dimana=Indonesia 1 Solution Untuk menanyakan apakah Suku Melayu berkebangsaan Afrika Selatan : Goal: kebangsaan(quot;Melayuquot;,quot;Afrika Selatanquot;) No Untuk menanyakan selain pekerjaan pengemis yang dilegalkan di Jakarta, apakah tukang becak juga termasuk : Goal: legal(tukang_becak,quot;Jakartaquot;) Yes Untuk menanyakan pekerjaan legal di beberapa kota berdasarkan fakta yang diberikan : Goal: legal(Apa,Dimana) Apa=polisi, Dimana=Tiga Lingga Apa=pengemis, Dimana=Jakarta Apa=tukang_becak, Dimana=Jakarta 3 Solutions Untuk menanyakan Suku Batak berdomisil dimana saja: Goal: domisil(quot;Batakquot;,Dimana) Dimana=Humbang Dimana=Toba 2 Solutions Untuk menanyakan kota apa saja yang letaknya di Indonesia berdasar fakta yang disajikan: Goal: letaknya(Apa,quot;Indonesiaquot;) Apa=Medan Apa=Dolok Sanggul 2 Solutions Untuk menanyakan apakah kota Texas letaknya di Indonesia berdasar fakta yang disajikan: Goal: letaknya(quot;Texasquot;,quot; Indonesiaquot;) No 7
  • 8. Untuk menanyakan dimana letak kota Texas: Goal: letaknya(quot;Texasquot;,Dimana) No Solution Karena berdasarkan kamus pengetahuan, tidak disajikan fakta letak kota Texas Kasus-4: Bangunlah sebuah operator artihmatika sederhana dalam Bahasa Prolog, yang meliputi empat dasar operasi artihematika terhadap dua buah operand yang diinput oleh user. Silahkan analisa line-code yang telah dibangun. Solusi: domains op1 = integer op2 = integer op3 = integer predicates kali(op1,op2,op3) bagi(op1,op2,op3) tambah(op1,op2,op3) kurang(op1,op2,op3) clauses kali(A,B,X) if X=A*B. bagi(A,B,X) if X=A/B. tambah(A,B,X) if X=A+B. kurang(A,B,X) if X=A-B. Analisa-1: Untuk melakukan proses berikut → 50 ÷ 125, line-code-nya adalah: Goal: bagi(50,125,X) X=0 1 Solution Namun mengapa X bernilai 0 , bagaimana jika domains untuk proses pembagian, kita ubah sebagai berikut: domains op1 = integer op2 = integer op3 = real predicates kali(op1,op2,op3) bagi(op1,op2,op3) tambah(op1,op2,op3) … Sehingga saat kita panggil kembali menggunakan code yang tadi, didapatkan: Goal: bagi(50,125,X) X=0.4 1 Solution 8
  • 9. Analisa-2: Berikut akan dilakukan editing pada line-code untuk hasil yang sama, yakni sebagai berikut: domains op1 = integer op2 = integer op3 = real predicates kali(op1,op2,op3) bagi(op1,op2,op3) tambah(op1,op2,op3) kurang(op1,op2,op3) goal bagi(50,125,Jawaban),write(Jawaban),nl. clauses kali(A,B,X) if X=A*B. bagi(A,B,X) if X=A/B. tambah(A,B,X) if X=A+B. kurang(A,B,X) if X=A-B. Untuk melakukan proses → 5 − (-3) , ditulis sebagai berikut: … goal kurang(5,-3,Haasil),write(Haasil),nl. … Namun yang harus diingiat bahwa tidak boleh menuliskan secara bersamaan seperti berikut: … goal kali(2,3,Hasil),write(Hasil),nl. bagi(50,125,Jawaban),write(Jawaban),nl. tambah(5,-7,Jawabann),write(Jawabann),nl. kurang(5,-3,Haasil),write(Haasil),nl. … Analisa-3: Berikut akan dilakukan editing pada line-code untuk menghitung : Log(2.5) 144 ln(12.182493961) goal 0.39794000867 N=log(2.5), write(N). goal 12 N=sqrt(144), write(N). goal N=ln(12.182493961), 2.5 write(N). 9
  • 10. Kasus-5: Hitunglah berapa panjang string dari kalimat berikut: Communication Systems Division, Pangalengge Educations Solusi: goal X = quot;Communication Systems Division, Pangalengge Educationsquot;, str_len(X,N), write(N). 54 Kasus-6: Hitunglah berapa nilai logaritma natural dari 12.182493961 dengan menggunakan editing pada line code sebelumnya. Solusi: domains op1 = real op2 = real predicates log_nat(op1,op2) clauses log_nat(X,N) :- N=ln(X). Untuk mendapatkan hasil yang sama, dituliskan sebagai berikut: Goal: log_nat(12.182493961,Berapa) Berapa=2.5 1 Solution Kasus-7: Dua buah string disebutkan sebagai berikut: Bahasa dan Prolog Gabungkanlah dua buah string tersebut menggunakan sintaks: concat Solusi: goal X=quot;Bahasaquot;, Y=quot; Prologquot;, concat(X,Y,Gabung), write(Gabung). Kasus-8: Sebuah PFK → Ax2 + Bx + C Carilah nilai diskriminannya dengan mendapatkan nilai masing-masing untuk elemen A, B, C dari user. 10
  • 11. Solusi: domains op1 = integer op2 = integer op3 = integer dis = real predicates diskriminan(op1,op2,op3,dis) clauses diskriminan(A,B,C,D) :- D=B*B-4*A*C. Misalkan untuk PFK → X2 − 3X + 2, maka didapatkan nilai diskriminanya adalah sebagai berikut: Goal: diskriminan(1,-3,2,Berapa) Berapa=1 1 Solution Misalkan untuk PFK → X2 + X − 12, apakah nilai diskriminannya adalah −49, dapat ditanyakan sebagai berikut: Goal: diskriminan(1,1,-12,-49) No Ternyata bukan ☺☺, apakah 49? Goal: diskriminan(1,1,-12,49) Yes Reference: Bratko, I, “Prolog Programming for Artificial Intelligence – 1st edition”, Addison-Wesley, Massachusetts, 1986. Clocksin, W.F and Mellish, C.S., “Programming in Prolog – 3rd edition”, Springer-Verlag, Berlin, 1987. Cohen, J., “A view of the origins and development of PROLOG – Communications of the Association for Computing Machinery”, 1988, Colomb, R.M., “Enhancing unification in PROLOG through clause indexing”, Journal of Logic Programming, 1991 Covington, M.A., “Natural Language Processing for Prolog Programmers”, Prentice-Hall, Englewood Cliffs, New Jersey, 1994. 11