laporan ke 6

10
LAPORAN KECERDASAN BUATAN PERTEMUAN KE 6 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 05-Aug-2015

376 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Laporan Ke 6

LAPORAN KECERDASAN BUATAN

PERTEMUAN KE 6

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 6

PERULANGAN DAN REKURSI(REPETITION AND RECURSION)

A. PEMBAHASANTujuan mempelajari Perulangan Dan Rekursi dapat membuat proses perulangan pada Visual Prolog, dapat membuat proses rekursif, mengerti apa yang dimaksud dengan rekursi ekor dan bagaimana mengimplentasikannya, dan dapat membuat struktur data rekursif seperti tipe data pohon.

Komputer memiliki bermacam kemampuan yang berguna salah satunya adalah kemampuan

melakukan sesuatu berulang-ulang. Prolog dapat melakukan perulangan dalam dua hal yaitu

berupa prosedur dan struktur data. Ide dari struktur data repetitif (rekursif) adalah bagaimana

menciptakan struktur data yang ukuran (size) akhirnya belum diketahui ketika struktur tersebut

pertama kali dibuat (create).

Proses Perulangan

Prolog menyediakan dua jenis perulangan yaitu lacakbalik (mencari jawaban jamak dari satu

pertanyaan) dan rekursi (prosedur pemanggilan dirinya sendiri).

oLacakbalik

Ketika suatu prosedur melakukan lacakbalik, prosedur akan mencari alternatif jawaban

dari sebuah goal yang sudah terpenuhi. Lacakbalik merupakan salah satu cara untuk melakukan

proses perulangan.

Implementasi Lacakbalik dengan Loop

Lacakbalik merupakan cara yang baik untuk mencari alternatif jawaban dari sebuah

goal. Namun jika suatu goal tidak memiliki alternatif jawaban, lacakbalik masih dapat digunakan

untuk melakukan perualangan. Ini untuk mengakali struktur kendali Prolog agar berpikir bahwa

terdapat sejumlah jawaban berbeda yang tak terbatas (cara kerjanya akan dibahas pada bagian

mengenai rekursi ekor / tail recursion). Kegunaan ulang adalah agar lacakbalik terjadinya tak

terhingga).

oRekursi

Page 3: Laporan Ke 6

Cara lain untuk melakukan perulangan adalah melalui rekursi. Prosedur rekursi adalah

prosedur yang di dalamnya ada pemanggilan terhadap dirinya sendiri. Prosedur rekursi dapat

merekam perkembangannya karena ia melewatkan (passing) pencacah, total, dan hasil

sementara sebagai argumen dari satu iterasi ke iterasi berikutnya.

Rekursi Ekor (Tail Recursion)

Rekursi mempunyai kelemahan yaitu memakan memori. Ketika suatu prosedur

memanggil dirinya, keadaan pemanggil prosedur dari eksekusi harus disimpan sehingga

prosedur pemanggil dapat meresume keadaan tersebut setelah prosedur pemanggil selesai. Ini

berarti jika ada suatu prosedur memanggil dirinya 100 kali, maka ada 100 keadaan dari eksekusi

yang harus disimpan. Keadaan (state) yang disimpan tersebut dikenal dengan nama stack frame.

Untuk mengatasi kelemahan tersebut, maka digunakan optimasi rekursi ekor (tail recursion

optimization).

Struktur Data Rekursif

Tidak hanya rule yang bisa rekursif tapi juga struktur data. Prolog merupakan satu-satunya

bahasa pemrograman yang digunakan secara luas yang memperbolehkan mendefinisikan tipe

struktur data rekursif. Salah satu tipe struktu data rekursif yaitu struktur data pohon (tree).

Untuk menjelajahi sebuah pohon, algoritma yang sering digunakan adalah:

- Jika pohon tersebut empty maka tidak melakukan apa-apa.

- Jika tidak, lakukan proses pada titik tersebut, kemudian jelajahi subpohon sebelah kiri,

kemudian jelajahi subpohon sebelah kanan.

Algoritma penjelajahan pohon di atas dikenal dengan depth-first search (pencarian sampai ke

tingkat yang paling dalam terlebih dahulu) karena akan bergerak ke bawah sejauh mungkin pada

tiap percabangan yang ada kemudian baru kembali ke atas (backing-up) dan mencoba ke

cabang yang lain (trying another).

Pembahasan pada praktikum :

Page 4: Laporan Ke 6

Di bawah ini adalah pembahasan dari Modul 6 yang telah dipraktekkan dengan menggunakan

VPE pada saat praktikum:

Pertama yang dipraktekkan adalah Program Contoh 1

PREDICATES

nondeterm negara(symbol)

cetak_negara

CLAUSES

negara("Inggris").

negara("Perancis").

negara("Jerman").

negara("Denmark").

adalah mendeskripsikan klausa negara, yaitu Inggris, Perancis, Jerman dan Denmark.

cetak_negara:-

negara(X),

write(X),

nl,

fail.

cetak_negara.

adalah pertama mengambil nilai X sebagai Negara, kemudian menuliskan nilai X, dan

selanjutnya ganti baris baru

Page 5: Laporan Ke 6

GOAL

cetak_negara.

Penjelasan pada GOAL

cetak_negara.

Yaitu menampilkan output semua negara yang sebelumnya sudah dideskripsikan pada

program.

Hasil Goal:

*) Hasil GOAL diatas diperoleh dari

klausa cetak_negara, yaitu menampilkan semua negara yang sudah dideskripsikan pada CLAUSES,

sehingga output akan menampilkan Inggris, Perancis, Jerman dan Denmark seperti pada gambar

diatas.

1. Kedua yang dipraktekkan adalah Program Contoh 2

PREDICATES

nondeterm ulang

nondeterm mesinketik

CLAUSES

Page 6: Laporan Ke 6

ulang.

ulang:-ulang.

adalah merupakan deklarasi klausa ulang

mesinketik:-

ulang,

readchar(C),

membaca sebuah karakter, ikat kevariabel C

write(C),

menulis nilai pada variabel C

C='\r',

apakah ditekan Enter? Gagal jika tidak

write("enter sudah ditekan").

menampilkan output text ‘enter sudah ditekan’ jika sudah menekan enter.

GOAL

mesinketik,nl.

Penjelasan pada GOAL

mesinketik,nl.

Yaitu pertama menampilkan layar kosong, akan menjalankan perintah jika sudah ditekan

enter.

Hasil Goal:

Page 7: Laporan Ke 6

Jika pada isi output tersebut tidak diisi apabila di Tekan Enter, maka akan tampil output tulisan “enter sudah ditekan” seperti gambar dibawah ini jika pada isi Program write dikasih perintah tersebut :

Selanjutnya yang dipraktekkan adalah Program Contoh 3

PREDICATES

faktorial(unsigned,real)

CLAUSES

faktorial(1,1):-!.

adalah merupakan deklarasi awal dari faktorial yaitu (1,1)

faktorial(X,FaktoX):-

Y=X-1,

faktorial(Y,FaktoY),

FaktoX = X*FaktoY.

adalah merupakan funsi faktorial, yaitu untuk mencari nilai factorial dari inputan bilangan

sebagai variable X

Page 8: Laporan Ke 6

GOAL

X=3,

faktorial(X,Y).

Yaitu pertama mendefinisikan bah variable X bernilai 3, kemudian mencari nilai faktorial dari

bilangan X (3) dan menampilkanya pada variabel Y

Hasil Goal

*) Hasil GOAL diatas diperoleh dari

yaitu melalui perhitungan faktorial dari bilangan X yang bernilai 3.

3! = 3*2*1=6.

Maka akan ketemu nilai faktorial dr 3 adalah 6, sehingga output menjadi : X=3, Y=6.

B. KESIMPULAN

Pada modul ini kita mempelajari tentang perulangan dan rekursi. Dimana pada Visual Prolog

proses perulangan dapat dilakukan melalui lacak balik yang mencari jawaban jamak dari sebuah

pertanyaan, sedangkan cara berikutnya adalah dengan rekursi yaitu suatu prosesdur yang

memanggil dirinya sendiri.

Rekursi sendiri mempunyai bermacam jenis seperti rekursi ekor yang struktur algoritmanya

mudah sampai rekursi struktur data pohon yang struktur algoritmanya lebih rumit.

Page 9: Laporan Ke 6