LAPORAN PRAKTIKUM KECERDASAN BUATAN SECTION FACTS

26
                LAPORAN PRAKTIKUM
KECERDASAN BUATAN
SECTION FACTS








Disusun Oleh :

HERI PURNAMA
125410101
TI 04


UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013



DARTAR ISI

Judul.………………………………………………………………………………………..       01

Daftar isi..…………………………………………………………………………………        02

Bab 1  : Pendahuluan………………………………………………………….......        03
              A.Tujuan…………………………………………………………………………….       03
                B.Dasar Teori……………………………………………………………………….      03

Bab 2  : Hasil Praktikum………………………………………………….…………       05

Bab 3  : Analisa Hasil Praktikum………………………………………………..       06
              A.Praktikum  1……………………….……………………………………………….………       06
              B.Praktikum  2……………………………..…………………………………………………       08
              C.Praktikum  3……………………..………………………………………………………..        09



Bab 4  : Kesimpulan…………………………………………………………………         12

Bab 5  : Tugas…………………………………………………………………………..        13









Bab 1
Pendahuluan

A.Tujuan
   Mahasiswa mampu :
1.       Memahami apa kegunaan section facts  pada Visual Prolog.
2.       Dapat menyusun fakta-fakta pada section facts.
3.       Dapat mengimplementasikan program yang menggunakan section facts.

B.DASAR TEORI
SECTION FACTS
Section facts terdiri dari fakta-fakta yang mana fakta-fakta tersebut dapat ditambah dan dihapus secara langsung dari sebuah program pada saat program sedang berjalan (at run time). Kita dapat mendeklarasikan sebuah predikat pada section facts dan predikat tersebut dapat digunakan sama halnya seperti kalau dideklarasikan pada section predicates.
Visual Prolog menyediakan beberapa predikat built-in untuk menangani hal yang berkaitan dengan penggunaan section facts, antara lain:
·         assert, asserta dan assertz untuk menambah fakta baru pada section facts.
·         retract dan retractall untuk menghapus fakta yang ada.
·         consult untuk membaca fakta dari sebuah file dan menyertakan fakta tersebut ke dalam fakta internal.
·         save menyimpan isi fakta internal ke dalam sebuah file.

    Deklarasi Section Facts
Kata kunci facts atau bisa juga database menandai permulaan sederetan deklarasi dari predikat yang ada pada section facts. Kita dapat menambahkan fakta-fakta (bukan rule) pada suatu section facts dari keyboard pada saat run time dengan menggunakan asserta dan assertz atau memanggil predikat consult untuk mengambil fakta tambahan dari sebuah file. Contoh deklarasinya seperti berikut ini.

DOMAINS
   nama, alamat = string
   umur = inteteger
   jender = lakilaki; perempuan

FACTS
   orang(nama, alamat, umur, jender)

PREDICATES
   lakilaki(nama, alamat, umur)
   perempuan(nama, alamat, umur)
   anak(nama, alamat, umur)

CLAUSES
   lakilaki(Nama, Alamat, Umur):-
         orang(Nama, Alamat, Umur, lakilaki).

Ada 2 syarat dalam menggunakan predikat yang dideklarasikan pada section facts:
1.       Penambahan predikat pada section facts hanya berlaku sebagai fakta saja, tidak bisa sebagai rule.
2.       Fakta-fakta yang ada di section facts tidak boleh mempunyai variabel bebas.
Visual Prolog memungkinkan suatu program untuk memiliki lebih dari satu section facts, tapi untuk membedakannya harus secara eksplisit diberi nama untuk setiap section facts. Contoh:

FACTS – db_orang
orang(nama, alamat,umur, jender)
lakilaki(nama, alamat, umur)
perempuan(nama, alamat, umur)
anak(nama, alamat, umur)

Nama section facts di atas adalah db_orang. Jika tidak ada maka Visual Prolog akan memberi nama standar (default) dbasedom.

Menambah fakta pada saat run time
Pada saat run time, fakta-fakta dapat ditambah ke section facts dengan menggunakan predikat assert, asserta dan assertz atau me-load sebuah file yang berisikan fakta menggunakan predikat consult. Cara penulisannya adalah sebagai berikut:

asserta([, nama_section_facts])

assertz([, nama_section_facts])

assert([, nama_section_facts])

consult(namafile[, nama_section_facts])

Perbedaan assert, asserta dan assertz adalah asserta menyertakan sebuah fakta baru pada section facts sebelum fakta-fakta yang telah ada untuk predikat tersebut, sedangkan assertz menyertakan sebuah fakta baru setelahnya, sedangkan assert berfungsi sama seperti assertz. Sedangkan consult membaca dari sebuah file dan menyertakan fakta-fakta yang ada di file tersebut sesudah fakta-fakta yang telah ada.
Sebagai catatan, consult hanya bisa membaca sebuah file dengan syarat format file tersebut sama persis dengan format file yang disimpan menggunakan predikat save, yaitu:
-          tidak ada karakter kapital kecuali dalam tanda petik dua (penulisan string).
-          tidak spasi kecuali dalam tanda petik dua.
-          tidak ada komentar.
-          tidak ada baris kosong.
-          tidak ada symbol tanpa di dalam tanda petik dua.

Menghapus fakta pada saat run time
Predikat retract mengunifikasi suatu fakta dan menghapus fakta tersebut dari sectio facts. Cara penulisannya adalah sebagai berikut:

retract([, nama_section_facts])

retract akan menghapus fakta pertama yang cocok dengan argumen yang diberikan. Karena retract merupakan predikat nondeterministik maka selama lacakbalik, retract akan menghapus fakta-fakta yang cocok dengan argumen , kecuali jika fakta yang akan dihapus, predikatnya dideklarasikan deterministik. Ketika semua fakta yang cocok sudah terhapus, pemangilan retract berikutnya akan gagal.
Predikat retractall akan menghapus semua fakta yang cocok dengan argumen dan penulisannya sebagai berikut:

retractall([, nama_section_facts])

retractall berperilaku sama seperti kalau didefinsiskan sebagai berikut:

retractall(X):- retract(X), fail. %fail untuk memaksa lacak balik
retractall(_).

Menyimpan database fakta-fakta pada saat run time
Predikat save berfungsi untuk menyimpan fakta-fakta yang ada pada section facts ke dalam sebuah file. Cara penulisannya sebagai berikut:

save(nama_file[, nama_section_facts])

Jika memanggil save hanya dengan satu argumen (tidak ada nama section facts), maka akan menyimpan fakta-fakta dari section facts default dbasedom ke file dengan nama yang sesuai dengan argumen. Jika memanggil save dengan dua argumen (nama file dan nama section facts), maka akan menyimpan semua fakta yang ada pada section facts yang sesuai ke dalam file dengan nama yang sesuai pula.

Kata kunci pada section facts
Fakta-fakta pada section facts dapat dideklarasikan dengan beberapa kata kunci opsional berikut:

nondeterm                menentukan bahwa kemungkinan ada sejumlah fakta dari suatu
predikat sepanjang program berjalan (default)

determ                        menentukan bahwa hanya boleh ada satu fakta dari suatu predikat
                                        sepanjang program berjalan.

global                        menentukan bahwa setion facts adalah global dalam program.

single                        menentukan hanya satu fakta dari predikat yang akan selalu ada.

nocopy                        normalnya pemanggilan fakta akan mengikat variabel ke sebuah
string atau ke sebuah object jamak. String atau object jamak
tersebut akan disalin ke tumpukan dari Visual Prolog Global Stack
(GStack). Dengan kata kunci ini maka tidak ada proses penyalinan
terserbut.



Bab 3
Analisa Hasil Praktikum
DOMAINS
                nama = symbol
                umur = integer
                jender = lakilaki;perempuan

Ø  Domains merupakan bagian yang mendeklarasikan tipe dari argumen yang ada pada program:
Ø  Argument nama mempunyai  tipe data yakni symbol.
Ø  Argument umur mempunyai tipe data yakni integer.
Ø  Argument jender untuk mendeklarasikan bahwa argument tersebut hanya mempunyai dua buah jawaban yakni laki-laki atau perempuan.
FACTS
                orang(nama, umur, jender)

Ø  Kata kunci facts atau bisa juga database menandai permulaan sederatan deklarasi dari predikat yang ada pada section facts yakni dengan nama orang .Fakta yang dituliskan berisi nama, umur dan jender yang telah dideklarasikan pada domains diatas.


PREDICATES
                nondeterm cetak

Ø  Pada Section PREDIKAT digunakan untuk mendeklarasikan perintah-perintah yang nanti akan  digunakan dalam section Clauses, seperti :
Ø  Predikat cetak yang mana mempunyai sifat yakni nondeterm .nondeterm disisini digunakan untuk memberitahukan kepada prolog bahwa predikat milik memiliki lebih dari 1 kemungkinan

CLAUSES
                orang(yulianto, 31, lakilaki).
                orang(yuliani, 31, perempuan).

                cetak:-
                                orang(Nama, Umur, Jender),
                                write("Nama   : " ,Nama),nl,
                                write("Umur   : " ,Umur),nl,
                                write("Jender : " ,Jender),nl,nl,
                                fail.
                cetak.

Ø  Pada Section CLAUSES digunakan untuk mendeklarasikan aturan dan fakta. Aturan merupakan suatu konklusi diketahui benar jika satu atau lebih konklusi atau fakta lain ditemukan benar.
Ø  Pada baris pertama dan kedua pada seksion clauses digunakan untuk mendeklasikan fakta yang ada,yang mana pada section ini terdapat dua fakta yaitu:
1)       orang(yulianto, 31, lakilaki).
2)       orang(yuliani, 31, perempuan)

Ø  pada baris kedua berisikan aturan yang ada dalam program tersebut untuk : Perintah write adalah untuk mencetak/ menampilkan hasil dari prolog yang terdiri dari nama, umur dan jender. Clauses yang berisiskan project atau dapat disebut kata sifat yang berurutan dan menampilkan sifat dari pada objek-objek yang telah ditentukan. Visual prolog akan memulai lacak balik jika ada panggilan yang gagal. Pada situasi tertentu, ada kebutuhan untuk memaksa lacak balik dalam rangka mencari alternatif solusi.
Ø  Visual prolog menyediakan predikat khusus fail untuk memaksa kegagalan sehingga memicu terjadinya lacak balik.
Ø  Efek fail sama dengan memberikan perbandingan 2:3 atau subgoal yang tidak mungkin lainnya.  nl digunakan untuk next line atau baris selanjutnya.

GOAL
                save("data_org.txt"),
                cetak.


Ø Pada Section GOAL ini diggunakan untuk memanggil  data atau fakta dari predikat yang telah dideklarasikan dalam program tersebut.
Ø Predikat save berfungsi untuk menyimpan fakta-fakta yang ada pada section facts ke dalam sebuah file. Jika memanggil save hanya dengan satu argumen (tidak ada nama section facts), maka akan menyimpan fakta-fakta dari section facts default dbasedom ke file dengan nama yang sesuai dengan argumen.
Ø Jika memanggil save dengan dua argumen (nama file dan nama section facts), maka akan menyimpan semua fakta yang ada pada section facts yang sesuai ke dalam file dengan nama yang sesuai pula. Bagian goal tersebut digunakan untuk mencetak data yang telah disimpan tersebut pada ("data_org.txt"). Maka visual prolog akan mencari jawaban dengan melihat fakta – fakta yang ada pada bagian clauses dari yang paling atas hingga yang paling bawah sampai menemukan jawaban yang benar.

v  RUNNING
Ø  Ini adalah hasil dari output dalam bentuk visual prolog yang mana fakta data yang ditampilkan.
Ø  Ini adalah hasil dari output dalam bentuk notepad terlihat yang ada hanyalah fakta-fakta yang dituliskan dalam clauses.

2.PRAKTIKUM 2

v  LISTING
orang(gilang, 20, lakilaki)
orang(ranti, 19, perempuan)
orang(bayu, 10, lakilaki)
orang(wening, 9, perempuan)
Ø  Untuk program ini pembahasannya sama dengan program diatas yang berbeda hanyalah penulisan clauses yang ditambahkan menjadi 6 fakta.

v  RUNNING
Ø  Ini adalah penginputan fakta dari notepad ke dalam program yang dijalankan.

Menganti nama file dengan file baru dengan nama data_herii.txt.






3.PRAKTIKUM 3
v  LISTING
DOMAINS
                nama = symbol
                umur = integer
                jender = lakilaki;perempuan

Ø  Domains merupakan bagian yang mendeklarasikan tipe dari argumen yang ada pada program:
Ø  Argument nama mempunyai  tipe data yakni symbol.
Ø  Argument umur mempunyai tipe data yakni integer.
Ø  Argument jender untuk mendeklarasikan bahwa argument tersebut hanya mempunyai dua buah jawaban yakni laki-laki atau perempuan.

FACTS
                orang(nama, umur, jender)
Ø  Kata kunci facts atau bisa juga database menandai permulaan sederatan deklarasi dari predikat yang ada pada section facts yakni dengan nama orang .Fakta yang dituliskan berisi nama, umur dan jender yang telah dideklarasikan pada domains diatas.

PREDICATES
                nondeterm cetak
Ø  Pada Section PREDIKAT digunakan untuk mendeklarasikan perintah-perintah yang nanti akan  digunakan dalam section Clauses, seperti :
Ø  Predikat cetak yang mana mempunyai sifat yakni nondeterm .nondeterm disini digunakan untuk memberitahukan kepada prolog bahwa predikat milik memiliki lebih dari 1 kemungkinan

CLAUSES

                cetak:-
                                orang(Nama, Umur, Jender),
                                write("Nama   : " ,Nama),nl,
                                write("Umur   : " ,Umur),nl,
                                write("Jender : " ,Jender),nl,nl,
                                fail.
                cetak.

Ø  Pada Section CLAUSES digunakan untuk mendeklarasikan aturan dan fakta. Aturan merupakan suatu konklusi diketahui benar jika satu atau lebih konklusi atau fakta lain ditemukan benar.
Ø  pada baris pertama berisikan aturan yang ada dalam program tersebut untuk : Perintah write adalah untuk mencetak/ menampilkan hasil dari prolog yang terdiri dari nama, umur dan jender. Clauses yang berisiskan project atau dapat disebut kata sifat yang berurutan dan menampilkan sifat dari pada objek-objek yang telah ditentukan. Visual prolog akan memulai lacak balik jika ada panggilan yang gagal. Pada situasi tertentu, ada kebutuhan untuk memaksa lacak balik dalam rangka mencari alternatif solusi.
Ø  Visual prolog menyediakan predikat khusus fail untuk memaksa kegagalan sehingga memicu terjadinya lacak balik.
Ø  Efek fail sama dengan memberikan perbandingan 2:3 atau subgoal yang tidak mungkin lainnya.  nl digunakan untuk next line atau baris selanjutnya.
GOAL
                consult("data_herii.txt"),
                cetak.

Ø  Pada Section GOAL ini diggunakan untuk memanggil  data atau fakta dari predikat yang telah dideklarasikan dalam program tersebut.
Ø  Consult dipanggil hanya dengan satu argumen (tidak ada nama section facts) maka hanya akan menyertakan fakta-fakta yang predikatnya telah dideklarasikan di section facts default yaitu dbasedom.
Ø  Jika memanggil consult dengan dua argumen (nama file dan nama section facts) maka hanya akan menyertakan fakta-fakta yang predikatnya telah dideklarasikan di section facts dengan nama yang sesuai.
Ø  Jika file tersebut mengandung fakta-fakta yang bukan milik dari section facts tersebut, akan terjadi error pada saat membaca bagian tersebut. Perlu diperhatikan bahwa consult membaca fakta satu demi satu, jika ada file 10 fakta dan pada fakta ke 7 error, maka consult akan menyertakan 6 fakta pertama pada section facts kemudian menampilkan pesan kesalahan. Sebagai catatan, consult hanya bisa membaca sebuah file dengan syarat format file tersebut sama persis dengan format file yang disimpan menggunakan predikat save, yaitu :
·         Tidak ada karakter kapital kecuali dalam tanda petik dua (penulisan string).
·         Tidak ada spasi kecuali dalam tanda petik dua.
·         Tidak ada komentar.
·         Tidak ada baris kosong.
·         Tidak ada symbol tanpa di dalam tanda petik dua.

v  RUNNING
Ø  Ini adalah tampilan ketika program di running menggunakan visual prolog.












Bab 4
Kesimpulan

Dari Program yang dijalan dalam Visual Prolog diatas saya dapat menggambil kesimpulan bahwa:
1)      Section facts terdiri dari fakta-fakta yang mana fakta-fakta tersebut dapat ditambah dan dihapus secara langsung dari sebuah program pada saat program sedang berjalan (at run time).
2)      Kita dapat mendeklarasikan sebuah predikat pada section facts dan predikat tersebut dapat digunakan sama halnya seperti kalau dideklarasikan pada section predicates.
3)      Visual Prolog menyediakan beberapa predikat built-in untuk menangani hal yang berkaitan dengan penggunaan section facts, antara lain:
·         assert, asserta dan assertz untuk menambah fakta baru pada section facts.
·         retract dan retractall untuk menghapus fakta yang ada.
·         consult untuk membaca fakta dari sebuah file dan menyertakan fakta tersebut ke dalam fakta internal.
·         save menyimpan isi fakta internal ke dalam sebuah file.

















Bab 5
TUGAS

LISTING PROGRAM
DOMAINS
      nama_mk, nama_mhs = symbol
      nilai = string
      list = nilai*
     
FACTS
      mata_kuliah(nama_mk, nama_mhs, nilai)


PREDICATES
      nondeterm cetak
      nondeterm lulus(nama_mk, nama_mhs)
      nondeterm tidak_lulus(nama_mk, nama_mhs)
     
CLAUSES      
     
      cetak:-
             mata_kuliah(nama_mk, nama_mhs, nilai),
             write("Nama MK   : " ,nama_MK),nl,
             write("Nama mhs  : " ,nama_mhs),nl,
             write("Nilai     : " ,nilai),nl,nl,
             fail.
      cetak.

                   
      lulus(X,Y):-
             mata_kuliah(X,Y,"A");
             mata_kuliah(X,Y,"B");
             mata_kuliah(X,Y,"C").
                          
      tidak_lulus(X,Y):-
             mata_kuliah(X,Y,"D");
             mata_kuliah(X,Y,"E").                                 
GOAL
      consult("akakom.txt"),
      write("Nama Mahasiswa : Supardi"),nl,
      mata_kuliah(Nama_MK, "Supardi" ,Nilai),
    cetak.

v Fakta-fakta dimasukan lewat notepad dengan nama file “akakom.txt”.
 

Mencari GOAL :

1.       Nilai-nilai yang dimiliki oleh supardi beserta mata_kuliahnya
 GOAL
      consult("akakom.txt"),
      write("Nama Mahasiswa : Supardi"),nl,
      mata_kuliah(Nama_MK, "Supardi" ,Nilai),
       cetak.
RUNNING PROGRAM


2.       Goal untuk mengecek apakah Suripah mengikuti perkuliahan pada semester tersebut, maka goal diganti :
GOAL
      consult("akakom.txt"),
      write("Nama Mahasiswa : Suripah"),nl,
      mata_kuliah(_, "Suripah",_),
      cetak.
RUNNING PROGRAM

fffdffdfgfggfggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg


           3. Goal untuk menampilkan mahasiswa yang tidak lulus (nilai
GOAL
      consult("akakom.txt"),
      write("Nama Mahasiswa yang tidak Lulus :"),nl,nl,
      tidak_lulus(Nama_mata_kuliah, Nama_Mahasiswa),
      cetak.

RUNNING PROGRAM


    Blogger Comment
    Facebook Comment

0 komentar:

Post a Comment

Thanks For Your Feedback.