Rabu, 25 November 2009

TUTORIAL 4 - Practical Exercise 5

Practical Exercise 5 [INPUT AND OUTPUT in Prolog]
Soal 1
Mengubah huruf besar pada inputan menjadi huruf kecil

Keterangan:
  • get berfungsi untuk mengambil kode ASCII pada inputan karakter yang kita berikan
  • process(13) berfunsi untuk mengikutkan white space ke dalam proses
  • jika karakter yang diinputkan >=65 dan <=90 maka kode karakter ASCII tersebut akan ditambah 32,jika tidak, tidak ditambah/ditambah 0. Misalkan inputnya adalah 'A',berarti kode ASCII-nya adalah 65, berarti 65 harus ditambah 32 supaya menjadi 97 ('a').
  • put berfungsi untuk mengubah kode yang sudah dikonversi tadi menjadi karakter ASCII
Tampilan di Prolog:


Soal 2
Mengatur letak

Langkah:

1.inputkan data sebagai berikut, kemudian save dengan dormat .txt.
2.Kemudian berikan rules untuk mengaturnya letaknya.
3.Kemudian buat 1 lagi notepad kosong untuk menyimpan hasil yang telah ditata oleh rules yang telah dibuat, save notepad tersebut.
4.Setelah itu jalankan prolog seperti berikut.
5.Kemudian lihat notepad yang kosong tadi. Notepad sudah tertata sesuai rules yang diberikan.
Soal 3
Membaca setiap karakter ke dalam bilangan ASCII

Langkah:
1.lakukan penyimpanan data seperti yang ada di soal (abcde \n fghij)
simpan dalam nama testa.txt

2.buat lagi text yang berisi rule yang kita gunakan yang, kemudian di simpan dalam format .pl

3. jalankan program prolog kemudian consult. program rule tersebut.
4. tuliskan printah untuk membaca file bernama testa.txt seperti berikut

Soal 4
Mengkombinasikan text antar file
Sejauh ini kami belum menemukan hasil yang sesuai karena program tidak dapat dicompile

Langkah:
1.membuat dua file dalam notepad seperti berikut

2.kita akan menggabungkan isi karakter dari kedua file yang telah kita buat tadi dengan rules seperti berikut:

3.file Out.txt seharusnya seperti ini keluarannya


Soal 5
Membedakan isi karakter dari file satu dengan file lainnya
Sejauh ini kami belum menemukan hasil yang sesuai karena program tidak dapat dicompile


Langkah:
1.Membuat 2 file notepad seperti berikut:

2.Membuat rules untuk membedakan karakter file 1 dengan file ke 2

3.Output seharusnya seperti ini

Selasa, 24 November 2009

TUTORIAL 4 - Summary Chapter 5

Input and Output in ProLog

Outputting Terms
The write/1 predicate takes a single argument, which must be a valid Prolog term. Evaluating the predicate causes the term to be written to the current output stream, which by default is the user's screen. Evaluating a nl goal causes a new line to be output to the current output stream.

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

Note that atoms that have to be quoted on input (e.g. 'Paul', 'hello world') are not quoted when output using write. If it is important to output the quotes, the writeq/1 predicate can be used. It is identical to write/1 except that atoms that need quotes for input are output between quotes (other atoms are not).

?- writeq('a string of characters'),nl.
'a string of characters'
yes
?-writeq(dog),nl.
dog
yes
?- writeq('dog'),nl.
dog
yes

Inputting Terms
The built-in predicate read/1 is provided to input terms. It takes a single argument, which must be a variable. Evaluating it causes the next term to be read from the current input stream, which by default is the user's keyboard. In the input stream, the term must be followed by a dot ('.') and at least one
white space character, such as space or newline. The dot and white space characters are read in but are not considered part of the term. Note that for input from the keyboard (only) a prompt character such as a colon will usually be displayed to indicate that user input is required. It may be necessary
to press the 'return' key before Prolog will accept the input. Both of these do not apply to input from files.
When a read goal is evaluated, the input term is unified with the argument variable. If the variable is unbound (which is usually the case) it is bound to the input value.

?- 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).
: 'a string of characters'.
Y = 'a string of characters'

If the argument variable is already bound (which for most users is far more likely to occur by mistake than by design), the goal succeeds if and only if the input term is identical to the previously bound value.

?- X=fred,read(X).
: jim.
no
?- X=fred,read(X).
: fred.
X = fred

Input and Output Using Characters
Although input and output of terms is straightforward, the use of quotes and full stops can be cumbersome and is not always suitable. For example, it would be tedious to define a predicate (using read) which would read a series of characters from the keyboard and count the number of vowels. A much better approach for problems of this kind is to input a character at a time. To do this it is first necessary to know about the ASCII value of a character.
All printing characters and many non-printing characters (such as space and tab) have a corresponding ASCII (American Standard Code for Information Interchange) value, which is an integer from 0 to 255.

Outputting Characters
Characters are output using the built-in predicate put/1. The predicate takes a single argument, which must be a number from 0 to 255 or an expression that evaluates to an integer in that range.
Evaluating a put goal causes a single character to be output to the current output stream. This is the character corresponding to the numerical value (ASCII value) of its argument, for example

?- put(97),nl.
a
yes
?- put(122),nl.
z
yes
?- put(64),nl.
@
yes

Inputting Characters
Two built-in predicates are provided to input a single character: get0/1 and get/1.
The get0 predicate takes a single argument, which must be a variable. Evaluating a
get0 goal causes a character to be read from the current input stream. The variable
is then unified with the ASCII value of this character.
Note that for input from the keyboard (only) a prompt character such as a colon
will usually be displayed to indicate that user input is required. It may be necessary
to press the 'return' key before Prolog will accept the input. Both of these also
apply to the get predicate described below but do not apply to input from files.
Assuming the argument variable is unbound (which will usually be the case), it
is bound to the ASCII value of the input character.

?- get0(N).
: a
N = 97
?- get0(N).
: Z
N = 90
74 Logic Programming With Prolog
?- get0(M)
: )
M = 41

If the argument variable is already bound, the goal succeeds if and only if it has a numerical value that is equal to the ASCII value of the input character.

?- get0(X).
: a
X = 97
?- M is 41,get0(M).
: )
M = 41
?- M=dog,get0(M).
: )
no
?- M=41.001,get0(M).
: )
no

The get predicate takes a single argument, which must be a variable. Evaluating
a get goal causes the next non-white-space character (i.e. character with an ASCII
value less than or equal to 32) to be read from the current input stream. The
variable is then unified with the ASCII value of this character in the same way as
for get0.

?- get(X).
: Z
X = 90
?- get(M).
: Z
M = 90

Penerapan Expert System

Integrasi Penggunaan GPS untuk Pemilihan Jalur Angkutan Umum oleh Expert System


Normal 0 false false false IN X-NONE X-NONE

Pendahuluan

Angkutan umum (angkot) merupakan salah satu sarana transportasi yang sangat digemari oleh kebanyakan masyarakat. Namun, karena jenis dan jumlah angkot yang banyak dan bervariasi jalurnya, kita kadang sering bingung untuk memilih angkot mana yang akan kita tumpangi untuk tujuan tertentu. Apa lagi jika untuk orang yang baru berada di sebuah kota tertentu yang ingin bepergian ke suatu tempat tetapi tidak tahu mesti naik angkot apa, sehingga kadang menyebabkan kebingungan akan salah arah. Untuk itu, kami memikirkan sebuah terobosan untuk mempermudah dalam mencari dan memilih sebuah angkot mana yang sesuai dengan jalur yang ingin kita jangkau.

Sistem kerja secara umum:

· Pertama kita gunakan sejenis peta atau GPS untuk mendeteksi daerah yang ingin kita tuju. Dengan peta atau GPS tersebut mempermudah mengetahui letak dan jalur daerah yang ingin kita tuju

· Setelah daerah tujuan kita temukan lalu kita pilih daerah tujuan tersebut dan akan muncul alternatif angkot yang akan membawa kita menuju tempat atau daerah tersebut

· Ketika ada dua pilihan altenatif angkot, maka akan di sediakan sebuah jalur angkot tersendiri sehingga kita dapat mengetahui angkot mana yang menempuh jalur terdekat

· Setelah itu kita pilih angkot yang sesuai dengan menekan sebuah tombol yang telah terhubung dengan masing-masing server pangkalan angkot, lalu dari pangkalan angkot tersebut akan memberitahukan keberadaan calon penumpang kepada para sopir angkot.

Keuntungan :

Dengan adanya sistem seperti ini akan memiliki beberapa keuntungan baik bagi para calon penumpangnya maupun juga bagi para sopir angkot tersebut.

Bagi calon penumpang :

- Mempermudah menentukan angkot yang menuju daerah yang ingin dituju, sehingga tidak akan terjadi salah jalur/tujuan

- Dapat lebih mengefisiensikan waktu

- Memberikan kenyamanan dalam bepergian

Bagi para sopir angkot :

- Mempermudah mencari penumpang

- Dapat meminimalisir pengeluaran bahan bakar

Kamis, 12 November 2009

TUTORIAL 3

Operators and Arithmetic


Di kesempatan kali ini saya akan memberikan tutorial mengenai operators dan arithmetic in prolog. Pada kesempatan ini akan di bahas terlebih dahulu tentang hal-hal yang di anggap perlu untuk mempermudahkan pemahaman kita tentang pembahasan soal nantinya.

Operator terdapat berebagai macam jenis

Ada operator sisipan contoh predikat : john likes mary.

Ada operator awalan contoh predikat : isa_dog fred.

Ada operator akhiran contoh predikat : fred isa_dog.

Ini jelas berbeda dari predikat yang sering digunakan yaitu : likes(john,mary).

Terdapat keistimewaan dalam operator yaitu pengunaan op predikat contohnya : ?-op(150,xfy,likes).

xfy menunjukan bahwa predikat merupakan operator sisipan,

xf menunjukan bahwa predikat merupakan operator awalan,

fy menunjukan bahwa predikat merupakan operator akhiran,

(akan lebih jelas jika nanti dilihat di soal).

Dalam prolog juga terdapat angka-angka yaitu didalam aritmatika tetapi di sini aritmatika yang terdapat di dalam prolog tidak dapat berdiri sendiri jadi harus terdapat keterangan(predikat lain yang mendukung).

Sebagai contoh : ?-X is 6*Y+Z-3.2+P-Q/4.

(prolog tidak dapat menjalankan ini karena prolog tidak mengetahui berapa itu Y,Z,P,dan Q)



tetapi jika kita mengunakan ini :

?- X is 10.5+4.7*2.

X = 19.9 (maka prolog bisa menjalankannya)

Berikut adalah table operator dalam aritmatika

X+Y penjumlahan X and Y

X-Y pengurangan X and Y

X*Y perkalian X and Y

X/Y pembagian X and Y

X^Y X pangkat Y

abs(X) nilai absolute X

sin(X) sinus X

cos(X) cosines X

max(X,Y) nilai terbesar dari X dan Y

sqrt(X) akar dari X

Selain dari itu didalam prolog juga terdapat operasi relasi yaitu :

=:= , =\= , > , >= , < , =< .

Contoh operasi relasi :

?- 88+15-3=:=110-5*2.

Yes

?- 100=\=99.

yes

jenis -jenis samadengan di dalam prolog yaitu :


1. Arithmetic Expression Equality =:=

Contoh :

?- 6+4=:=6*3-8.

Yes

2. Arithmetic Expression Inequality =\=

Contoh :

?- 10=\=8+3.

yes

3. Terms Identical ==

Contoh :

?- X is 10,pred1(X)==pred1(10).

X = 10

4. Terms Identical With Unification =

Contoh :

?- 6+X=6+3.

X = 3

5. Non-Unification Between Two Terms \=

Contoh :

?- 6+4\=3+7.

Yes



Logika Operator

1. The not Operator

Contoh : dog(fido).

?- not dog(fido).

no

2. The Disjunction Operator

Contoh :

?- 6<3;7>

yes

Ini soal yang ada di e-book Logic Programming with Prolog.


Berikut penjelasan

Soal no 1.

Langkah-Langkah:

1. Ikuti perintah soal yang ada. Ketik apa yang diketahui di notepad terlebih dahulu.


2. Save File notepad dan ganti format .txt menjadi .pl dan ubah tipe save dengan all files.

Contoh Gambar :

3. Cobalah apakah output yang akan ditampilkan.

Contoh Gambar :


4. Penyelesaian.

· Soal 1.

Ubahlah tujuh predikat yang ada pada soal tersebut, namun output yang dihasilkan sama.

· Save file dengan cara yang sama seperti cara no 2.

· Jalankan program seperti no 3.

Gambar hasil prolog sama dengan prolog soal yaitu: (namun liat cara juntuk menampilkan yaitu X chases Y. berbeda dengan yang ada di soal).


Adapun cara lain yang memunjulkan hasil yang sama dan cara menampilkan yang sama yaitu dengan cara:

Hasil setelah dijalankan:


Soal no 2.



Penjelasan : X merupakan angka 1 dan Y merupakan angka 2, kemudian A merupakan hasil penjumlahan dari bilangan X dan Y. A dibagi dengan 2 (karena angka yang dijumlahkan hanya 2 angka) kemudian didapatlah B yang merupakan rata-rata dari 9 dan 7.


Penjelasan : A merupakan angka yang akan di akar kan. C merupakan akar dari A , sqrt merupakan panggilan untuk akar.


Penjelasan : X merupakan angka ke 1 dan Y merupakan angka ke 2 kemudian D merupakan nilai terbesar dari 2 angka tersebut, max merupakan panggilan untuk memilih angka terbesar dari angka yang ada.

Demikian Tutorial dari saya semoga bermanfaat bagi anda. Terimakasih sudah membaca dan melihat-lihat blog ini.