Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan
Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan

Selasa, 08 Desember 2009

INPUT AND OUTPUT in PROLOG.. (Exercise 6)



Exercise 6

SOAL 1
Define a predicate to output the values of the squares of the integers from N1 to
N2 inclusive and test it with N1 = 6 and N2 = 12.
JAWAB
Deklarasikan dalam bentuk notepad, kemudian simpan dengan format .pl

consult dalam prolog, lalu ketikkan outsquare(7,15). akhiri dengan tanda titik (.) lalu akan keluar hasilnya

SOAL 2
 Define and test a predicate to read in a series of characters input by the user and
output all of those before the first new line or ? character.
JAWAB
Deklarasikan dalam bentuk notepad, kemudian simpan dengan format .pl

consult dalam prolog, lalu ketikkan go. akhiri dengan tanda titik (.) kemudian tulis sesuai keinginan anda lalu akan keluar hasilnya

SOAL 3
Using the  person clauses given in Section 6.3.1, find the professions of all
those over 40.
JAWAB
Deklarasikan dalam bentuk notepad, kemudian simpan dengan format .pl

consult dalam prolog, lalu ketikkan find. akhiri dengan tanda titik (.) lalu akan keluar hasilnya



Senin, 07 Desember 2009

INPUT AND OUTPUT in PROLOG.. (Summary chapter 6)

 SUMMARY CHAPTER 6


Sekarang, kita akan membahas tentang Looping dalam Prolog. Seperti kita ketahui, sebagian besar bahasa pemrograman konvensional memiliki fasilitas yang memungkinkan perulangan satu set instruksi ke b dilaksanakan untuk beberapa kali, atau sampai suatu kondisi terpenuhi. Meskipun, Prolog tidak memiliki fasilitas perulangan, perulangan efek serupa dapat dilakukan dalam beberapa beberapa cara, menggunakan backtracking, rekursi, built-in predikat, atau kombinasi dari itu.  
  • Looping a Fixed Number of Times
Tidak seperti java, yang memiliki fasilitas untuk-loop untuk mengaktifkan satu set instruksi yang akan dieksekusi nomor tetap kali, Prolog tidak tersedia untuk melakukan hal itu (langsung), tapi efek yang sama dapat diperoleh dengan menggunakan rekursi, seperti:
testloop(0).
testloop(N) :- N>0, write(‘Number : ‘), write(N), nl, M is N-1, testloop(M)
Testloop predikat yang didefinisikan sebagai 'loop dari N, tulis nilai N, kemudian kurangi satu untuk diberikan kepada M, kemudian loop dari M'. "Dan oleh klausa pertama, didefinisikan sebagai 'jika argumen adalah nol, melakukan apa-apa (stop!)'.
uji program:

?- testloop(3).
Number : 3
Number :2
Number :1
yes

  • Looping until a Condition is Satisfied
Contoh di bawah ini menunjukkan penggunaan istilah rekursi untuk membaca dimasukkan oleh pengguna dari keyboard dan output mereka ke layar, sampai akhir adalah sebuah kata yang dihadapi, dengan menggunakan ‘disjunctive goal’(word=end).
test :- write(‘Type the word : ‘), read(word), write(‘Input was ‘), write(word), nl, (word=end; test).
?- test.
Type the word : Hello.
Input was Hello
Type the word : ITS.
Input was ITS
Type the word : end.
Input was end.
yes
 
  • Backtracking with failure
 Seperti namanya, predikat gagal, selalu gagal, apakah pada 'standar' evaluasi kiri ke kanan atau pada kemunduran. Dengan menggabungkan dengan otomatis Prolog backtracking, untuk mencari database untuk menemukan semua klausa dengan properti khusus, kita dapat memiliki perulangan otomatis.

Contoh program di bawah ini dirancang untuk mencari database yang berisi klausul yang mewakili nama, umur, tempat tinggal, dan pekerjaan dari sejumlah orang.

Database berisi nilai-nilai ini:

person(john,smith,45,london,doctor).
person(martin,williams,33,birmingham,teacher).
person(henry,smith,26,manchester,plumber).
person(jane,wilson,62,london,teacher).
person(mary,smith,29,glasgow,surveyor).

predikat Somepeople di bawah ini adalah untuk pencarian orang dalam database yang merupakan nama keluarga smith
somepeople :- person(Forename, Surname, _, _, _), Surname =smith, write(Forename), write(‘ ‘), write(Surname), nl, fail.
somepeople.
Yang gagal dalam predikat somepeople digunakan sebagai kemunduran, yang menemukan semua database dalam program.

Output program ini adalah:

?- somepeople.
john smith
henry smith
mary smith
yes

Rabu, 25 November 2009

INPUT AND OUTPUT in PROLOG..

SOAL 1

Define a predicate makelower/0 which reads in a line of characters from the
keyboard and outputs it again as a single line with any upper case letters converted
to lower case. (The ASCII values of the characters a, z, A and Z are 97, 122, 65 and
90, respectively.)
Thus the following would be a typical use of makelower:
?- makelower.
: This is an Example 123 inCLUDing numbers and symbols +-*/@[] XYz
this is an example 123 including numbers and symbols +-*/@[] xyz
yes

JAWAB
1. deklarasikan dan simpan dengan format .pl



2. lalu buka file tadi


3. lalu ketikkan kata makelower. (akhiri dengan tanda titik), setelah itu tuliskan kata-kata terserah anda, huruf besar kecil juga boleh

hasilnya adalah, semua huruf besar yang ditulis menjadi kecil

SOAL 2
Define a predicate  copyterms which reads all the terms in a text file and
outputs them as terms to another text file one by one on separate lines.
The output file should be in a format suitable for use as the input file in a
subsequent call of copyterms. Thus for example if the input file contained
'first term'. 'second term'.
'third term'.
fourth. 'fifth term'.
sixth.
The output file would contain
'first term'.
'second term'.
'third term'.
fourth.
'fifth term'.
sixth.


JAWAB
1. deklarasikan dan simpan dengan format pl

2. buat file baru bernama Infile.txt, isinya seperti berikut

3. Lalu buka file berformat .pl tadi


4. Setelah itu ketikkan copyterms('Infile.txt','Outfile.txt').


5. hasilnya akan keluar di file baru bernama Outfile.txt, yang berisi seperti ini



SOAL 3
Create a text file testa.txt containing two lines, each of five characters followed
by a new line, e.g.
abcde
fghij
Define a predicate readfile that will read  fifteen characters from this file one by
one and output the ASCII value of each character. Use this to establish whether the   Input and Output  83
representations of 'end of file' and 'end of record' for your version of Prolog are as
suggested in Sections 5.9.1 and 5.9.2, respectively.

JAWAB
1. deklarasikan lalu simpan dengan fromat .pl

2. lalu buat file testa.txt yang berisi seperti di bawah


3. setelah itu buka file berformat .pl tadi


4. Setelah itu ketikkan readfile('testa.txt'). hasilnya adalah seperti ini





SOAL 4
 Using a text editor, create two text files in1.txt and in2.txt, each comprising a
number of terms terminated by end.
Define and test a predicate combine that takes the names of two input files as its
first two arguments and the name of an output file as its third argument. The output
file should contain the terms in the first input file followed by the terms in the
second, one per line and terminated by end.
JAWAB
1. deklarasikan dan simpan dengan format .pl


2. Buat s file lagi, yang satu bernama In1.txt dan yang kedua bernama In2.txt. Isinya lihat di bawah ini (bisa berubah-ubah)


3. lalu buka file yang berformat .pl tadi


4. Setelah itu tuliskan combine('In1.txt','In2.txt','Out.txt').


5. Hasilnya akan muncul file baru bernama Out.txt dan isinya adalah gabungan antara In1 dan In2 seperti ini






SOAL 5
Define and test a predicate compare that reads in two text files term by term
and for each pair of corresponding terms outputs a message either saying that they
are the same or that they are different. Assume that both files contain the same
number of terms and that the final term in each is end.
JAWAB
1. deklarasikan dan simpan dalam format .pl

2. Lalu buat file bernama Satu.txt dan Dua.txt, isinya seperti di bawah ini





 5. setelah itu buka file berformat .pl tadi, dan ketikkan compare('Satu.txt','Dua.txt'). maka hasilnya akan seperti berikut



Selasa, 24 November 2009

SUMMARY FOR CHAPTER 5

Input dan Output

built-in predikat yang membaca dari dan menulis baik untuk pengguna
terminal (keyboard dan layar) atau file, kedua istilah tersebut dengan istilah dan characterby -
karakter dalam program Anda sendiri. nilai ASCII untuk memanipulasi string karakter. Menggunakan istilah lebih sederhana dan akan dijelaskan terlebih dahulu. Awalnya, maka akan diasumsikan bahwa
semua output ke layar pengguna dan semua input adalah dari pengguna keyboard. Masukan dan keluaran menggunakan file eksternal.

Syarat keluaran
predikat mengambil satu argumen, yang harus yang valid Prolog istilah. Mengevaluasi menyebabkan predikat istilah yang akan ditulis ke arus keluaran
sungai, yang secara default adalah layar pengguna. (Yang dimaksud dengan arus keluaran Dengan Logika Pemrograman Prolog
streaming)

Contoh
? - Menulis (26), nl.
26
ya
? - Menulis ( 'string karakter'), nl.
string karakter
ya
? - Menulis ([a, b, c, d, [x, y, z]]), nl.
[a, b, c, d, [x, y, z]]
ya
? - Tulis (mypred (a, b, c)), nl.
mypred (a, b, c)
ya
? - Write ( 'Contoh penggunaan nl'), nl, nl, write ( 'akhir contoh'), nl.
Contoh penggunaan nl
contoh akhir
ya


Syarat memasukkan
Built-in predikat membaca disediakan untuk memasukkan 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'

Input dan Output Menggunakan Karakter
Meskipun input dan output dari syarat-syarat sangat mudah, penggunaan tanda kutip dan penuh berhenti 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. Sebuah pendekatan yang lebih baik untuk masalah semacam 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 ruang dan tab) memiliki sesuai ASCII (American Standard Kode untuk Informasi Interchange) nilai, yang merupakan integer 0-255. Nilai ASCII karakter yang kurang dari atau sama dengan 32 yang dikenal sebagai putih ruang karakter.

Keluaran karakter
Karakter adalah output dengan menggunakan built-in predikat meletakkan 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
? - Meletakkan (97), nl.
sebuah
ya
? - Meletakkan (122), nl.
z
ya
? - Meletakkan (64), nl.
@
ya

Output ke sebuah File
Meskipun definisi di atas kirim menyatakan bahwa 'semua file yang sudah ada dengan yang sama Namanya dihapus ', ada kemungkinan lain, yang penting bagi beberapa aplikasi, yaitu bahwa file tersebut tidak dihapus dan setiap output ditempatkan setelah akhir isi yang ada file. Baik 'menimpa' dan 'append' pilihan
kemungkinan besar akan tersedia dalam pelaksanaan praktis Prolog tetapi mungkin melibatkan menggunakan predikat yang berbeda (misalnya terbuka) sebagai pengganti atau serta kirim.

Input: Mengubah Input Current Stream
Input stream yang aktif dapat diubah dengan menggunakan melihat / 1 predikat. Ini membutuhkan argumen tunggal, 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.

Jumat, 13 November 2009

OPERATOR AND ARITMETHIC in Prolog

SOAL 1
 (1) This program is based on Animals Program 3, given in Chapter 2.
dog(fido). large(fido).
cat(mary). large(mary).
dog(rover). small(rover).
cat(jane). small(jane).
dog(tom). small(tom).
cat(harry).
dog(fred). large(fred).
cat(henry). large(henry).
cat(bill).
cat(steve). large(steve).
large(jim).
large(mike).
large_dog(X):- dog(X),large(X).
small_animal(A):- dog(A),small(A).
small_animal(B):- cat(B),small(B).
chases(X,Y):-
      large_dog(X),small_animal(Y),
      write(X),write(' chases '),write(Y),nl.
Convert the seven predicates used to operator form and test your revised program.
The output should be the same as the output from the program above. Include
directives to define the operators in your program.

 
Langkah-Langkah

1. kita diperintah untuk mengonvert predikat menggunakan operator form seperti yang ada pada contoh. Dan hasilnya harus sama dengan program yang ada pada contoh.
Jadi yang kita menuliskan soal pada notepad dengan format .pl
Yang awalnya seperti ini:


 
2. Setelah itu kita mengubah notepad pada program yang pertama dengan suatu rule yang baru



3. Setelah itu buka file yang telah disimpan dalam format .pl tadi
 


4. Setelah itu ketikkan chases(X,Y). untuk melihat hasilnya. Dan tekan ; (titik koma) sampai keluar kata NO


5. Hasilnya pun sama dengan kita memakai rule yang ada di soal dengan rule yang telah kita buat sendiri
 



SOAL 2

(2) Define and test a predicate which takes two arguments, both numbers, and
calculates and outputs the following values: (a) their average, (b) the square root of
their product and (c) the larger of (a) and (b).


Langkah-Langkah
1. Melakukan hitungan rata-rata dari 2 buah bilangan.
Misal: X=45
Y=53
Maka kita mencari Z dengan rumus rata-rata yaitu (X+Y)/2



 
2. Menghitung akar dari hasil rata-rata tersebut. Maka kita mencari I dengan sqrt(Z).


3. Menentukan hasil yang paling besar dari 2 perhitungan sebelumnya. Maka kita mencari J dengan max(Z,I).
 
 


 

OPERATOR AND ARITHMETIC

SUMMARY FOR CHAPTER 4
Operator dan Arithmetic

Operator
notasi yang digunakan untuk predikat adalah salah satu dari standar
functor diikuti oleh sejumlah argumen dalam kurung, misalnya suka (john, mary).
Sebagai alternatif, apapun predikat yang ditetapkan pengguna dengan dua argumen (binary predikat) dapat dikonversi ke operator infiks. Hal ini memungkinkan functor
(predikat nama) yang akan ditulis di antara dua argumen tanpa tanda kurung, misalnya
john suka mary. Setiap predikat yang ditetapkan pengguna dengan satu argumen (a unary predikat)dapat diubah menjadi prefiks operator. Hal ini memungkinkan untuk functor ditulis sebelum argumen tanpa tanda kurung. Notasi operator juga dapat digunakan dengan mudah dibaca aturan untuk bantuan. Setiap predikat yang ditetapkan pengguna dengan satu atau dua argumen dapat dikonversi ke operator dengan memasukkan tujuan menggunakan op predikat pada sistem prompt.

relasional operator untuk membandingkan nilai numerik, termasuk
daripada 'dan> menunjukkan' lebih besar dari '.
Jadi istilah berikut adalah valid, yang dapat dimasukkan ke dalam tubuh seorang
aturan:

X> 4
Y
A = B

Notasi tanda kurung juga dapat digunakan dengan built-in predikat yang didefinisikan sebagai
operator, e.g. > (X, 4) bukan X> 4.


Arithmetic
Meskipun contoh-contoh yang digunakan dalam bab-bab sebelumnya buku ini adalah non-numerik(hewan yang mamalia dll), Prolog juga menyediakan fasilitas untuk melakukan aritmatika menggunakan notasi yang serupa dengan yang sudah akrab bagi banyak pengguna dari aljabar dasar. Hal ini dicapai dengan menggunakan built-in predikat adalah / 2, yang telah ditetapkan sebagai infiks operator dan dengan demikian ditulis antara dua argumen. Cara yang paling umum adalah menggunakan / 2 adalah dimana argumen pertama adalah terikat variabel. Mengevaluasi tujuan X -6,5 akan menyebabkan X untuk terikat dengan jumlah -6,5 dan tujuan untuk sukses.

Argumen kedua dapat berupa nomor atau ekspresi aritmatika misalnya
X adalah 6 * Y + Z-3.2 + P-Q / 4 (* menandakan perkalian).
Setiap variabel yang muncul dalam sebuah ekspresi aritmatika sudah harus terikat(sebagai mengevaluasi hasil dari tujuan sebelumnya) dan nilai-nilai mereka harus numerik. Disediakan Dengan 60 Logika Pemrograman Prolog
mereka, tujuan akan selalu berhasil dan variabel yang membentuk pertama
argumen akan terikat dengan nilai ekspresi aritmetik. Jika tidak, kesalahan
pesan akan muncul.

? - X 10,5 4,7 * 2.
X = 19,9
? - Y adalah 10, Z adalah Y 1.
Y = 10,
Z = 11

Simbol seperti + - * / dalam ekspresi aritmatika adalah jenis khusus infiks
operator yang dikenal sebagai operator aritmetika. Tidak seperti operator digunakan di tempat lain di Prolog mereka tidak predikat tetapi fungsi yang mengembalikan nilai numerik. Seperti halnya angka-angka, variabel dan operator, ekspresi aritmatika dapat mencakup fungsi aritmatika, ditulis dengan argumen mereka dalam tanda kurung (yaitu bukan sebagai operator). Seperti operator aritmetika ini kembali nilai-nilai numerik, misalnya menemukan akar kuadrat dari 36:

? - X adalah sqrt (36).
X = 6

Operator aritmetik - dapat digunakan tidak hanya sebagai operator infiks biner
menunjukkan perbedaan dua nilai numerik, misalnya X-6, tetapi juga sebagai awalan unary operator untuk menunjukkan negatif dari sebuah nilai numerik, misalnya

? - X adalah 10, Y-X-2.
X = 10,
Y = -12

Tabel di bawah menunjukkan beberapa operator dan aritmatika aritmetika
fungsi yang tersedia dalam Prolog.
X + Y jumlah X dan Y
X-Y perbedaan dari X dan Y
X * Y produk X dan Y
X / Y hasil bagi X dan Y
X / / Y 'integer hasil bagi' dari X dan Y (hasilnya adalah dipotong ke
terdekat integer antara itu dan nol)
X ^ Y X ke Y kekuatan
-X negatif X
abs (X) nilai absolut X
sin (X) sinus X (untuk X diukur dalam derajat)
cos (X) kosinus X (untuk X diukur dalam derajat)
max (X, Y) yang lebih besar dari X dan Y
sqrt (X) akar kuadrat X
Operator dan Artithmetic 61

Contoh
? - X adalah 30, Y adalah 5, Z adalah X + Y + X * Y + sin (x).
X = 30,
Y = 5,
Z = 185,5

Meskipun merupakan predikat biasanya digunakan dalam cara yang dijelaskan di sini, pertama argumen juga bisa menjadi nomor atau sebuah variabel terikat dengan nilai numerik. Dalam kasus, nilai numerik dari dua argumen dihitung. Tujuan berhasil
jika ini adalah sama. Jika tidak, itu gagal.

? - X 7, X adalah 6 +1.
X = 7
? - 10 adalah 7 13-11 9.
tidak
? - 18 adalah 7 13-11 9.
ya

Unifikasi
Deskripsi sebelumnya dapat disederhanakan dengan mengatakan bahwa argumen kedua dari
yang adalah / 2 operator dievaluasi dan nilai ini kemudian disatukan dengan argumen pertama. Hal ini menggambarkan fleksibilitas konsep penyatuan.

(a) Jika argumen pertama adalah variabel terikat, ia terikat dengan nilai yang
Argumen kedua (sebagai efek samping) dan tujuan adalah berhasil.

(b) Jika argumen pertama adalah angka, atau variabel terikat dengan nilai numerik, itu dibandingkan dengan nilai argumen kedua. Jika mereka adalah sama, adalah tujuan
berhasil, selain itu gagal. Jika argumen pertama adalah atom, istilah majemuk, daftar, atau variabel terikat satu ini (tidak ada yang seharusnya terjadi), hasilnya adalah tergantung pada implementasi. Kemungkinan besar akan terjadi kesalahan. Perhatikan bahwa tujuan seperti X adalah X 1 akan selalu gagal, apakah X tidak terikat.

? - X adalah 10, X adalah X +1.
tidak
Untuk meningkatkan nilai oleh satu memerlukan pendekatan yang berbeda.
62 Logika Pemrograman Dengan Prolog
/ * Versi salah * /
meningkatkan (N):-N adalah N +1.
? - Meningkatkan (4).
tidak
/ * Benar versi * /
meningkatkan (N, M):-M adalah N +1.
? - Meningkat (4, X).
X = 5

Operator Precedence di Arithmetic Expressions
Bila ada lebih dari satu operator di sebuah ekspresi aritmatika, misalnya A + B * C-D, Prolog kebutuhan sarana menentukan urutan operator akan diterapkan.
Untuk operator dasar seperti + - * dan / itu sangat diinginkan bahwa ini adalah
adat 'matematika' order, yaitu ekspresi A + B * CD harus ditafsirkan
sebagai 'menghitung produk B dan C, tambahkan ke A dan kemudian kurangi D', bukan sebagai 'menambahkan A dan B, kemudian kalikan dengan C dan kurangi D '. Prolog mencapai hal ini dengan memberikan masing-masing operator numerik nilai didahulukan. Operator didahulukan relatif tinggi seperti * dan / diterapkan sebelum mereka yang didahulukan lebih rendah seperti + dan -. Operator dengan prioritas yang sama (misalnya + dan -, * dan /) diterapkan dari kiri ke kanan. Efeknya adalah untuk memberikan ekspresi seperti A + B * CD makna bahwa pengguna yang akrab dengan aljabar akan mengharapkan untuk memiliki, yaitu A + (B * C)-D. Jika urutan yang berbeda diperlukan evaluasi ini dapat dicapai dengan menggunakan kurung, e.g. X adalah (A + B) * (C-D). Ungkapan tanda kurung selalu dievaluasi terlebih dahulu.

Relational Operator
The infiks operator =: = = \ =>> = <=
relasional operator. Mereka digunakan untuk membandingkan nilai dari dua aritmatika
ekspresi. Tujuan berhasil jika nilai ekspresi pertama adalah sama dengan, tidak
sama dengan, lebih besar dari, lebih besar dari atau sama dengan, kurang dari atau kurang dari atau sama dengan
nilai dari ekspresi kedua, masing-masing. Kedua argumen harus angka,
terikat variabel atau ekspresi aritmetika (di mana setiap variabel terikat untuk
nilai numerik).

? - 88 15-3 =: = 110-5 * 2.
ya
? - 100 = \ = 99.
ya
Operator dan Artithmetic 63
Kesetaraan 4,3 Operator

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

Aritmatika Expression Kesetaraan =: =
E1 =: = E2 berhasil jika ekspresi aritmetika mengevaluasi E1 dan E2 yang sama
nilai

? - 6 +4 =: = 6 * 3-8.
ya
? - Sqrt (36) +4 =: = 5 * 11-45.
ya

Untuk memeriksa apakah suatu bilangan bulat ganjil atau bahkan kita dapat menggunakan checkeven / 1 predikat
didefinisikan di bawah ini.

checkeven (N):-M adalah N / / 2, N =: = 2 * M.
? - Checkeven (12).
ya
? - Checkeven (23).
tidak
? - Checkeven (-11).
tidak
? - Checkeven (-30).
ya

Integer hasil bagi para operator / / membagi argumen pertama dengan kedua dan
memotong hasilnya ke integer terdekat antara itu dan nol. Jadi 12 / / 2 adalah 6, 23 / / 2 adalah 11, -11 / / 2 adalah -5 dan -30 / / 2 adalah -15. Membagi sebuah integer dengan 2 menggunakan / / dan mengalikan itu dengan 2 lagi akan memberikan bilangan asli jika bahkan, tetapi tidak sebaliknya. Ekspresi aritmatika Ketidaksetaraan = \ = E1 = \ = E2 berhasil jika ekspresi aritmetika E1 dan E2 tidak mengevaluasi ke nilai sama

? - 10 = \ = 8 3.
ya

Logika Pemrograman Dengan Prolog
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 mengevaluasi tujuan.

? - Suka (X, Prolog) == suka (X, Prolog).
X = _
? - Suka (X, Prolog) == suka (Y, Prolog).
tidak
(X dan Y adalah variabel yang berbeda)
? - X adalah 10, pred1 (X) == pred1 (10).
X = 10
? - X == 0.
tidak
? - 6 4 == 3 +7.
tidak

Nilai sebuah ekspresi aritmatika hanya dievaluasi jika digunakan dengan adalah / 2
operator. Berikut 6 +4 hanyalah sebuah istilah dengan functor + dan argumen 6 dan 4. Ini sama sekali berbeda dari istilah 3 +7. Persyaratan Tidak Identik \ ==
Term1 \ == Term2 tes apakah Term1 tidak identik dengan Term2. Tujuan berhasil
jika Term1 == Term2 gagal. Selain itu gagal.

? - Pred1 (X) \ == pred1 (Y).
X = _,
Y = _

(Output menandakan bahwa baik X dan Y adalah terikat dan variabel yang berbeda.)
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 persyaratan identik. Jika tujuan berhasil, seperti terjadi sebenarnya mengikat.


Logical Operator
Bagian ini memberikan gambaran singkat dari dua operator yang mengambil argumen yang
panggilan istilah, yaitu istilah yang dapat dianggap sebagai tujuan.
Operator yang tidak Operator awalan bukan / 1 dapat ditempatkan sebelum tujuan untuk memberikan yang pengingkaran. Itu tujuan menegasikan berhasil jika tujuan asli gagal dan gagal jika tujuan asli berhasil. Contoh berikut menggambarkan penggunaan tidak / 1. Diasumsikan bahwa database berisi satu klausul

anjing (fido).
? - Tidak anjing (fido).
tidak
? - Anjing (fred).
tidak
? - Tidak anjing (fred).
ya
? - X = 0, X adalah 0.
X = 0
? - X = 0, bukan X adalah 0.
tidak

The pemisahan Operator
The pemisahan operator; / 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 Tujuan1 atau Tujuan2 berhasil.
? - 6 <3; 7 adalah 5 +2.
ya
Operator dan Artithmetic 67
? - 6 * 6 =: = 36; 10 = 8 3.
ya

Kamis, 29 Oktober 2009

Fact, Rules, Predicate, and Variable in Prolog.

EXERCISE 2
SOAL 1

1. Tuliskan Soal EXERCISE 2 pada notepad. dan pada akhir bagian beri suatu rule. Hewan(A):-animal(A,B,jenishewan,D). simpan dengan format .pl


2.  Lalu buka file yang sudah disimpan tadi





3. Soal 1. menampilkan semua hewan yang mamalia. Caranya ketik animal(mammal,NamaHewan,_,_).
akhiri dengan tanda titik (.) lalu setelah keluar jawabannya, tekan titik koma (;) sampai keluar kata NO




4. Soal 2. menampikan semua mamalia yang karnivora, caranya ketik animal(mammal,NamaHewan,carnivore,_). Lalu setelah keluar jawabannya tekan titik koma (;)


5. Soal 3. menampilkan semua mamalia yang coraknya bergaris. caranya ketik animal(mammal,NamaHewan,_,stripes). jangan lupa tanda titik dan titik koma sesudah keluar jawabannya



 6. Soal 4. menampilkan semua reptil yang mempunyai tengkuk (mane). caranya ketik animal(reptile,NamaHewan,_,mane).






  SOAL 2

1. tuliskan soal pada notepad beri rule pada akhir bagian yaitu couple(A,B):-person(A,male)person(B,female). lalu simpan dengan format .pl


 
2. Lalu buka file yang disimpan tadi



3. Pada soal disuruh menampilkan kemungkinan pasangan yang terjadi. caranya ketik couple(A,B).
akhiri dengn tanda titik (.) dan apabila sudah keluar jawabannya tekan tanda titik koma (;) sampai muncul NO

 

Kamis, 15 Oktober 2009

How to list all possible combination (consisting two elements) of a set in PROLOG


  • Himpunan (set) adalah kumpulan obyek-obyek tidak urut (unordered). Biasanya himpunan dinotasikan dengan huruf besar seperti A, B, C,….

  • Obyek dalam himpunan disebut elemen atau anggota (member). Biasanya dinotasikan dengan huruf kecil seperti a, b, c,…

  • Himpunan yang tidak berisi obyek disebut himpunan kosong (empty set).


The Cartesian Product:
Contoh :
A = { meja, kursi }
B= { doni, tata }
Maka A X B = { (meja, doni), (meja, tata), (kursi, doni), (kursi,tata) }


Apabila kita ingin menulisnya dalam program prolog, anda bias mengikuti langkah-langkah yang ada di bawah ini :

1. Tuliskan anggota himpunan pada notepad, kemudian simpan dengan format .pl




2. Setelah di simpan dengan format .pl, langsung buka file tersebut. Hal ini membuat himpunan yag telah kita buat tadi di compile di dalam prolog




3.  Pada program prolog,ketik benda(X),pegawai(Y). Dan jangan lupa beri titik pada akhir kalimat. Kemudian tekan enter.




4. Maka akan keluar peluang yang muncul pertama. Lalu tekan titik koma ( ; ) sampai kemungkinan yang terakhir dan muncul tulisan NO




5. Dapat mencoba kemungkinan lain, semisal pegawai(X), benda(Y). Ingat untuk selalu mengakhiri dengan tanda titik(.)