laporan ke 3

10
LAPORAN KECERDASAN BUATAN PERTEMUAN KE 3 Disusun Oleh : Nama : Mohamad Hanafi Nim : 095410134 Jurusan : TEKNIK INFORMATIKA LABOROTARIUM TERPADU SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM YOGYAKARTA 2010

Upload: mohamad-hanafi-mohan

Post on 03-Aug-2015

298 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laporan Ke 3

LAPORAN KECERDASAN BUATAN

PERTEMUAN KE 3

Disusun Oleh :

Nama : Mohamad Hanafi

Nim : 095410134

Jurusan : TEKNIK INFORMATIKA

LABOROTARIUM TERPADU

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

AKAKOM

YOGYAKARTA

2010

Page 2: Laporan Ke 3

PROGRAM VISUAL PROLOG

A. PEMBAHASANTujuan untuk memepelajari agar dapat

mengerti dan menerapkan section-section dasar yang ada di visual prolog seperti PREDICATES, DOMAINS, CLAUSES, dan GOAL.

Mengetahiu section-section lainnya yang ada di Visual Prolog seperti FACTS, CONSTANT, GLOBAL.

Mengerti tentang Compiler Directives. Mengerti dan dapat menerapkan aritas jamak (multiple arity) pada Visual Prolog. Mengerti konsep aturan (rule) pada Prolog dan perbedaanya dengan bahasa lain. Mengerti mengenai konversi tipe otomatis (automatic type conversion).

1. Section dasar Visual prologSecara umum, program visual prolog terdiri dari empat section dasar, yaitu section

clauses, section predicates, section domains, dan terakhir section goal. Berikut akan dejelaskan secara singkat masing-masing section tersebut.

Section ClausesSection clauses merupakan section yang paling penting pada program Visual prolog. Pada section inilah kita meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan mencari dari bagian paling atas daari section clauses, melihat setiap fakta dan aturan untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section ini.

Section PredicatesSebelum mendefinisikan predikat di section clauses, maka predikat tersebut harus dideklarasikan terlebih dahulu di section predicates. Kalau tidak, Visual Prolog tidak akan mengenal predikat yang kita tuliskan tersebut.

Deklarasi PredikatDeklarasi predikat dimulai dengan nama predikat diikuti tanda kurung buka, kemudian

diikuti nol atau lebih argumen dari predikat (setiap argumen dipisah dengan tanda koma) kemudian ditutup dengan tanda kurung tutup, seperti berikut ini :

PredicatName(tipe_argumen 1, tipe_argumen 2,....tipe_argumenN)Atau lebih detailnya langsung dengan contohnya saja berikut langsung dari contohnya :Orang(nama, jender, umur)

Dan tidak seperti section clauses, deklarasi predikati tidak perlu diakhiri tanda titik.

Argumen predikatArgumen predikat harus yang sudah dikenal oleh domain Visual Prolog. Suatu domain

bisa merupakan domain standar atau bisa juga domain yang sudah dideklarasikan pada

Page 3: Laporan Ke 3

section domains. Contohnya, jika dideklarasikan suatu predikat predikat_ku(symbol, integer) pada section predicates seperti ini :PREDICATES

Predikat_ku(symbol, integer)

Section DomainsSection domains memepunyai 2 manfaat utama, yaitu pertama, kita dapat memberikan nama yang berarti untuk domain, walaupun secara internal domain tersebut sama tipenya dengan domain yang telah ada; yang kedua, kita dapat mendeklarasi domains khusus yang digunakan untuk mendeklarasikan struktur data yang tidak dideklarasikan oleh standar domain. Dengan mendeklarasikan domain juga dapat mencegah kesalahan logika pada program.contoh :

DOMAINSNama, jender = symbolUmur = integer

PREDICATESOrang(nama, jender, umur)

Standar Domain Visual PrologVisual prolog mempunyai standar domain built-in. Kita dapat menggunakan Standar

domain ketika mendeklarasikan tipe dari argumen suatu predikat. Standar domain sudah dikenal Visual Prolog dan tidak perlu didefinisikan lagi pada section domains.

Section GoalSecara esensial, section goal sama dengan body dari sebuah aturan (rule), yaitu sederetan sub-sub goal. Perbedaan antara section goal dengan suatu aturan adalah setelah kata kunci goal tidak dikuti tanda :- dan Visual Prolog secara otomatis mengeksekusi goal ketika program dijalankan.

2. Section Program Lainnya.Ada beberapa section lainnya yang digunakan di Visual Prolog yaitu section facts, section

constants, dan section global. Kali ini akan dibahas secara singkat keiga section tersebut sebagai perkenalan. Section facts akan Dibahas lebih mendalam pada modul yang lain.

Section FactsProgram visual prolog merupakan suatu koleksi dari sekumpulan fakta dan aturan. Kadang ketika program sedang berjalan, kita ingin meng-update (merubah, menambah, atau menghapus) beberapa fakta dari program. Pada kasus ini fakta menjadi suatu database yang dinamis atau database internal, dan fakta tersebut dapat berubah ketika program sedang berjalan.

Section ConstantsKonstanta simbolis dapat digunakan di program Visual Prolog. Untuk itu sebelumnya harus dideklarasikan terlebih dahulu. Deklarasi konstanta dilakukan pada section constants, diikuti dengan deklarasi menggunakan sintak :

Page 4: Laporan Ke 3

<id> = <Macro_defintion>

<id>adalah nma dari konstanta simbolis dan <Macro_defintion> adalah apa yang akan diisikan (assign) kedalam konstanta. Setiap <Macro_definition> diakhiri dengan baris baru. Dengan demikian hanya ada satu deklarasi konstanta pada tiap barisnya. Contoh:

CONSTANT Nol = 0 Satu = 1 Dua = 2 Ratus = (10*(10-1)+10) Pi = 3.121592653

Section GlobalVisual Prolog memeperbolehkan untuk mendeklarasikan beberapa domain, predikat dan klausa menjadi global (daripada hanya lokal). Caranya dengan menset secara terpisah section global domains, global predicates, dan global facts pada bagian paling atas dari program. Modul ini bukan tempatnya untuk membahas secara detail mengenai section global.

3. Compiler DrectivesVisual prolog mendukung compiler directives yang dapat ditambahkan ke badan program untuk memberitahukan ke komputer bagaimana secara spesifik memperlakukan kode-kode waktu di compile. Untuk menset compiler directives, namun akan memeperkenalkan salah satu diantaranya yaitu include directive.

4. Aritas jamak (multiple arity)Aritas (arity) suatu predikat adalah jumlah argumen yang ada pada predikat tersebut. Visual Prolog memperbolehkan kita mempunyai 2 atau lebih predikat dengan nama yang sama namun dengan aritas yang berbeda. Aritas yang berbeda dari nama predikat yang sama harus dikelompokkan besama baik pada section predicates maupun pada section clauses. Perbedaan aritas oleh Visual Prolog akan diperlakukan secara berbeda pula. Contoh :

DOMAINSOrang = symbol

PREDICATESayah(orang) %orang ini adalah seorang ayahayah(orang, orang) %orang 1 adalah ayah bagi yang

ke- 2

CLAUSESayah(Seseorang) :-

ayah(Seseorang, _).ayah(erwin, diena).ayah(erwin, latifah).

5. Sintak Aturan (Rule Syntax)

Page 5: Laporan Ke 3

Rule pada Prolog adalah ketika kebenaran sebuah fakta tergantung pada kesuksesan (kebenaran) dari satu atau lebih fakta yang lain. Seperti yang telah dijelaskan pada modul sebelumnya aturan terdiri dari 2 bagian yaitu head dan body. Berikut ini merupakan aturangenerik penulisan sintak rule pada Visual Prolog:

HEAD:- <subgoal>, <subgoal>, ...<subgoal>.

Bagian body dari rule terdiri dari satu atau lebih subgoal. Setiap subgoal dipisahkan oleh koma, menspesifikasikan konjungsi, dan subgoal terakhir daikhiri dengan tanda titik.

6. Konversi Tipe Otomatis (Automatic Type Conversions)Ketika Visual Prolog mencocokkan 2 variabel, keduanya tidak selalu berasal dari domain yang sama. Juga kadang variable diikat (bound) menjadi konstan dari domain lain. Percampuran domain ini diperbolehkan kerena Visual Prolog melakukan konversi tipe otomatis dengan syarat konversi bisa terjadi bila: Antara strings dan symbols. Antara semua domain integer danjuga real. Ketika suatu karakter (char) dikonversikan ke

nilai numeris, angka nilai ASCII dari karakter tersebut yang digunakan.

Dalam pengertian praktikum kemaren adalah sebagai berikut :

DOMAINS kali,jumlah,bagi,kurang = integer

Dalam pengertian Kali, Jumlah, bagi, Kurang sebagai integer karena dalam program GOALnya adalah angka adapun kalau deklarasinya Symbol ataupun String maka dalam program yang ada dalam GOAL adalah inputanya sebagai huruf atau bisa juga karakter. Dalam kali, Jumlah, bagi, kurang itu untuk dideklarasikan dalam program yang akan dikalikan, ditambahkan, dibagikan, dan dikurangkan. PREDICATES tambahkan(jumlah,jumlah,jumlah) kalikan(kali,kali,kali) bagikan(bagi,bagi,bagi) kurangkan(kurang,kurang,kurang)

Dalam program ini yang dideklarasikan dalam DOMAINS tadi terus kenapa dalam deklarasi tersebut ditulis sebanyak 3 kali karena untuk dideklarasikan kedalam GOAL. CLAUSES tambahkan(X,Y,Jumlah):- Jumlah=X+Y. kalikan(X,Y,Kali):- Kali=X*Y. bagikan(X,Y,Bagi):- Bagi=X/Y. kurangkan(X,Y,Kurang):- Kurang=X-Y.

Page 6: Laporan Ke 3

Dalam deklarasi diatas untuk mendeklarasikan angka yang ada dalam inputan pragram GOAL supaya angka yang mana yang didahulukan untuk dihitung dalam program GOAL.GOAL kalikan(13, 25, Kali), tambahkan(13, 25, Jumlah), bagikan(30, 5, Bagi), kurangkan(21, 15, Kurang).

Dalam GOAL tersebut disini yang dideklarasikan didalam program CLAUSES untuk membaca angka mana yang dihitung pertama kali. Disinalah hasil outputnya yang sesuai dengan angka yang diinputkan dalam program GOAl tersebut seperti hasil output dibawah ini :

Dalam praktek yang kedua adalah sebagai berikut :

DOMAINS merek,warna = symbol usia = byte harga, kilometer = ulong

Dalam deklarasi Symbol digunakan untuk huruf atau karakter, dalam byte digunakan untuk angka dan dalam ulong digunakan angka yang angka tersebut kapasitasnya digunakan lebih besar kalau dalam program java digunakan LONG. PREDICATES nondeterm mobil(merek,kilometer,usia,warna,harga)\

Program diatas digunakan untuk mendeklarasi dalam program CLAUSES dimana dalam CLAUSES tersebut diisi dengan apa yang digunakan dalam deklarasi agar saat dipanggl dalam GOAL deklarasi tersebut ada. CLAUSES mobil(atoz,130000,3,merah,120000000). mobil(karimun,90000,4,silver,100000000). mobil(ceria,8000,1,hitam,75000000).

Disinilah deklarasi dalam predikat tersebut diisi untuk dipanggil dalam Program GOAL . GOAL

mobil(karimun,90000,4, silver,100000000).

Apabila dalam Program GOAL tersebut yang dipanggil dalam isi program CLAUSES tidak sama maka GOAL tersebut tidak akan membaca apa yang ada dalam isi program CLAUSES seperti pada hasil output yang ada dibawah ini :Dalam GOAL tersebut diisikan sebagai berikut :GOAL mobil(karimun,90000,5, silver,100000000).

Page 7: Laporan Ke 3

Tapi dalam GOAL dituliskan apa yang ada dalam program CLAUSES maka dalam hasil output tersebut akan dibaca seperti pada hasil output dibawah ini :Dalam GOAL tersebut dituliskan sebagai berikut :GOAL mobil(karimun,90000,4, silver,100000000).

Dalam praktikum yang ke-3 adalah sebagai berikut :

PREDICATES nondeterm suka(symbol,symbol)

Deklarasi diatas adalah digunakan untuk mengisi isi program yang ada dalam Program CLAUSES dimana dalam Program diatas digunakan Symbol sebanyak 2 kali karena yang akan diisi dalam Program CLAUSES sebanyak 2 kata, dalam deklarasi symbol digunakan untuk mengsi huruf dan karakter beda sama dengan karakter kalau karakter tidak bisa diisi huruf/kata maka kalau diisi Program akan terjadi GALLAT(error). CLAUSES suka(asep,membaca). suka(asari,computers). suka(nunung,bulutangkis). suka(vida,bulutangkis). suka(astana,renang). suka(astana,membaca).

Disinilah isi dala Program PREDICATES tersebut diisi untuk dipanggil dalam program yang terkhir atau kita kenal dalam Program GOAL.GOAL suka(vida, bulutangkis),

suka(astana, computer).

Disinilah Program yang ada dalam CLAUSES dipanggil apabila dalam program yang diisikan dalam Program CLAUSES namanya sama tapi kata kejanya berbeda maka dalam hasil output tersebut akan menghasilkan namanya 1 karena dalam nama yang sama tersebut menyukai yang sama juga maka dari itu yang muncul ketika di compile hanya nama 1 saja seperti pada hasil output yang ada dibawah ini :

Page 8: Laporan Ke 3

B. KESIMPULANProgram visual prolog mempuyai banyak aturan yang diantaranya mempunyai fakta dan aturan selain itu visual prolog mempunyai PREDICATES, DOMAINS, DAN GOAL ketiga deklarasi tersebut sangatlah berkaitan dengan satu dan lainnya.