Tampilkan postingan dengan label "TUTORIAL". Tampilkan semua postingan
Tampilkan postingan dengan label "TUTORIAL". Tampilkan semua postingan

Selasa, 15 Desember 2009

EXPERT SYSTEM DESIGN

Saat ini perkembangan teknologi sangat pesat sekali . Kita tidak update sebentar sudah ketinggalan banyak mengenai teknologi. Sehingga apabila kita mengenal teknologi mungkin suatu pekerjaan dapat terselesaikan dengan mudah . misalnya saja satpam yang menjaga hunian rumah , kebanyakan satpam penjaga tidak tahu tentang penduduk yang tinggal di perumahan tersebut baik itu nama maupun blok rumah. Dan kebanyakan satpam mencatat di buku nama-nama penduduk dan alamatnya . Maka dari itu kami menciptakan suatu database yang memudahkan dalam pendataan penduduk . Satpam tidak lagi menggunakan buku untuk mencarinya, karena pasti dengan buku sangat lamban.
Langkahnya yaitu :

1. pertama kita bikin rulenya terlebih dahulu dalam notepad tentang penduduk hunian, kemudian jika kita ingin
    mencari data entah nama, blok, nama istri dengan menuliskan variable write.





  
2. Kemudian file save dalam bentuk .pl
3. Setelah itu buka file yang tadi di save dalam bentuk prolog.
4. Kemudian dalam prolog ketikan find untuk mencarinya.




 5. Di sini saya menampilkan nama penghuni. Dan nantinya akan keluar data lengkapnya.


Semoga ini bermanfaat.

Selasa, 08 Desember 2009

INPUT AND OUTPUT in Prolog

Jawaban Soal Practical Exercise 6

Soal No.1

1. Pertama-tama kita buat rulenya terlebih dahulu dalam notepad. Menggunakan rekursi untuk mencari nilai  kuadrat bilangan N1. Dan sampai tidak melebihi N2.



2. Kemudian save dalam format .pl
3. Kemudian buka file yang sudah dalam bentuk format prolog tadi.
4. Tuliskan dalam prolog outsquare(_,_). yang merupakan predikat kita dalam membuat rule tadi.




Soal No.2

1. Pertma-tama kita buat rulenya dulu dalam notepad. Dengan menggunakan predikat go,repeat,geto dan getrest.




2. Kemudian save dalam bentuk .pl
3. Buka file dalam bentuk prolog tadi. Ketik go. Seperti pada gambar di bawah ini.



Soal No. 3

1. Pertama-tama kita buat rulenya dalam notepad.Dengan menggunakan find sebagai predikatnya. Di sini menggunakan metode bactracking with failure. Untuk mencari profesi orang yang berumur lebih dari 40 tahun.
Bisa juga mencari profesi orang yang kurang dari 40 tahun.



2.  Simpan dalam bentuk .pl
3. Kemudian buka file prolog yang anda simpan tadi. Kemudian ketikkan find pada prolog.


Senin, 07 Desember 2009

SUMMARY FOR CHAPTER 6

Looping a Fixed Number of Times

Many programming languages provide 'for loops' which enable a set of instructions
to be executed a fixed number of times. No such facility is available in Prolog
(directly), but a similar effect can be obtained using recursion, as shown in the
example programs below.

Example 1

The following program outputs integers from a specified value down to 1.

loop(0).
loop(N):-N>0,write('The value is: '),write(N),nl,
   M is N-1,loop(M).

The  loop predicate is defined in terms of itself. The second clause can be
thought of as: 'to loop from N, first write the value of N, then subtract one to give
M, then loop from M'. This process clearly needs to be terminated and this is
achieved by the first clause: 'when the argument is zero, do nothing (and hence
stop)'. The first clause can be regarded as a terminating condition for the recursion.

?- 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

Example 2

The next program outputs integers from First to Last inclusive.
/* 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).

Here  output_values  has two arguments, which can be read as 'output the
integers from First to Last inclusive'. The loop terminates when both arguments are
the same.

?- output_values(5,12).
5
6
7
8
9
10
11
12
end of example
yes

Looping Until a Condition Is Satisfied

Many languages have an 'until loop' which enables a set of instructions to be
executed repeatedly until a given condition is met. Again, no such facility is
available directly in Prolog, but a similar effect can be obtained in several ways.

 Recursion

The first example below shows the use of recursion to read terms entered by the
user from the keyboard and output them to the screen, until end is encountered.

go:-loop(start). /* start is a dummy value used to get
   the looping process started.*/
loop(end).
loop(X):-X\=end,write('Type end to end'),read(Word),
   write('Input was '),write(Word),nl,loop(Word).

?- go.
Type end to end: university.
Input was university
Type end to end: of.
Input was of
Type end to end: portsmouth.
Input was portsmouth
Type end to end: end.
Input was end
yes

Using the 'repeat' Predicate

Although it can often be used to great effect, recursion is not always the easiest
way to provide the types of looping required in Prolog programs. Another method
that is often used is based on the built-in predicate repeat.
The name of this predicate is really a misnomer. The goal  repeat  does not
repeat anything; it merely succeeds whenever it is called. The great value of repeat
is that it also succeeds (as many times as necessary) on backtracking. The effect of
this, as for any other goal succeeding, is to change the order of evaluating goals
from 'right to left' (i.e. backtracking) back to 'left-to-right'. This can be used to
create a looping effect, as shown in the examples below.
This program repeatedly prompts the user to enter a term until either yes or no
is entered. It is an alternative to the recursive program shown at the end of the
previous section. In this case it is debatable whether using  repeat is an
improvement on using recursion, but the example is included for purposes of
illustration.

get_answer(Ans):-
   write('Enter answer to question'),nl,
   repeat,write('answer yes or no'),read(Ans),
   valid(Ans),write('Answer is '),write(Ans),nl.
valid(yes). valid(no).

The first five goals in the body of get_answer will always succeed. Evaluating
the fifth goal: read(Ans) will prompt the user to enter a term. If the term input is
anything but yes or no, say unsure, the following goal valid(Ans) will fail. Prolog
will then backtrack over read(Ans) and write('answer yes or no'), both of which
are unresatisfiable, i.e. will always fail on backtracking.
Backtracking will then reach the predicate  repeat and succeed, causing
evaluation to proceed forward (left-to-right) again, with write('answer yes or no')
and read(Ans) both succeeding, followed by a further evaluation of valid(Ans).
Depending on the value of Ans, i.e. the user's input, the valid(Ans) goal will
either fail, in which case Prolog will backtrack as far as repeat, as before, or it will
succeed in which case the final three goals write('Answer is'), write(Ans) and nl
will all succeed. The overall effect is that the two goals write('answer yes or no')
and read(Ans) are called repeatedly until the terminating condition valid(Ans) is
satisfied, effectively creating a loop between repeat and valid(Ans).

?- get_answer(X).
Enter answer to question
answer yes or no: unsure.
answer yes or no: possibly.
answer yes or no: no.
answer is no
X = no

Goals to the left of  repeat in the body of a clause will never be reached on
backtracking.

Backtracking with Failure

As the name implies, the predicate  fail always fails, whether on 'standard'
evaluation left-to-right or on backtracking. Advantage can be taken of this,
combined with Prolog's automatic backtracking, to search through the database to
find all the clauses with a specified property.

 Searching the Prolog Database

Supposing the database contains clauses such as
dog(fido).
dog(fred).
dog(jonathan).

Each dog clause can be processed in turn using the alldogs predicate defined
below.

alldogs:-dog(X),write(X),write(' is a dog'),nl,fail.
alldogs.

Calling alldogs will cause dog(X) to be matched with the dog clauses in the
database. Initially X will be bound to  fido and 'fido is a dog' will be output. The
final goal in the first clause of the alldogs predicate will then cause evaluation to
fail. Prolog will then backtrack over nl and the two write goals (all of which are
unresatisfiable) until it reaches dog(X). This goal will succeed for a second  time
causing X to be bound to fred.
This process will continue until  fido, fred and  jonathan have all been output,
when evaluation will again fail. This time the call to dog(X) will also fail as there
are no further  dog clauses in the database. This will cause the first clause for
alldogs to fail and Prolog to examine the second clause of  alldogs. This will
succeed and evaluation will stop.
The effect is to loop through the database finding all possible values of X that
satisfy the goal dog(X).

?- alldogs.
fido is a dog
fred is a dog
jonathan is a dog
yes

Note the importance of the second clause of the alldogs predicate. It is there to
ensure that, after the database has been searched, the goal succeeds. With only the
first line, any call to alldogs will eventually fail.

alldogs:-dog(X),write(X),write(' is a dog'),nl,fail.

?- alldogs.
fido is a dog
fred is a dog
jonathan is a dog
no

Finding Multiple Solutions

Backtracking with failure can also be used to find all the ways of satisfying a goal.
Suppose that a predicate  findroute(Town1,Town2,Route) finds a route  Route
between two towns Town1 and Town2. The details of this predicate are irrelevant
here. It may be assumed that Town1 and Town2 are atoms and that Route is a list.
Backtracking with failure can then be used to find all possible routes between
Town1 and Town2 and write out each one on a separate line, as follows:

find_all_routes(Town1,Town2):-
   findroute(Town1,Town2,Route),
   write('Possible route: '),write(Route),nl,fail.
find_all_routes(_,_).

Rabu, 25 November 2009

INPUT DAN OUTPUT dalam Prolog (3)















1. Buatlah variabelnya dulu dalam notepad.
2. Kemudian simpan dalam drive C atau yang lainnya dalam bentuk .pl
3. Bikin lagi inputanya dalam notepad simpan dengan nama input3 atau yang lain dalam bentuk txt.




4. Consult di program prolog variabel yang pertama tadi. Ketik perintahnya seperti pada gambar.



5. Akan muncul hasil  berbagai macam angka dan statement dengan dinyatakan  YES.


INPUT DAN OUTPUT dalam Prolog (2)





1. Pertama kita ketikan variabel terlebih dahulu dalam notepad sebagai inputannya.
2. Setelah itu simpan dalam local disk c atau yang lain dalam bentuk txt.
3. Setelah itu bikin rulenya dalam notepad juga dengan menggunakan copyterms.



4. Simpan dalam bentuk .pl
5. Consult di program prolog. kemudian ketik perintahnya.
6. Setelah itu munculah kalimat yes.




7. Hasil  output akan tersimpan langsung di dalam tempat yang anda simpan tadi.














INPUT DAN OUPTUT

INPUT dan OUTPUT adalah dua istilah yang sangat umum ketika berbicara tentang menggunakan komputer. Yang kami maksud dengan INPUT adalah informasi yang diberikan untuk sebuah program (baik itu sistem operasi, aplikasi seperti pengolah kata program, atau program yang Anda tulis sendiri). OUTPUT keprihatinan yang menghasilkan komputer sebagai hasil dari menjalankan program. Agak membingungkan, pengguna komputer selalu merujuk pada saluran input dan output sebagai "masukan" dan "output" juga.

Biasanya, Anda memberikan masukan ke program dari terminal (apa yang Anda ketik pada keyboard) atau dari sebuah file. Yang pertama sering disebut sebagai STANDAR INPUT (dalam arti kanal input). Misalnya, ketika anda mengetik perintah untuk Unix atau untuk SICStus pada tingkat atas meminta Anda menggunakan standard input. Ketika Anda meminta kompiler Prolog untuk berkonsultasi file, saluran masukan Anda adalah file.

Output dari program-program ini biasanya dikirim ke terminal (ditampilkan pada layar), tetapi Anda juga dapat mengirim output ke file, atau perintah lain. Ini adalah apa yang Anda lakukan di Unix bila Anda menggunakan> perintah untuk mengarahkan kembali output dari perintah ke file, atau pipa | perintah untuk mengirim output dari perintah ke perintah lain (lebih misalnya).

Sejauh ini, bila Anda telah menjalankan program Prolog, Anda hanya menggunakan terminal untuk input dan output. Tetapi ada cara untuk memberitahu Prolog untuk mengambil input dari sebuah file, atau untuk mengirim output ke satu. Hal ini berguna misalnya ketika Anda ingin menguji sebuah program, atau jika itu menghasilkan suatu kumpulan data yang ingin Anda menganalisis kemudian.

Ouput


built-in predikat utama yang disediakan untuk istilah output write/ 1, yang d gunakan dalam resume ini
write/ 1 predikat mengambil satu argumen, yang harus yang valid dengan syarat prolog.  Evaluasi predikat menyebabkan syarat akan ditulis ke current output stream, , yang secara default adalah layar user.
Built-in predikat nl / 0 juga telah digunakan berkali-kali sebelumnya dalam hal ini
buku. Tanpa membutuhkan argumen. Mengevaluasi sebuah tujuan nl menyebabkan baris baru untuk menjadi output untuk
output stream.
Contoh
? – write(26), nl.
26
ya
? – write( ’string karakter’), nl.
string karakter
ya
? – write([a, b, c, d, [x, y, z]]), nl.
[a, b, c, d, [x, y, z]]
ya
? – write (mypred (a, b, c)), nl.
mypred (a, b, c)
ya
? – write( ‘Contoh useran nl’), nl, nl, write( ‘akhir contoh’), nl.
Contoh useran nl
contoh akhir
ya

Input

Built-in predikat membaca disediakan untuk masukan istilah. Dibutuhkan satu argumen, yang harus menjadi variabel.
Mengevaluasi itu menyebabkan istilah berikutnya untuk dibaca dari input arus sungai,
yang secara default adalah pengguna keyboard. (Yang dimaksud dengan arus input). Dalam input stream, istilah harus diikuti oleh sebuah titik ('.') dan setidaknya satu spasi, seperti spasi atau baris baru. Titik dan spasi karakter dibaca dalam tetapi tidak dianggap bagian dari istilah. Perhatikan bahwa untuk masukan dari keyboard (hanya) sebuah prompt karakter seperti titik dua biasanya akan ditampilkan untuk menunjukkan bahwa input pengguna diperlukan. Mungkin perlu untuk tekan tombol 'kembali' tombol sebelum Prolog akan menerima input. Kedua tidak berlaku untuk masukan dari file. Ketika sebuah tujuan membaca dievaluasi, istilah input disatukan dengan argumen variabel. Jika variabel tidak terikat (yang biasanya terjadi) itu adalah terikat pada masukan nilai.

Contoh
? - Read (X).
: Jim.
X = jim
? - Read (X).
: 26.
X = 26
? - Read (X).
: Mypred (a, b, c).
X = mypred (a, b, c)
? - Read (Z).
: [A, b, mypred (p, q, r), [z, y, x]].
Z = [a, b, mypred (p, q, r), [z, y, x]]
? - Read (Y).
: 'String karakter'.
Y = 'string karakter'

Jika variabel argumen sudah terikat (yang bagi sebagian besar pengguna adalah jauh lebih mungkin terjadi karena kesalahan daripada desain), tujuan berhasil jika dan hanya jika masukan istilah adalah identik dengan nilai terikat sebelumnya.


Dalam Prolog :
? - X = fred, read (X).
: Jim.
tidak
? - X = fred, read (X).
: Fred.
X = fred


INPUT dan OUTPUT KARAKTER
Meskipun input dan output sangat mudah,tapi useran tanda kutip dan titik dapat menjadi rumit dan tidak selalu sesuai.Sebagai contoh, akan membosankan untuk menentukan predikat (menggunakan baca) yang akan membaca serangkaian karakter dari keyboard dan menghitung jumlah huruf vokal.
untuk mengetahui tentang nilai ASCII karakter.
Semua mencetak karakter dan banyak karakter non-cetak (seperti ruang dan
tab) memiliki sesuai ASCII (American Standard Code for  Information
Interchange) nilai, yang merupakan integer 0-255.

Output Karakter
 

Karakter adalah output dengan menggunakan built-in predikat meletakkan / 1. Predikat mengambil
argumen tunggal, yang harus menjadi nomor 0-255 atau ekspresi yang
mengevaluasi ke integer dalam jangkauan.
Mengevaluasi tujuan put menyebabkan satu karakter untuk menjadi output untuk saat ini
output stream. Ini adalah karakter yang sesuai dengan nilai numerik (ASCII
nilai) dari argumen, misalnya
?- put(97),nl.
a
yes
?- put(122),nl.
z
yes
?- put(64),nl.
@
Yes


 INPUT KARAKTER
 
Dua predikat built-in disediakan untuk memasukkan satu karakter: get0 / 1 da n get/ 1.
Get0 predikat yang mengambil satu argumen, yang harus menjadi variabel. Mengevaluasi
tujuan get0 menyebabkan karakter untuk dibaca dari input saat ini stream. Variabel
kemudian disatukan dengan nilai ASCII karakter ini.
Mengasumsikan argumen variabel tak terikat (yang biasanya akan terjadi), itu
terikat ke nilai ASCII karakter input.
? – Get0 (N).
: A
N = 97
? – Get0 (N).
: Z
N = 90
Logika Pemrograman Dengan 74 Prolog
? – Get0 (M)
)
M = 41
Jika variabel argumen sudah terikat, tujuan berhasil jika dan hanya jika memiliki
nilai numerik yang sama dengan nilai ASCII karakter input.
?- get0(X).
: a
X = 97
?- M is 41,get0(M).
: )
M = 41
?- M=dog,get0(M).
: )
no
?- M=41.001,get0(M).
: )
No
predikat mengambil satu argumen, yang harus menjadi variabel. Mengevaluasi
get berikutnya menyebabkan tujuan non-white-space karakter (yaitu ASCII karakter dengan
nilai kurang dari atau sama dengan 32) untuk dibaca dari input saat ini stream. Itu
variabel ini kemudian disatukan dengan nilai ASCII karakter ini dengan cara yang sama seperti
untuk get0.
?- get(X).
: Z
X = 90
?- get(M).
: Z
M = 90

Input and Output Using File
 

Prolog mengambil semua input dari input stream dan menulis semua output ke
output stream. Secara default kedua stream ini bernama user,
menunjukkan user terminal, yaitu untuk input keyboard dan layar untuk memperoleh output.
Fasilitas yang sama yang tersedia untuk input dan output dari dan ke user
terminal kedua 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).
User dapat membuka dan menutup streaminput dan output yang terkait dengan
jumlah nama file, tapi hanya ada satu streaminput dan satu
stream output pada setiap saat. Perhatikan bahwa tidak ada file bisa terbuka untuk input maupun
output pada waktu yang sama (kecuali user) dan bahwa user input dan output stream
tidak dapat ditutup.

Mengubah Output Current Stream


Stream output dapat diubah menggunakan tell / 1 predikat. Ini membutuhkan
argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya
kirim ( ‘outfile.txt’).
Mengevaluasi sebuah tujuan kirim menyebabkan file bernama untuk menjadi arus output
arus. Jika file belum terbuka, file dengan nama tertentu pertama kali diciptakan
(semua file yang sudah ada dengan nama yang sama akan dihapus).
Perhatikan bahwa file yang sesuai dengan stream output sebelumnya tetap
terbuka ketika arus output baru stream dipilih. Hanya stream output
dapat ditutup (menggunakan predikat kata yang dijelaskan di bawah).
Arus output default stream user, yaitu user terminal. Nilai ini dapat
dikembalikan baik dengan menggunakan kata predikat atau dengan kirim (user).
Built-in predikat tell/ 0 mengambil tanpa argumen. Mengevaluasi sebuah tujuan kepada penyebab
arus output file yang akan ditutup dan arus output stream untuk diatur ulang ke user,
i.e. user.
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 output stream.

Mengubah Input Current Stream


Input stream yang aktif dapat diubah dengan menggunakan see/ 1 predikat. Ini membutuhkan
argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya
see( ‘myfile.txt’).
Mengevaluasi sebuah tujuan see menyebabkan file bernama input yang menjadi stream.
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.
Catatan bahwa file yang sesuai dengan arus input yang sebelumnya tetap
terbuka ketika sebuah arus input yang baru dipilih. Hanya arus input
dapat ditutup. Default input stream user, yaitu user. Nilai ini dapat
dipulihkan baik dengan menggunakan dilihat predikat atau dengan see (user).
Built-in predikat see/ 1 memerlukan satu argumen, yang harus menjadi variabel
dan biasanya akan terikat. Mengevaluasi sebuah tujuan see menyebabkan variabel yang akan
terikat nama input stream.

End Of File



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

End Of Record


Tergantung pada versi Prolog digunakan, mungkin ada ketidakcocokan untuk
karakter input antara membaca akhir sebuah catatan dari terminal user dan dari sebuah file.
Biasanya akhir baris dari input pada terminal user 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.
Readline:-get0 (X), proses (X).
proses (13).
proses (X):-X = \ = 13, memakai (X), nl, Readline.
Perhatikan useran meletakkan daripada menulis dan bahwa tes untuk nilai ASCII 13
menghindari kebutuhan untuk karakter seperti * untuk menunjukkan ‘akhir input’.
? – Readline.
: Prolog test
Pr
ol
og
t
est
ya


 



Selasa, 24 November 2009

INPUT DAN OUTPUT dalam Prolog

Sekarang kita akan belajar bagaimana cara mengkonversi huruf besar menjadi huruf kecil atau yang lainnya.



1. Pertama kita harus membuka notepad terlebih dahulu.
2. Kemudian isikan dalam notepad seperti pada gambar diatas.
    Penjelasan :
    - get0 (X):  untuk mengkonversi karakter ASCII.

    -  (V, X): digunakan untuk memeriksa apakah X adalah antara 63-95. Jika betul, maka akan                 mengkonversi huruf besar huruf kecil dengan menambahkan angka ASCII karakter dengan 32.

    - (13) untuk memasukkan karakter kosong dalam proses.
3. Setelah itu, setelah mengetikan dalam notepad.Simpan dalam bentuk .pl
4. Kemudian buka file yang tadi dalam program prolog.
5. Ketikan readline pada prolog.Kemudian tekan enter.
6. Coba ketikan huruf terserah anda.Jangan lupa titik pada akhirnya.Dan tekan enter.
















Jika ingin menampilkan yang Horizontal caranya sama tetapi memakai nl.

Contoh   :













                                Notepad


                               Hasil Horizontal

Rabu, 11 November 2009

OPERATOR AND ARITHMETIC

Jawaban Exercise 4 no 1














Rule dalam Notepad

1.Pertama-tama kita bikin rulenya dulu dalam notepad.Seperti pada gambar diatas.
2.Kemudian simpan dalam bentuk .pl
3.Setelah itu buka file yang dalam bentuk .pl td.
4.Kemudian ketik contoh(4,7).
5.Kalimat contoh td bs di ganti dengan pred.














Hasil dalam Prolog


Jawaban Exercise 4 no 2














Rule dalam Notepad

1.Pertama-tama kita bikin rulenya terlebih dahulu dalam notepad.
2.Kemudian kita save dalam bentuk .pl
3.Buka file yang dalam bentuk .pl td dalam prolog.
4.Setelah itu ketikan X chases Y.














Hasil dalam Prolog

Rabu, 14 Oktober 2009

"TUTORIAL"

















1. ketik di notepad:
hewan(kucing).
hewan(anjing).
hewan(singa).
makanan(ikan).
makanan(daging).
makanan(ayam).

2. di save

3. lalu masuk prolog,pilih consult,ketik hewan(X),makanan(Y).
tekan enter dan tekan ;
sampai habis.