Iklan

Kamis, 24 Mei 2012

Struktur Turbo Prolog


1. Pendahuluan
Prolog merupakan bahasadeklaratif. Artinya jika kita memberi fakta dan aturan, Prolog akan menyelesaikan problem secara deduktif, atau dari banyak fakta dan aturan kemudian diturunkan kesimpulan sebagai jawaban. Hal ini berbeda dengan bahasa prosedural seperti Pascal atau C. Dalam bahasa prosedural, pemrogram harus memberi perintah untuk memecahkan masalah langkah demi langkah.

2. Dasar Program Prolog
a. Fakta
            Fakta adalah suatu kenyataan atau kebenaran yang diketahui. Fakta menyatakan hubungan (relasi) antara dua objek (benda) atau lebih. Fakta dapat pula menunjukkan sifat suatu objek.
Misalkan hubungan keluarga ‘orang tua ‘, dapat dituliskan dengan suatu relasi orangtua(X,Y).
contoh :           orangtua(adi,ali)
                        orangtua(ani,ali)
Orangtua disebut sebagai relasi atau juga predikat, sedangkan yang berada dalam tanda kurung disebut argumen.
Contoh  fakta yang menunjukkan sifat adalah :
            gula berasa manis
dapat ditulis sebagai
            manis(gula).

b. Aturan
            Untuk membuat suatu aturan, kita hanya perlu suatu rumusan logika. Misalkan fakta yang memperlihatkan relasi orang tua, maka jika kita ingin menyatakan relasi tentang anak atau kakek, kita harus merumuskan apa hubungan antara orangtue dan anak juga orangtua dan kakek.
            Dalam relasi orang tua maka aturan relasi untuk anak adalah :
anak(Y,X) if orangtua(X,Y).
            Sedangkan aturan untuk relasi kakek adalah :
            kakek(X,Z) if laki_laki(X) and orangtua(X,Y) and orangtua(Y,Z).

            Dalam Prolog if ,and, or ditulis masing-masing dengan tanda “ :-“, “,”, “ ;”.
Sehingga aturan di atas dapat ditulis sebagai berikut :
            kakek(X,Z):-laki_laki(X), orangtua(X,Y), orangtua(Y,Z).
            anak(Y,X):-orangtua(X,Y).

3. Struktur Program Turbo Prolog
            Secara umum program Turbo Prolog terdiri dari Domains, Predicates, Clause dan Goal.
A. Bagian Domains
            Domains dalam Prolog seperti type dalam Pascal. Di bagian Domains, kita menyatakan jenis suatu variabel atau argumen. Contoh :
Domains
            NamaOrang = symbol
            Alamat = string
            Umur = integer
Misalkan kita miliki predikat data(NamaOrang, Alamat, Umur), maka domain dalam predikat ini adalah milik argumen pada posisi yang ditempati domain dalam predikat tersebut.
            Jika kita tidak mempergunakan domains sendiri, kita hanya boleh menggunakan domain standar, seperti :
            data(symbol, string, integer)
            Domains standar dalam Turbo Prolog adalah :
a. char              :Karakter tunggal diapit tanda kutip tunggal ‘a’, ‘b’, ‘\58’.
b. integer         :Bilangan bulat dari –32768 sampai dengan 32767. Integer heksadesimal diawali dengan   tanda ($).
c. real               : Bilangan real dari 1 x 10-307 sampai 1 x 10308. Jika integer diberikan pada argumen real maka akan langsung diubah ke real.
d. string           : Rentetan karakter tang diapit tanda kutip ganda seperti “Jalan Sangkuriang”. Panjang maksimum 255 karakter, sedangkan jika string tersebut dari file, atau terkandung dalam program, bisa mencapai 64 Kbyte.
e. symbol         : Rangkaian huruf, angka dan garis bawah, asalkan karakter pertama huruf kecil, tidak mengandung spasi/karakter khusus.
            Selain domain standar ada domain lain yakni : domain file, domain list, domain majemuk, domain yang telah ditetapkan. Yang akan dijelaskan di bab selanjutnya.
B. Bagian Predicates
            Kita harus mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Turbo Prolog tidak akan mengenalnya. Namun untuk predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan.
Misalkan untuk domains seperti di atas dapat dibuat predicates
            Predicates
            menu(integer)
            data(NamaOrang, Alamat, Umur)
Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen.
            Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka, garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh mengandung spasi, tanda minus, asteris atau garis miring.
C. Bagian Clauses
            Sekumpulan klausa dari predikat yang sama harus disatukan (dikelompokkan) dalam bagian Clauses dan disebut prosedur. Bila melakukan pemanggilan klausa atau matching, turbo Prolog melacaknya dari atas ke bawah.
Misalkan
            Clauses
            menu(1):- data(NamaOrang, Alamat, Umur), Umur > 50.
D. Bagian Goal
Goal dalam turbo Prolog ada 2 macam yakni :
a. Goal eksternal
b. Goal internal
            Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal internal yang di simpan pada bagian Goal.
            Sebenarnya goal inilah yang dicari dan dipanggil pada saat program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya, program berhenti dalam keadaan gagal.
Contoh :
            Predicates
                        tulis(string)
            Goal
                        tulis(X),
                        write(X).
            Clauses
                        tulis(“Bandung”).
                        tulis(“Yogya”).
                        tulis(“Jakarta”).
            Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya, goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar :
            X = Bandung
            X = Yogya
            X = Jakarta

            3 solutions
E. Bagian Lain
            selain bagian utama di atas, pada Prolog terdapat bagian lain yaitu :
  • bagian Database
  • bagian Constants
  • bagian Global
  • bagian petunjuk kompiler

a. Bagian Database
            Program Turbo Prolog merupakan kumpulan fakta dan aturan.Terkadang kita perlu memperbarui data selagi program berjalan. Dalam hal ini fakta-fakta tersebut merupakan basis data dinamik yang dapat berubah pada saat program berjalan. Turbo Prolog menyediakan tempat untuk menyatakan fakta dalam program yang merupakan bagian dari basis data dinamik (berubah), yakni bagian database. Diuraikan pada bagian selanjutnya.
b. Bagian Constants
            Bagian Constants, disediakan turbo Prolog untuk mendeklarasikan konstanta.
Contoh :
            constants
                        part_1 = 200
                        pi = 3.141592653
                        r = 10.5
c. Bagian Global
            Bagian global digunakan untuk menyatakan domains, database dan predicates global. Jika tidak dinyatakan demikian, maka turbo Prolog menganggapnya sebagai lokal.
d. Petunjuk kompiler
            Petunjuk kompiler digunakan untuk memberi petunjuk atau perintah pada kompiler. Misalnya include, untuk menyertakan file lain. trace untuk mengetahui bagaimana Turbo Prolog mencari jawaban atau mengerjakan program.

4. Contoh Program
            Selanjutnya perhatikan contoh program sederhana menggunakan Turbo Prolog.
1. Contoh Program 1
predicates
   likes(symbol,symbol)

clauses
   likes(ellen, tennis).
   likes(john, football).
   likes(tom, baseball).
   likes(eric, swimming).
   likes(mark, tennis).
   likes(bill, Activity) if likes(tom, Activity).
2. Contoh Program 2
predicates
   male(symbol)
   female(symbol)
   parent(symbol, symbol)

clauses
   male(bill).
   male(joe).

   female(sue).
   female(tammy).

   parent(bill, joe).
   parent(sue, joe).
   parent(joe, tammy).
3. contoh Program 3
predicates
   car(symbol,real,integer,symbol,integer)
   truck(symbol,real,integer,symbol,integer)

clauses
   car(chrysler, 130000, 3, red, 12000).
   car(ford, 90000, 4, gray, 25000).
   car(datsun, 8000, 1, red, 30000).
   truck(ford, 80000, 6, blue, 8000).
   truck(datsun, 50000, 5, orange, 20000).
   truck(toyota, 25000, 2, black, 25000).
4. Contoh Program 4
predicates
   can_buy(symbol, symbol)
   person(symbol)
   car(symbol)
   likes(symbol, symbol)
   for_sale(symbol)

clauses
   can_buy(X, Y) :-
      person(X),
      car(Y),
      likes(X, Y),
      for_sale(Y).
  
   person(kelly).
   person(judy).

   car(lemon).
   car(hot_rod).

   likes(kelly, hot_rod).
   likes(judy, pizza).

   for_sale(pizza).
   for_sale(lemon).
   for_sale(hot_rod).
5. Conto program 5

predicates
   type(symbol, symbol)
   is_a(symbol, symbol)
   lives(symbol, symbol)
   can_swim(symbol)

goal
   can_swim(What) ,
   write("A ", What, " can swim.").

clauses
   type(ungulate, animal).
   type(fish, animal).

   is_a(zebra, ungulate).
   is_a(herring, fish).
   is_a(shark, fish).

   lives(zebra, on_land).
   lives(frog, on_land).
   lives(frog, in_water).
   lives(shark, in_water).

   can_swim(Y) :-
    type(X, animal) ,
    is_a(Y, X) ,
    lives(Y, in_water).
6. Contoh program 6
predicates
   buy_car(symbol, symbol)
   car(symbol, symbol, integer)
   colors(symbol, symbol)

clauses
   buy_car(Model, Color) :-
      car(Model, Color, Price),
      colors(Color, sexy),!,
      Price < 25000.

   car(maserati, green, 25000).
   car(corvette, black, 24000).
   car(corvette, red, 26000).
   car(porsche, red, 24000).
   colors(red, sexy).
   colors(black, mean).
   colors(green, preppy).

1 komentar:

  1. 718 chi titanium flat irons - AT. TITanium Arts
    718 chi titanium steel titanium flat 메이피로출장마사지 irons | titanium rings AT. TITanium Arts · 718 Chi Chi Chi Arts. 918, 023, price of titanium 922, 921. 1. titanium wheels

    BalasHapus