Laporan Ke 7

15

Click here to load reader

Transcript of Laporan Ke 7

Page 1: Laporan Ke 7

LAPORAN KECERDASAN BUATAN

PERTEMUAN KE 7

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 7

LIST

A. PEMBAHASANPada Prolog, yang dimaksud dengan list adalah sebuah object yang di dalamnya

mengandung sejumlah object yang lain (jumlahnya dapat berubah-ubah). List dalam bahasa

pemrograman lain bisa disamakan dengan tipe data pointer (C dan Pascal). Berikut ini cara

penulisan list pada Prolog.

[ 1, 2, 3 ] /* list yang mengandung integer 1, 2 dan 3 */

[ kucing, anjing, tikus ] /* list yang terdiri dari 3 buah symbol */

[ “Syarif Musadek”, “Yusida Andriani”, “Diana Putri” ]

/* list yang terdiri dari 3 buah string */

Untuk mendeklarasikan list yang elemennya bertipe integer dapat dilakukan seperti berikut

ini.

DOMAINSintegerlist = integer*

Tanda asterik (*) berarti domain tersebut merupakan sebuah list. Tanda asterik juga dipakai

di bahasa C untuk pendeklarasian tipe data pointer. Pada Pascal pendeklarasian pointer

menggunakan tanda ^. Elemen list bisa berupa apapun, termasuk suatu list yang lain, namun

semua elemen dari suatu list harus berasal dari domain yang sama.

Head dan Tail (Kepala dan Ekor)

List adalah suatu data object jamak rekursif (recursive compound object). List terdiri dari 2

bagian yaitu head, yang merupakan elemen pertama dari list dan tail, elemen sisanya. Tail

dari list adalah juga merupakan sebuah list, sedangkan head dari list merupakan sebuah

elemen.

Jika kita selalu mengambil elemen pertama dari suatu list maka pada akhirnya kita akan

mendapat sebuah list kosonng (empty list) yang dtulis dengan tanda [ ] (kurung siku buka

dan kurung siku tutup). List kosong tidak bisa dipecah lagi menjadi head dan tail.

Prolog juga menyediakan cara untuk secara eksplisit memisahkan antara bagian head dan

tail dari suatu list. Pemisah tersebut menggunakan tanda vertical bar ( | ).

Contoh:

[a, b, c] ekivalen dengan [a|[b, c]]ekivalen juga dengan [a|[b|[c]]]

Page 3: Laporan Ke 7

dan ekivalen juga dengan [a|[b|[c|[]]]]

Di bawah ini adalah pembahasan dari Modul 7 yang telah dipraktekkan dengan

menggunakan VPE pada saat praktikum:

1. Pertama adalah membuka jendela editor yang baru, dan kemudian menggetikkan program

contoh 1 seperti dibawah ini:

DOMAINS

list=integer*

PREDICATES

cetak_list(list)

CLAUSES

cetak_list([]).

cetak_list([H|T]):-

write(H),nl,

cetak_list(T).

GOAL

cetak_list([1,2,3]).

Penjelasan Pada CLAUSES

cetak_list([]).

digunakan untuk mencetak sebuah list yang berada dalam kurung [] tersebut.

Page 4: Laporan Ke 7

cetak_list([H|T]):-

write(H),nl,

cetak_list(T).

digunakan untuk mencetak dari head (H) atau kepala dan tail atau ekor (T). Maka ditulis

head bagian kepala dulu, ganti baris lalu ekor (T)

Penjelasan pada GOAL

cetak_list([1,2,3]).

Yaitu adalah mencetak elemen list untuk mencetak ke layar setiap elemen dari suatu list

tersebut (1, 2, 3).

Hasil GOAL diatas diperoleh dari

yaitu mencetak dari head (H) atau kepala adalah 1 dan tail atau ekor (T) adalah 3. Maka

ditulis head bagian kepala dulu, ganti baris lalu ekor (T)

Selanjutnya adalah program contoh 2

DOMAINS

list=integer*

PREDICATES

jumlah_elemen(list,integer,integer)

CLAUSES

jumlah_elemen([], Hasil, Hasil).

jumlah_elemen([_|T], Hasil, Pencacah):-

PencacahBaru=Pencacah + 1,

jumlah_elemen(T, Hasil, PencacahBaru).

Page 5: Laporan Ke 7

GOAL

jumlah_elemen([1,2,3],L,0).

Penjelasan Pada CLAUSES

jumlah_elemen([], Hasil, Hasil).

digunakan untuk menhitung sebuah list yang berada dalam kurung [] tersebut.

jumlah_elemen([_|T], Hasil, Pencacah):-

PencacahBaru=Pencacah + 1,

jumlah_elemen(T, Hasil, PencacahBaru).

digunakan untuk menghitung jumlah elemen pada list, pada clauses

PencacahBaru=Pencacah +1 yakni suatu jumlah elemen yang ditentukan adalah pada

hasil ekor.

Penjelasan pada GOAL

jumlah_elemen([1,2,3],L,0).

Yaitu adalah menghitung elemen list dari suatu list tersebut (1, 2, 3), dan

menyimpannya dalam variabel L.

Hasil GOAL diatas diperoleh dari

yaitu menghitung jumlah elemen dari list tersebut, listnya adalah [1, 2, 3]. Maka jumlah

elemen list adalah 3 dan disimpan pafa variabe L, jadi Output menjadi (L=3).

2. Selanjutnya adalah program contoh 3

DOMAINS

listnama=nama*

Page 6: Laporan Ke 7

nama=symbol

PREDICATES

nondeterm anggota(nama, listnama)

CLAUSES

anggota(Nama, [Nama|_]).

anggota(Nama, [_|Ekor]).

anggota(Nama, Ekor).

GOAL

anggota(susan,[ian,susan,john]).

Penjelasan Pada CLAUSES

anggota(Nama, [Nama|_]).

digunakan untuk mengetahui keanggotaan suatu objek dari suatu list yang berada dalam

kurung [] tersebut.

anggota(Nama, [_|Ekor]).

anggota(Nama, Ekor).

digunakan untuk mengetahui bahwa objek (Nama) tersebut termasuk anggota di dalam

list (yang berada dalam []) atau bukan.

Penjelasan pada GOAL

anggota(susan,[ian,susan,john]).

Yaitu adalah untuk mengetahui keanggotaan susan dalam list tersebut.

Page 7: Laporan Ke 7

Hasil GOAL diatas diperoleh dari

yaitu mengetahui keanggotaan susan dalam list tersebut. Didalam list terdapat nama ian,

susan dan john, karena dalam list tersebut terdapat nama susan maka hasil goalnya adalah

alias Yes.

3. Selanjutnya adalah program contoh 4

DOMAINS

integerlist=integer*

PREDICATES

tambah(integerlist, integerlist, integerlist)

CLAUSES

tambah([],List,List).

tambah([H|L1],List2,[H|L3]):-

tambah(L1,List2,L3).

GOAL

tambah([1,2,3],[5,6],L).

Penjelasan Pada CLAUSES

tambah([],List,List).

digunakan untuk menambahkan suatu list yang berada dalam kurung [] tersebut ke list

yang lain.

tambah([H|L1],List2,[H|L3]):-

tambah(L1,List2,L3).

Page 8: Laporan Ke 7

digunakan untuk menambahkan list (L1) dengan list (L3) dan menggabungkanya

Penjelasan pada GOAL

tambah([1,2,3],[5,6],L).

Yaitu adalah menambahkan list [1,2,3] dengan [5,6] disimpan pada variabel L.

Hasil GOAL diatas diperoleh dari

yaitu menambahkan dan menggabungkan list, list pertama [1, 2, 3] dan list kedua [5, 6], dan

disimpan pada variable L maka hasil goal akan menjadi L=[1,2,3,5,6].

4. Kemudian mengganti goal untuk program contoh 4.

DOMAINS

integerlist=integer*

PREDICATES

tambah(integerlist, integerlist, integerlist)

CLAUSES

tambah([],List,List).

tambah([H|L1],List2,[H|L3]):-

tambah(L1,List2,L3).

GOAL

tambah([1,2],[3],L),tambah(L,L,LL).

B. KESIMPULAN

Page 9: Laporan Ke 7

Pada modul 7 ini yang dipelajari adalah List, list tersebut adaah merupakan suatu cara

penulisan program jika terdapat object di dalam suatu object yang lain yang bersifat jamak

rekursif, list dapat disamakan fungsinya dengan pointer pada bahasa C dan Pascal. List

memiliki dua bagian yaitu Tail yang sebenarnya merupakan sebuah List lain dan Head yang

merupakan elemen atas dari sebuah List.

C. LISTING

DOMAINS

list=integer*

PREDICATES

cetak_list(list)

CLAUSES

cetak_list([]).

cetak_list([H|T]):-

write(H),nl,

cetak_list(T).

GOAL

cetak_list([1,2,3]).

Hasil output :

Program Contoh 2:

DOMAINS

list=integer*

Page 10: Laporan Ke 7

PREDICATES

jumlah_elemen(list,integer,integer)

CLAUSES

jumlah_elemen([], Hasil, Hasil).

jumlah_elemen([_|T], Hasil, Pencacah):-

PencacahBaru=Pencacah + 1,

jumlah_elemen(T, Hasil, PencacahBaru).

GOAL

jumlah_elemen([1,2,3],L,0).

Hasil Outputnya:

Program contoh 3:

DOMAINS

listnama=nama*

nama=symbol

PREDICATES

nondeterm anggota(nama, listnama)

CLAUSES

anggota(Nama, [Nama|_]).

anggota(Nama, [_|Ekor]):-

anggota(Nama, Ekor).

Page 11: Laporan Ke 7

GOAL

anggota(susan,[ian,susan,john]).

Hasil Outptnya:

Program Contoh 4:

DOMAINS

integerlist=integer*

PREDICATES

tambah(integerlist, integerlist, integerlist)

CLAUSES

tambah([],List,List).

tambah([H|L1],List2,[H|L3]):-

tambah(L1,List2,L3).

GOAL

tambah([1,2,3],[5,6],L).

Hasil Outputnya:

Dan apabila pada GOAL diatas diganti ,aka hasil outputnya akan berbeda

GOAL

tambah([1,2], [3], L), tambah(L, L, LL).

Hasil Outputnya :

Page 12: Laporan Ke 7

TUGAS

Domains

listnama = nama*

nama = symbol

PREDICATES

nondeterm kuliah(nama, listnama)

CLAUSES

kuliah("Supardi", ["Intelejensi Buatan", "A"]).

kuliah("Suradi",["Intelejensi Buatan", "B"]).

kuliah("Suyatmi",["Intelejensi Buatan", "C"]).

kuliah("Suparni",["Intelejensi Buatan", "D"]).

kuliah("Sujiman",["Intelejensi Buatan", "C"]).

kuliah("Suharto",["PDE", "B"]).

kuliah("Sudirman",["PDE", "C"]).

kuliah("Supardi",["PDE", "C"]).

kuliah("Suyatmi",["PDE", "B"]).

kuliah("Sutini",["PDE", "D"]).

kuliah("Suharto",["Sistem Operasi", "B"]).

kuliah("Sutini",["Sistem Operasi", "A"]).

kuliah("Supardi",["Sistem Operasi", "A"]).

kuliah("Suparni",["Sistem Operasi", "B"]).

kuliah("Suripah",["Sistem Operasi", "C"]).

1. Goal untuk mengetahui nilai-nilai yang dimiliki oleh Supardi beserta mata kuliahnya.

GOAL

kuliah("Supardi",[Mk, Nilai]).

Page 13: Laporan Ke 7

Hasil outputnya :

2. Goal untuk mengecek apakah Suripah mengikuti perkuliahan pada semester tersebut.

GOAL

kuliah("Suripah",[_, _]).

Hasil outputnya :

3. Goal untuk mencari mahasiswa yang tidak lulus (nilai < C) pada semester tersebut

beserta mata kuliahnya

GOAL

kuliah(Nama, [Mk, "D"]);

kuliah(Nama, [Mk, "E"]).

Hasil outputnya: