Laporan Ke 7
Click here to load reader
-
Upload
mohamad-hanafi-mohan -
Category
Documents
-
view
138 -
download
2
Transcript of 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
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]]]
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.
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).
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*
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.
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).
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
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*
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).
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 :
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]).
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: