Kamis, 10 Desember 2009

Summary Loop

6.1fixed number of times Loop
Banyak bahasa pemrograman menyediakan 'for loop' yang memungkinkan satu set instruksi
akan dieksekusi tetap beberapa kali. fasilitas tersebut tidak tersedia dalam Prolog
, tetapi efek yang sama dapat diperoleh dengan menggunakan rekursi, seperti ditunjukkan dalam
contoh program di bawah ini.

Contoh 1
Keluaran program berikut bilangan bulat dari nilai tertentu sampai 1.
loop(0).
loop(N):-N>0,write('The value is: '),write(N),nl,
M is N-1,loop(M).
Predikat loop didefinisikan dalam istilah itu sendiri. Kalimat kedua dapat
dianggap sebagai: 'untuk loop dari N, pertama menulis nilai N, kemudian kurangi satu untuk memberikan
M, lalu loop dari M '. Proses ini jelas harus dihentikan dan ini
dicapai oleh klausa pertama: 'ketika argumen adalah nol, melakukan apa-apa (dan karenanya
berhenti) '. Klausa pertama dapat dianggap sebagai suatu kondisi untuk menghentikan rekursi.

?- loop(6).
The value is: 6
The value is: 5
The value is: 4
The value is: 3
The value is: 2
The value is: 1
yes

Perhatikan penggunaan dua gol M adalah N-1, loop (M) dalam kalimat kedua untuk
loop predikat. Alternatif yang jelas loop (N-1) tidak akan bekerja. Prolog hanya
mengevaluasi pernyataan seperti N-1 ketika mengevaluasi tujuan dengan atau functor adalah salah satu dari
operator relasional, seperti dijelaskan dalam Bab 4. N-1 jika digunakan sebagai argumen
suatu predikat itu diartikan istilah dengan infiks operator - (yaitu tanda minus) dan
argumen N dan 1. Ini sangat tidak mungkin apa yang dimaksudkan!

Example 2
Program berikutnya keluaran bilangan bulat dari inclusive pertama hingga akhir.
/* output integers from First to Last inclusive */
output_values(Last,Last):- write(Last),nl,
write('end of example'),nl.
output_values(First,Last):-First=\=Last,write(First),
nl,N is First+1,output_values(N,Last).
Disini output_values memiliki 2 argumen yang bisa dibaca sebagai output integer dari inklusif pertama hingga terakhir. Loop berakhir ketika kedua argumen
sama.
?- output_values(5,12).
56789
10
11
12
end of example
yes

6.2 Loop sampai kondisi terpenuhi
Banyak bahasa memiliki sebuah 'for loop' yang memungkinkan sebuah set instruksi yang akan
dieksekusi berulang kali sampai kondisi tertentu terpenuhi. Sekali lagi, tidak ada fasilitas seperti
tersedia secara langsung di Prolog, tetapi efek yang sama dapat diperoleh dengan beberapa cara.

6.2.1 Rekursi
Contoh pertama di bawah ini menunjukkan penggunaan istilah rekursi untuk membaca dimasukkan oleh
pengguna dari keyboard dan output mereka ke layar, sampai selesai.

6.2.2 menggunakan predikat 'repeat'
Meskipun sering dapat digunakan untuk efek yang besar, rekursi tidak selalu yang paling mudah
cara untuk menyediakan jenis perulangan yang diperlukan dalam program Prolog. Metode lain
yang sering digunakan adalah berdasarkan pada built-in predikat ulangi.
Nama predikat ini benar-benar sebuah ironi. Tujuan tidak mengulangi
mengulangi apa pun; itu hanya berhasil setiap kali disebut. Nilai besar mengulang
adalah bahwa hal itu juga berhasil (sebanyak yang diperlukan) pada kemunduran. Efek
ini, seperti untuk tujuan lainnya berhasil, adalah untuk mengubah urutan mengevaluasi tujuan
dari "kanan ke kiri '(yaitu backtracking) kembali ke' kiri-ke-kanan '. Ini dapat digunakan untuk
menciptakan efek perulangan, seperti ditunjukkan pada contoh di bawah ini.
Program ini berulang kali mendorong pengguna untuk memasukkan istilah sampai entah ya atau tidak
dimasukkan. Ini adalah alternatif dari program rekursif ditampilkan di bagian akhir
bagian sebelumnya. Dalam hal ini masih diperdebatkan apakah menggunakan mengulang adalah
perbaikan menggunakan rekursi, tetapi contoh adalah termasuk untuk tujuan
ilustrasi.

6.3 menelusuri kegagalan
Seperti namanya, predikat gagal selalu gagal, apakah pada 'standar'
evaluasi kiri-ke-kanan atau pada kemunduran. Keuntungan dapat diambil dari ini,
dikombinasikan dengan otomatis Prolog backtracking, untuk pencarian melalui database untuk
menemukan semua klausa dengan properti tertentu.

6.3.1 mencari database prolog
Misalkan database berisi klausa seperti
anjing (fido).
anjing (fred).
anjing (jonathan).
Setiap anjing klausul dapat diproses pada gilirannya menggunakan predikat alldogs didefinisikan
di bawah.
alldogs:-anjing (X), write (X), menulis ( 'adalah anjing'), nl, gagal.
alldogs.
Memanggil alldogs akan menyebabkan anjing (X) untuk dicocokkan dengan anjing ayat-ayat dalam
database. Awalnya X akan terikat untuk fido dan "fido adalah anjing 'akan output. Itu
tujuan akhir klausa pertama dari predikat alldogs kemudian akan menyebabkan evaluasi untuk
gagal. Prolog akan mundur atas nl dan dua tujuan menulis (semua yang
unresatisfiable) hingga mencapai anjing (X). Tujuan ini akan berhasil untuk kedua kalinya
menyebabkan X untuk terikat untuk fred.
Proses ini akan berlanjut sampai fido, fred dan jonathan semua telah keluaran,
ketika evaluasi akan kembali gagal. Kali ini panggilan untuk anjing (X) juga akan gagal karena ada
Tidak ada anjing lebih lanjut pasal-pasal dalam database. Hal ini akan menyebabkan klausul pertama untuk
alldogs gagal dan Prolog untuk memeriksa klausul kedua alldogs. Ini
berhasil dan evaluasi akan berhenti.
Efeknya adalah untuk loop melalui database menemukan semua kemungkinan nilai dari X yang
memenuhi tujuan anjing (X).
? - Alldogs.
fido adalah anjing
fred adalah anjing
jonathan adalah anjing
ya
Catatan pentingnya klausa kedua dari alldogs predikat. Hal ini ada untuk
memastikan bahwa, setelah database telah digeledah, tujuan berhasil. Dengan hanya
baris pertama, setiap panggilan ke alldogs akhirnya akan gagal.
alldogs:-anjing (X), write (X), menulis ( 'adalah anjing'), nl, gagal.
? - Alldogs.
fido adalah anjing
fred adalah anjing
jonathan adalah anjing
tidak
Program berikutnya dirancang untuk mencari database yang berisi klausa
mewakili nama, umur, tempat tinggal dan pekerjaan sejumlah
orang-orang.
Jika database berisi lima klausa
orang (john, smith, 45, london, dokter).
orang (martin, williams, 33, Birmingham, guru).
orang (henry, smith, 26, manchester, tukang ledeng).
orang (jane, Wilson, 62, london, guru).
orang (mary, smith, 29, glasgow, surveyor).
Nama semua guru dapat ditemukan dengan menggunakan allteachers predikat.
allteachers:-orang (Forename, Surname ,_,_, guru),
write (Forename), menulis ( ''), menulis (Marga), nl,
gagal.
allteachers.
Efek menggunakan backtracking dengan kegagalan dalam kasus ini adalah untuk menemukan semua
guru dalam database.
? - Allteachers.
martin williams
jane wilson
ya
Jika kedua klausul allteachers dihilangkan, baik guru masih akan
ditemukan tetapi evaluasi allteachers akan berakhir dengan kegagalan. Ini adalah yang sedikit atau
tidak penting ketika tujuan yang dimasukkan pada sistem prompt, tetapi jika allteachers itu
digunakan sebagai tujuan dalam tubuh aturan itu jelas akan mudah untuk dilaksanakan untuk memastikan bahwa
selalu berhasil.
Perlu dicatat bahwa tidak selalu perlu untuk menggunakan 'backtracking dengan
kegagalan 'untuk mencari database. Sebagai contoh, predikat somepeople / 0 didefinisikan
di bawah ini akan menemukan semua orang dalam database yang diberikan sebelumnya, turun ke williams,
standar hanya menggunakan backtracking.
somepeople:-orang (Forename, Marga ,_,_,_),
write (Forename), menulis ( ''), menulis (Marga), nl,
Nama keluarga = williams.
somepeople.
Tujuan Nama Keluarga = williams berhasil jika variabel terikat Nama Keluarga
williams. Jika tidak, itu gagal. Efeknya adalah untuk mencari basis data hingga dan termasuk
orang klausul dengan argumen kedua williams.
? - Somepeople.
John Smith
martin williams
ya

6.3.2 Mencari Solusi berlebih
menelusuri kegagalan juga dapat digunakan untuk mencari semua cara untuk memuaskan tujuan.
Misalkan sebuah predikat findroute (Town1, Town2, Route) menemukan sebuah rute Route
antara dua kota Town1 dan Town2. Rincian predikat ini tidak relevan
di sini. Ini dapat diasumsikan bahwa Town1 dan Town2 adalah atom dan bahwa rute ini adalah daftar.
menelusuri kegagalan kemudian dapat digunakan untuk mencari semua kemungkinan rute antara
Town1 dan Town2 dan menulis masing-masing satu di baris terpisah, sebagai berikut:
find_all_routes (Town1, Town2): --
findroute (Town1, Town2, Route),
write ( 'Kemungkinan rute:'), menulis (Route), nl, gagal.
find_all_routes (_,_).

Summary input output

built-in predikat yang membaca dan menulis dengan baik untuk pengguna
terminal (keyboard dan layar) atau file, kedua istilah tersebut dengan istilah dan character-
karakter dalam program Anda sendiri. Nilai ASCII karakter untuk memanipulasi string. Prolog memiliki fasilitas untuk mengaktifkan input maupun output dari istilah atau karakter. Menggunakan istilah sederhana dan akan dijelaskan terlebih dahulu. Awalnya, akan diasumsikan bahwa
semua output ke layar pengguna dan semua masukan pengguna adalah keyboard. Input dan output menggunakan file eksternal.

Persyaratan 1:Outputting

predikat mengambil satu argumen, yang harus valid dalam prolog. Evaluasi penyebab istilah predikat harus ditulis menuju output, yang secara default adalah layar pengguna. (Yang dimaksud dengan arus keluaran Logika Pemrograman Prolog Dengan streaming)
Contoh
?- write(26),nl.
26
yes
?- write('a string of characters'),nl.
a string of characters
yes
?- write([a,b,c,d,[x,y,z]]),nl.
[a,b,c,d,[x,y,z]]
yes
?- write(mypred(a,b,c)),nl.
mypred(a,b,c)
yes
?- write('Example of use of nl'),nl,nl,write('end of example'),nl.
Example of use of nl
end of example
yes

Persyaratan 2:Inputting


Built-in predikat read/ 1 disediakan untuk memasukkan istilah. Dibutuhkan satu argumen, yang harus menjadi variabel.
Mengevaluasi itu menyebabkan istilah berikutnya untuk dibaca dari input, yang secara default adalah pengguna keyboard. (Yang dimaksud dengan arus input Saat ini hanya dapat diartikan keyboard pengguna.)
Dalam input stream, istilah harus diikuti oleh sebuah titik ('.') dan setidaknya karakter ruang kosong, seperti spasi atau baris baru. Titik dan spasi karakter dibaca dalam tetapi tidak dianggap bagian dari istilah. Ketika sebuah tujuan membaca dievaluasi, istilah input disatukan dengan argumen
variabel. Jika variabel tidak terikat (yang biasanya terjadi) itu adalah terikat pada masukan nilai.

Menggunakan 3:Input dan Output Karakter

Meskipun input dan output dari syarat-syarat sangat mudah, penggunaan tanda kutip dan penuh dapat berhenti rumit dan tidak selalu sesuai. Sebagai contoh, akan membosankan untuk mendefinisikan sebuah predikat (menggunakan baca) yang akan membaca serangkaian karakter dari keyboard dan menghitung jumlah huruf vokal. Pendekatan yang lebih baik untuk masalah seperti ini adalah untuk masukan sebuah karakter pada satu waktu. Untuk melakukan hal ini, pertama-tama perlu untuk mengetahui tentang nilai ASCII karakter.
Semua mencetak karakter dan banyak karakter non-cetak (seperti spasi dan tab) memiliki sesuai ASCII (American Standard Kode untuk Informasi Interchange) nilai, yang merupakan integer 0-255.
Tabel di bawah ini memberikan nilai ASCII numerik yang sesuai dengan karakter dicetak utama dan beberapa orang lain.

4. Keluaran Karakter

Karakter adalah output dengan menggunakan built-in predikat put / 1. Predikat mengambil satu argumen, yang harus menjadi nomor 0-255 atau ekspresi yang mengevaluasi ke integer dalam jangkauan.
Mengevaluasi tujuan put menyebabkan satu karakter untuk output ke output arus sungai.
Ini adalah karakter yang sesuai dengan nilai numerik (ASCIIvalue) dari argumen.

5. Memasukkan Karakter

Dua predikat built-in disediakan untuk memasukkan satu karakter: get0 / 1 dan mendapatkan / 1.
Get0 predikat yang mengambil satu argumen, yang harus menjadi variabel. Mengevaluasi sebuah tujuan get0 menyebabkan karakter untuk dibaca dari input saat ini sungai. Variabel tersebut kemudian disatukan dengan nilai ASCII karakter ini.

6. Menggunakan Karakter: Contoh-contoh

Contoh pertama menunjukkan cara membaca dalam serangkaian karakter dari keyboard finishing dengan * dan untuk output nilai-nilai ASCII yang berhubungan satu per baris (untuk semua karakter termasuk *).
Readin predikat didefinisikan secara rekursif. Ini menyebabkan satu karakter untuk menjadi input dan variabel X untuk terikat kepada para (numerik) nilai ASCII. Tindakan yang dilakukan (proses (X) tujuan) tergantung pada apakah atau tidak X memiliki nilai yang berarti a * 42 karakter. Jika memiliki, evaluasi tujuan berhenti. Jika tidak, nilai dari X adalah output,
diikuti oleh baris baru, diikuti dengan sebuah panggilan ke readin lebih lanjut. Proses ini berlangsung
tanpa batas waktu sampai a * karakter yang dibaca. (Pada contoh di bawah ini, nilai-nilai ASCII karakter P, r, o dll benar ditunjukkan untuk menjadi sebesar 80, 114, 111 dll)
Mengasumsikan argumen variabel tak terikat (yang biasanya akan terjadi), itu terikat pada nilai ASCII karakter input.

7. Input dan Output Menggunakan File

Prolog mengambil semua input dari input arus sungai dan menulis semua output ke output arus sungai. Secara default kedua sungai ini bernama pengguna, yang melambangkan pengguna terminal, yaitu untuk input keyboard dan layar untuk memperoleh keluaran.
Fasilitas yang sama tersedia untuk input dan output dari dan ke terminal baik pengguna istilah tersebut dengan istilah atau karakter demi karakter juga tersedia untuk input dan output dari dan ke file (misalnya file pada hard disk atau CD-ROM).
Pengguna dapat membuka dan menutup aliran input dan output yang berhubungan dengan sejumlah nama file, tapi hanya ada satu aliran input dan satu output arus sungai setiap saat. Perhatikan bahwa tidak ada file bisa terbuka untuk input maupun output pada waktu yang sama (kecuali pengguna) dan bahwa pengguna input dan output stream
tidak dapat ditutup.

8. File Output: Mengubah Current Output Stream


Aliran arus keluaran dapat diubah menggunakan tell / 1 predikat. Hal ini memerlukan satu argumen, yang merupakan atom atau variabel yang mewakili nama file, misalnya kirim ( 'outfile.txt').
Mengevaluasi sebuah tujuan kirim menyebabkan file bernama untuk menjadi outputStream saat ini.
Jika file belum terbuka, file dengan nama tertentu adalah pertama kali diciptakan (file yang telah ada dengan nama yang sama akan dihapus).
Perhatikan bahwa file yang terkait dengan aliran arus keluaran sebelumnya tetap terbuka ketika arus keluaran baru stream dipilih. Hanya aliran arus keluaran dapat ditutup (menggunakan predikat kata yang dijelaskan di bawah).
Arus keluaran default stream pengguna, yaitu pengguna terminal. Nilai ini dapat dikembalikan baik dengan menggunakan kata predikat atau dengan kirim (pengguna).
Built-in predikat tell/ 0 mengambil tanpa argumen. Mengevaluasi sebuah tujuan kepada arus keluaran menyebabkan file yang akan ditutup dan arus keluaran sungai untuk diatur ulang ke pengguna, yaitu pengguna terminal.
Built-in predikat tell / 1 memerlukan satu argumen, yang harus menjadi variabel dan biasanya akan terikat. Mengevaluasi sebuah tujuan memberitahu menyebabkan variabel yang akan
terikat nama keluaran arus sungai.

9. File Input: Mengubah Input Current Stream

Input stream yang aktif dapat diubah dengan menggunakan view / 1 predikat. Hal ini memerlukan satu argumen, yang merupakan atom atau variabel yang mewakili nama file, misalnya lihat ( 'myfile.txt').
Mengevaluasi sebuah tujuan melihat menyebabkan file bernama input yang menjadi sungai. Jika file ini belum terbuka itu pertama kali dibuka (untuk akses baca saja). Jika tidak mungkin untuk membuka file dengan nama yang diberikan, kesalahan akan dihasilkan.
Perhatikan bahwa file yang terkait dengan arus input yang sebelumnya tetap terbuka ketika sebuah arus input yang baru dipilih. Hanya aliran input yang dapat ditutup (menggunakan predikat melihat dijelaskan di bawah).
Default input stream pengguna, yaitu pengguna terminal. Nilai ini dapat dikembalikan baik dengan menggunakan dilihat predikat atau dengan melihat (pengguna).
Built-in predikat view / 0 mengambil tanpa argumen. Mengevaluasi sebuah tujuan melihat input yang menyebabkan file yang akan ditutup dan arus input yang akan diatur ulang ke pengguna, yaitu pengguna terminal.
Built-in predikat view / 1 memerlukan satu argumen, yang harus menjadi variabel dan biasanya akan terikat. Mengevaluasi sebuah tujuan melihat menyebabkan variabel untuk terikat dengan nama input arus sungai.

10.Reading dari File: End of File


Jika akhir file ditemukan ketika mengevaluasi tujuan read (X), variabel X akan terikat pada atom end_of_file.
Jika akhir file ditemukan saat mengevaluasi tujuan mendapatkan (X) atau get0 (X), variabel X akan terikat kepada seorang 'khusus' nilai numerik. Sebagai nilai-nilai ASCII harus berada dalam kisaran 0-255 inklusif, ini biasanya akan menjadi -1, tetapi dapat bervariasi dari satu pelaksanaan Prolog yang lain.

11.Reading dari File: End of Record

Tergantung pada versi Prolog digunakan, mungkin ada ketidakcocokan untuk
karakter input antara membaca akhir sebuah catatan (yaitu karakter (s) yang
menandai akhir baris) dari terminal pengguna dan dari sebuah file.
Biasanya akhir baris dari input pada terminal pengguna akan ditunjukkan oleh
karakter dengan nilai ASCII 13. Akhir sebuah catatan dalam sebuah file umumnya akan
ditunjukkan oleh dua nilai ASCII: 13 diikuti oleh 10.
Program berikut menunjukkan bagaimana membaca dalam serangkaian karakter dari
keyboard dan mencetak mereka keluar, satu per baris.

Summary Operator dan Arithmetic

1.Operator
Setiap predikat yang ditetapkan pengguna dengan dua argumen (predikat biner) dapat dikonversi ke operator infiks.
Setiap predikat yang ditetapkan pengguna dengan satu argumen (a unary predikat) dapat diubah menjadi prefiks operator. Hal ini memungkinkan functor ditulis sebelum argumen tanpa tanda kurung.
unary predikat yang dapat dikonversi ke postfix operator. Hal ini memungkinkan functor ditulis setelah argumen
Setiap predikat yang ditetapkan pengguna dengan satu atau dua argumen dapat dikonversi ke operator dengan memasukkan tujuan menggunakan op predikat pada sistem prompt. Predikat ini butuh tiga argumen, misalnya

?-op(150,xfy,likes).

1. Argumen pertama (150) adalah 'operator didahulukan'. Nilai didahulukan operator
digunakan untuk menentukan urutan dari operator akan diterapkan bila lebih dari satu
digunakan dalam istilah. Dalam kebanyakan kasus-kasus lain itu akan cukup untuk menggunakan nilai yang sewenang-wenang seperti 150.

2. Argumen kedua biasanya harus salah satu dari tiga atom berikut:
xfy berarti bahwa predikat biner dan akan dikonversikan ke operator infiks
fy berarti bahwa predikat adalah unary dan akan dikonversikan ke operator prefix
xf berarti bahwa predikat adalah unary dan akan dikonversi ke postfix operator

3. Argumen ketiga menentukan nama predikat yang harus dikonversi ke
operator.

2.Arithmetic
Prolog menyediakan fasilitas untuk melakukan aritmatika menggunakan notasi yang serupa dengan yang sudah akrab bagi banyak pengguna dari aljabar dasar.
Ada beberapa operator aritmatika dan fungsi aritmatika tersedia dalam Prolog:
1.x + Y jumlah X dan Y
2.x-Y perbedaan dari X dan Y
3.x * Y produk X dan Y
4.x / Y hasil bagi X dan Y
5.x / / Y 'integer hasil bagi' dari X dan Y (hasilnya adalah dipotong ke integer terdekat antara bilangan itu dan nol)
6.x ^ Y X untuk kekuatan Y
7.-X negatif X
8.abs (X) nilai absolut X
9.sin (X) sinus X (untuk X diukur dalam derajat)
10.cos (X) kosinus X (untuk X diukur dalam derajat)
11.max (X, Y) yang lebih besar dari X dan Y
12.sqrt (X) akar kuadrat X

adalah predikat biasanya digunakan dalam cara yang dijelaskan di sini, argumen pertama juga dapat berupa angka atau variabel terikat dengan nilai numerik. Dalam kasus ini, nilai-nilai numerik dari dua argumen dihitung. Tujuan berhasil jika ini adalah sama. Jika tidak, itu gagal.

1. Argumen pertama adalah variabel terikat, ia terikat dengan nilai argumen kedua (sebagai efek samping).
2. Argumen pertama adalah angka, atau variabel terikat dengan nilai numerik.
3. Argumen pertama adalah sebuah atom, sebuah istilah majemuk, daftar, atau variabel terikat satu ini (tidak ada yang seharusnya terjadi), hasilnya adalah tergantung pada implementasi.
Kemungkinan besar akan terjadi kesalahan.


Operator Precedence di Arithmetic Expressions
Operator didahulukan relatif tinggi seperti * dan / diterapkan sebelum mereka yang didahulukan lebih rendah seperti + dan -. Efeknya adalah untuk memberikan ekspresi seperti A + B * CD arti bahwa seorang pengguna yang akrab dengan aljabar akan mengharapkan untuk memiliki, yaitu A + (B * C)-D atau (A + B) * (CD).

Relational Operator
>= < =<>" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">The infiks operator =: = = \ =>> = <= <>

3.Kesetaraan Operator
Ada tiga jenis operator relasional untuk pengujian kesetaraan dan ketidaksetaraan tersedia dalam Prolog. Tipe pertama digunakan untuk membandingkan nilai-nilai ekspresi aritmatika. Dua lainnya jenis tersebut digunakan untuk membandingkan istilah.

a. Aritmatika Expression Kesetaraan =: =
E1 =: = E2 berhasil jika ekspresi aritmetika E1 dan E2 mengevaluasi nilai yang sama.
b. Ekspresi aritmatika Ketidaksetaraan = \ =
E1 = \ = E2 berhasil jika ekspresi aritmetika E1 dan E2 tidak mengevaluasi nilai yang sama.
c. Persyaratan Identik ==
Kedua argumen dari operator == infiks harus istilah. Tujuan Term1 == Term2 berhasil jika dan hanya jika Term1 identik dengan Term2. Setiap variabel yang digunakan dalam istilah mungkin atau mungkin tidak sudah terikat, tetapi tidak ada variabel terikat sebagai akibat dari tujuan evaluasi.
d. Persyaratan Tidak Identik \ ==
Term1 \ == Term2 tes apakah Term1 tidak identik dengan Term2. Tujuan berhasil jika Term1 == Term2 gagal. Selain itu gagal.
e. Syarat Identik Dengan Unifikasi =
Istilah kesetaraan operator = adalah serupa dengan == dengan satu penting (dan sering sangat berguna) perbedaan. Tujuan Term1 = Term2 berhasil jika Term2 istilah Term1 dan menyatukan, yaitu
ada beberapa cara untuk mengikat nilai-nilai variabel yang akan membuat istilah identik. Jika tujuan berhasil, seperti terjadi sebenarnya mengikat.
f. Non-Unifikasi Antara Dua Syarat \ =
Tujuan Term1 \ = Term2 berhasil jika Term1 = Term2 gagal, yaitu dua istilah ini tidak dapat bersatu. Selain itu gagal.

4.Operator Logika
Bagian ini memberikan gambaran singkat dari dua operator yang mengambil argumen yang menyebut istilah, yaitu istilah yang dapat dianggap sebagai tujuan.
a. Operator "not"
Operator awalan "not" / 1 dapat ditempatkan sebelum tujuan untuk memberikan yang pengingkaran. Tujuan yang menegasikan berhasil jika tujuan asli gagal dan gagal jika tujuan asli berhasil. Contoh berikut menggambarkan penggunaan "not" / 1. Diasumsikan bahwa database berisi satu klausul

b. Operator disjungsi
operator disjungsi; / 2 (ditulis sebagai karakter titik koma) digunakan untuk mewakili 'atau'. Ini adalah infiks operator yang membutuhkan dua argumen, yang keduanya adalah tujuan. Tujuan1; Tujuan2 berhasil jika salah satu dari Tujuan1 atau Tujuan2 berhasil.


Fact, Rules, Predicate, and Variable in Prolog

disini kami akan menjelaskan tentang fakta, aturan, predikat dan variabel di dalam prolog.
untuk itu, yang pertama kita buat adalah menulis file seperti ini di notepad.
setelah itu simpan dengan nama pl1.pl dan pl2.pl


untuk soal pertama, consult pl1.pl

ketikkan seperti yang ada di gambar tiap nomornya, lalu enter.
untuk melanjutkan hasilnya tekan titik koma(;).

untuk soal ke2, tambahkan fakta seperti dibawah ini
lalu Consult file pl2.pl.

Setelah itu tuliskan couple(X,Y).
lihat hasilnya seperti di bawah.
untuk melanjutkan menampilkan hasil, tekan titik koma(;)



Rabu, 09 Desember 2009

LOOP! V.03

Pertama buatlah source code seperti ini:


consult dan ketik "semuasiswa". maka akan muncul:


lalu coba ganti seperti di bawah ini :


ulangi mengetik "semuasiswa"

Senin, 07 Desember 2009

LOOP! V.02

seperti biasa masukkan rules seperti berikut:


lalu kita consult dan ketikkan go.
dan masukkan kata apapun seperti di bawah ini.



namun dengan cara lain kita bisa melakukan loop seperti di atas.



lalu masukkan command "loop." dan lakukan seperti di atas.

LOOP! V.01

pertama buatlah rules seperti ini.



Setelah itu kembali ke prolog dan consult file tsb.



setelah muncul hasi seperti di atas, dapat diambil kesimpulan bahwa sebenarnya prolog tidak memiliki fasilitas untuk looping, namun dengan menggunakan rules di atas, maka setelah prolog mencetak N, dan mengurangi nilainya lalu akan mencetak kembali N-1, dan seterusnya hingga nilai N adalah 0.

INPUT & OUTPUT

MAKELOWER

pertama buatlah file baru dengan rules:


setelah itu consult rules tersebut dan masukkan "makelower." lalu ketik apa saja dengan menggunakan perbedaan huruf kapital.



maka hasilnya bisa dilihat sendiri ^^.

Senin, 23 November 2009

Expert System untuk menentukan gaya belajar

Setiap orang memiliki gaya belajar yang berbeda - beda. gaya belajar dibedakan menjadi 3 macam, yaitu auditori, visual, dan kinestetik. Dengan Expert System kita bisa menentukan gaya belajar yang cocok untuk seseorang.

Ciri-ciri gaya belajar auditori :


² Saat bekerja suka bicaa kepada diri sendiri

² Penampilan rapi

² Mudah terganggu oleh keributan

² Belajar dengan mendengarkan dan mengingat apa yang didiskusikan dari pada yang dilihat

² Senang membaca dengan keras dan mendengarkan

² Menggerakkan bibir mereka dan mengucapkan tulisan di buku ketika membaca

² Biasanya ia pembicara yang fasih

² Lebih pandai mengeja dengan keras daripada menuliskannya

² Lebih suka gurauan lisan daripada membaca komik

² Mempunyai masalah dengan pekerjaan-pekerjaan yang melibatkan Visual

² Berbicara dalam irama yang terpola

² Dapat mengulangi kembali dan menirukan nada, berirama dan warna suara


Ciri-ciri gaya belajar kinestetik :


² Berbicara perlahan

² Penampilan rapi

² Tidak terlalu mudah terganggu dengan situasi keributan

² Belajar melalui memanipulasi dan praktek

² Menghafal dengan cara berjalan dan melihat

² Menggunakan jari sebagai petunjuk ketika membaca

² Merasa kesulitan untuk menulis tetapi hebat dalam bercerita

² Menyukai buku-buku dan mereka mencerminkan aksi dengan gerakan tubuh saat membaca

² Menyukai permainan yang menyibukkan

² Tidak dapat mengingat geografi, kecuali jika mereka memang pernah berada di tempat itu

² Menyentuh orang untuk mendapatkan perhatian mereka Menggunakan kata-kata yang mengandung aksi


Ciri-ciri gaya belajar visual :


² Bicara agak cepat

² Mementingkan penampilan dalam berpakaian/presentasi

² Tidak mudah terganggu oleh keributan

² Mengingat yang dilihat, dari pada yang didengar

² Lebih suka membaca dari pada dibacakan

² Pembaca cepat dan tekun

² Seringkali mengetahui apa yang harus dikatakan, tapi tidak pandai memilih kata-kata

² Lebih suka melakukan demonstrasi dari pada pidato

² Lebih suka musik dari pada seni

² Mempunyai masalah untuk mengingat instruksi verbal kecuali jika ditulis, dan seringkali minta bantuan orang untuk mengulanginya


maka dengan Expert System, kita dapat menggunakan, bila seseorang memiliki ciri -ciri seperti diatas maka orang tersebut memiliki gaya belajar sesuai cirinya.

Contoh: if Tidak dapat mengingat geografi, kecuali jika mereka memang pernah berada di tempat itu then gaya belajar kinestetik

bagaimana bila seseorang memiliki gaya yang berlainan atau keluar dari ciri - ciri yang ada,
berarti orang tersebut memiliki 2 macam gaya belajar, namun pasti orang tersebut memiliki gaya belajar yang dominan.

dengan mengetahui gaya belajar kita memudahkan kita bagaimana untuk belajar lebih efektif


Rabu, 18 November 2009

Operator dalam PROLOG

1. buka prolog dan buat file baru, lalu masukkan kode berikut

2. consult file tersebut lalu ketik
melamar(X,Y).


dari hasil tersebut yang dapat kita lihat adalah hanya muncul fred melamar marry, dikarenakan kita memasukkan operator seorang pria lajang yg dapat melamar seorang wanita lajang

dalam prolog kita biasa menggunakan seperti ini
melamar(fred,X)
maksudnya fred melamar x,
pria(fred)
maksudnya fred adalah seorang pria,
maka dalam prolog pun kita bisa menggabungkan operator tersebut menjadi suatu keterkaitan.
misalkan pria(fred) > fred adalah seorang pria, wanita(marry)> marry adalah seorang wanita, lajang(fred),lajang(marry) > fred , marry adalah seorang lajang, dan kita menginginkan kondisi dimana seorang_pria>pria lajang hanya dapat melamar seorang_wanita>wanita lajang dengan melamar(X, Y), dimana seorang_pria(X), dan seorang_wanita(Y).

^_^

Minggu, 15 November 2009

RULE BASED - EXPERT SYSTEM

Sistem pakar adalah suatu program komputer yang memperlihatkan derajat keahlian dalam pemecahan masalah di bidang tertentu sebanding dengan seorang pakar (Ignizio, 1991). Keahlian sistem pakar dalam memecahkan suatu masalah diperoleh dengan cara merepresentasikan pengetahuan seorang atau beberapa orang pakar dalam format tertentu dan menyimpannya dalam basis pengetahuan. Sistem pakar berbasis kaidah (rule-based expert system) adalah sistem pakar yang menggunakan kaidah (rules) untuk merepresentasikan pengetahuan di dalam basis pengetahuannya.

> Suatu Rule Terdiri dari 2 bagian, yaitu:

  • Antacedent, yaitu bagian yang mengekspresikan situasi atau premis (Pernyataan berawalan IF)
  • Konsekuen, yaitu bagian yang menyatakan suatu tindakan tertentu atau konklusi yang diterapkan jika situasi atau premis bernilai benar (Pernyataan berawalan THEN).

Misalnya:

IF lalulintas pagi ini macet
THEN saya naik sepeda motor saja

Rabu, 14 Oktober 2009

Cara membuat himpunan dengan menggunakan prolog

Dalam menggunaka aplikasi prolog, kita dapat membuat program yang menyatakan himpunan.

Langkah-langkah yang harus diperlukan :
1. Install aplikasi prolog di komputer



2. jalankan aplikasi prolog




3. klik file > new





4. buat data seperti pada gambar di atas




5. save data tersebut lalu tutup.







6. pilih file > consult



ini setelah di consult.


7. masukkan perintah ?- set1(X), set2(Y).



8. tekan enter untuk melihat hasil.


9. untuk melanjutkan hasilnya, tekan titik koma (;) .


10. Semoga bermanfaat dan lebih bereksplorasi lagi !!!

Selasa, 13 Oktober 2009

ini adalah biodata dari kami


Nama : Ezra M. H. Manullang
NRP : 5209100100
alamat : Penjaringansari PS I J/31
motto : hadapi dengan "Senyuman"
hobi : makan, tidur, musik, game, sudah..
about me : whatever lah...








Nama : Moch. Misbach A.
NRP : 5209100108
alamat : Gebang Wetan 23d
hobi : berenang, bernafas, berkembang biak
motto : hidup itu perlu makan
about me : kamu adalah kamu








Nama : Kurniawan Agung
NRP : 5209100109
alamat : Gebang Wetan 17
hobi : maen basket, maen musik, nonton tipi, maen cewek? gak lah...
motto : hidup itu indah
about me : saya adalah saya








Nama : Aryo Wicaksono
NRP : 5209100110
alamat : Penjaringansari PS I A/31
hobi : domino, remi, roullette yang halal
motto : good guy finish last
about me : what about you?

Kamis, 01 Oktober 2009

Kelompok Implikasi

Kami Terdiri Dari:
Ezra M.H. Manullang : 5209100100
Aryo Wicaksono : 5209100110
M. Misbach A. : 5209100108
Kurniawan : 5209100109