Rabu, 25 November 2009

Jawaban Practical Exercise 5

Soal 1

Langkah pengerjaan :
  1. Buat rule prolog yang memanfaatkan predikat makelower untuk mengatur prolog mengubah huruf kapital menjadi huruf kecil.(Soal1 Rule.jpg)
  2. Tuliskan perintah sesuai rule, kemudian tuliskan kalimat yang terdapat huruf kapital untuk kemudian diubah menjadi huruf kecil.(Soal1 SWI.jpg)
Soal1 Rule.jpg


Soal1 SWI.jpg
Soal 2

Langkah pengerjaan :
  1. Buat dua textfile sebagai input dan output.
  2. Input yang terdiri dari beberapa pernyataan dituliskan ke dalam sebuah textfile bernama input.txt(Soal2 Input.jpg)
  3. Buat rule prolog yang memanfaatkan predikat copyterms untuk mengatur prolog mengkopi isi dari textfile input ke dalam textfile output dan di dalam textfile output masing-masing pernyataan ada pada baris yang berbeda.(Soal2 Rule.jpg)
  4. Tuliskan perintah sesuai rule pada prolog(Soal2 SWI.jpg)
  5. Hasilnya akan keluar pada textfile output(Soal2 Output.jpg)


Soal2 Input.jpg

Soal2 Rule.jpg

Soal2 SWI.jpg

Soal2 Output.jpg
Soal 3

Langkah-langkah pengerjaan :
  1. Buatlah sebuah file bernama testa.txt yang digunakan sebagai input dan tuliskan beberapa karakter di dalamnya.(Soal3 Input.jpg)
  2. Buat rule prolog yang memanfaatkan predikat readfile untuk mengatur prolog membaca masing-masing karakter yang terdapat pada textfile input untuk kemudian dicari nilai ASCII dari masing-masing kareakter tersebut.(Soal2 Rule.jpg)
  3. Tuliskan perintah sesuai rule pada prolog sehingga keluar nilai ASCII dari masing-masing karakter pada input(Soal2 SWI.jpg)
  4. Nilai yang muncul seharusnya seperti berikut :
?- readfile('testa.txt').
97
98
99
100
101
13
10
102
103
104
105
106
13
10
-1
yes

Karena hasil yang keluar pada prolog kami tidak seperti itu, berarti versi prolog yang kami gunakan menggunakan cara yang berbeda dari yang ada prolog yang digunakan dalam E-Book Logic Programming with Prolog dalam merepresentasikan end of file, end of record, atau keduanya

Soal3 Input.jpg

Soal3 Rule.jpg

Soal3 SWI.jpg

Soal 4

Langkah-langkah pengerjaan :
  1. Buat dua textfile untuk input dan satu textfile untuk output.
  2. Isikan beberapa pernyataan yang berbeda pada textfile input dan tuliskan pernyataan end pada baris terakhir.(Soal4 Input1.jpg, Soal4 Input2.jpg)
  3. Buat rule prolog yang memanfaatkan predikat combine untuk menggabungkan pernyataan-pernyataan dari kedua textfile input yang hasil gabungannya akan muncul pada textfile output dan pernyataan end hanya ada pada baris terakhir.(Soal4 Rule.jpg)
  4. Tuliskan perintah sesuai rule yang dibuat.(Soal4 SWI.jpg)
  5. Hasil gabungan akan keluar textfile output.(Soal4 Output.jpg)

Soal4 Input1.jpg

Soal4 Input2.jpg

Soal4 Rule.jpg

Soal4 SWI.jpg

Soal4 Output.jpg

Soal 5

Langkah-langkah pengerjaan :
  1. Buat dua textfile untuk input.
  2. Isikan beberapa pernyataan sembarang boleh sama boleh beda pada textfile input dan tuliskan pernyataan end pada baris terakhir.(Soal5 Input1.jpg, Soal5 Input2.jpg)
  3. Buat rule prolog yang memanfaatkan predikat compare untuk membandingkan pernyataan-pernyataan dari kedua textfile input.(Soal5 Rule.jpg)
  4. Tuliskan perintah sesuai rule yang dibuat dan hasil perbandingan akan keluar.(Soal5 SWI.jpg)

Soal5 Input1.jpg

Soal5 Input2.jpg

Soal5 Rule.jpg

Soal5 SWI.jpg

Selasa, 24 November 2009

Sumary bab 5

Input Output

Chapter Aims

After reading this chapter you should be able to:

• Use the built-in predicates that read from and write to either the user'sterminal (keyboard and screen) or a file, both term by term and characterby-character in your own programs
• Use ASCII values to manipulate strings of characters

Introduction

Prolog has facilities to enable input and output either of terms or of characters.
Using terms is simpler and will be described first. Initially, it will be assumed that
all output is to the user's screen and all input is from the user's keyboard.
5.1 Outputting Terms

The main built-in predicate provided for outputting terms is write/1, which has
already been used many times in this book.
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. (The meaning of current outpu
stream will be explained in Sections 5.7 and 5.8. At present it can simply be taken
to mean the user's screen.)
5.2 Inputting Terms

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.

.


5.3 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.
The table below gives the numerical ASCII values corresponding to the main
printable characters and some others.

5.4 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.

5.5 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.



5.6 Using Characters: Examples

The first example shows how to read in a series of characters from the keyboard
finishing with * and to output their corresponding ASCII values one per line (for
all characters excluding *).
The predicate readin is defined recursively. It causes a single character to be
input and variable X to be bound to its (numerical) ASCII value. The action taken
(the process(X) goal) depends on whether or not X has the value 42 signifying a *

character. If it has, the evaluation of the goal stops. If not, the value of X is output,
followed by a new line, followed by a further call to readin. This process goes on
indefinitely until a * character is read. (In the example below, the ASCII values of
characters P, r, o etc. are correctly shown to be 80, 114, 111 etc.)

5.7 Input and Output Using Files

Prolog takes all input from the current input stream and writes all output to the
current output stream. By default both of these are the stream named user,
denoting the user's terminal, i.e. keyboard for input and screen for output. The user may open and close input and output streams associated with any
number of named files but there can only be one current input stream and one
current output stream at any time. Note that no file can be open for both input and
output at the same time (except user) and that the user input and output streams
cannot be closed.

5.8 File Output: Changing the Current Output Stream

The current output stream can be changed using the tell/1 predicate. This takes a
single argument, which is an atom or variable representing a file name, e.g.
tell('outfile.txt').
Evaluating a tell goal causes the named file to become the current output
stream. If the file is not already open, a file with the specified name is first created
(any existing file with the same name is deleted).
Note that the file corresponding to the previous current output stream remains
open when a new current output stream is selected. Only the current output stream
can be closed (using the told predicate described below).
The default current output stream is user, i.e. the user's terminal. This value can
be restored either by using the told predicate or by tell(user).
The built-in predicate told/0 takes no arguments. Evaluating a told goal causes
the current output file to be closed and the current output stream to be reset to user,
i.e. the user's terminal.
The built-in predicate telling/1 takes one argument, which must be a variable
and will normally be unbound. Evaluating a telling goal causes the variable to be
bound to the name of the current output stream.



5.9 File Input: Changing the Current Input Stream

The current input stream can be changed using the see/1 predicate. This takes a
single argument, which is an atom or variable representing a file name, e.g.
see('myfile.txt').
Evaluating a see goal causes the named file to become the current input stream.
If the file is not already open it is first opened (for read access only). If it is not
possible to open a file with the given name, an error will be generated.
The default current input stream is user, i.e. the user's terminal. This value can
be restored either by using the seen predicate or by see(user).
The built-in predicate seen/0 takes no arguments. Evaluating a see goal causes
the current input file to be closed and the current input stream to be reset to user,
i.e. the user's terminal.
The built-in predicate seeing/1 takes one argument, which must be a variable
and will normally be unbound. Evaluating a seeing goal causes the variable to be
bound to the name of the current input stream.

5.9.1 Reading from Files: End of File

If the end of file is encountered when evaluating the goal read(X), variable X will
be bound to the atom end_of_file.
If the end of file is encountered while evaluating the goal get(X) or get0(X),
variable X will be bound to a 'special' numerical value. As ASCII values must be in
the range 0 to 255 inclusive, this will typically be -1, but may vary from one
implementation of Prolog to another.

5.9.2 Reading from Files: End of Record

Depending on the version of Prolog used, there may be an incompatibility for
character input between reading the end of a record (i.e. the character(s) that
signify the end of a line) from the user's terminal and from a file.
Typically the end of a line of input at the user's terminal will be indicated by
the character with ASCII value 13. The end of a record in a file will generally be
indicated by two ASCII values: 13 followed by 10.
The following program shows how to read in a series of characters from the
keyboard and print them out, one per line.

Senin, 23 November 2009

Office Voice Recognition Integrated (OVRI)

1.Latar Belakang

Saat ini banyak sekali beredar aplikasi office untuk membantu pekerjaan kantor kita, seperti MS Office, Open Office.org, dll. Banyak fitur yang ditawarkan untuk mempermudah pekerjaan kita seperti fitur ribbon yang ada pada MS Office. Namun, semua itu masih memiliki beberapa kekurangan, di antara lain efisiensi waktu pengetikan. Kita lihat jika kita mengetik membutuhkan waktu yang lama dan sering terjadi salah pengetikan. Untuk mengatasi masalah ini kita mempunyai solusi cerdas.

2.Penjelasan Ide

Kita mempunyai ide untuk membuat aplikasi Office yang berbeda. Aplikasi ini dapat mengenali suara yang kemudian akan diterjemahkan dalam bentuk tulisan pada lembar kerja kita. Oleh karena itu aplikasi ini kita beri nama Office Voice Recognition Integrated (OVRI). Seperti MS Office pada umumnya, OVRI juga menyediakan fitur ribbon yang berguna apabila user ingin mengetikkan sesuatu secara manual. Dengan begitu OVRI memiliki dua cara kerja, yaitu secara otomatis dan manual. Apabila user ingin mengaktifkan mode otomatis, user cukup menambahkan alat seperti microphone, headphone atau sejenisnya yang dapat digunakan untuk merekam lalu user berkomentar di depan microphone tersebut dan kalimat apa yang diucapkan akan ditampilkan pada workspace kita. Aplikasi OVRI ini juga dapat mendeteksi suara pada frekuensi yang tidak begitu tinggi.
Cara kerja OVRI sendiri adalah dengan memilah-milah kata demi kata yang kita ucapkan serta rendering lalu diterjemahkan dalam bentuk tulisan pada workspace kita dengan penginisialisasian suara dan bentuk huruf, angka atau sebagainya lalu dihubungkan satu sama lain yang kesemuanya itu terdapat dalam database aplikasi ini.
Keuntungan dari aplikasi OVRI ini adalah efisiensi waktu pengetikan dan meminimalisir kesalahan pengetikan ketika user terlalu cepat mengetik dan tidak memperhatikan pengejaan tiap katanya. Selain itu, kita juga dapat menghemat tenaga kita yang tidak harus susah-susah mengetik lagi apalagi ketika harus mengetik berlembar-lembar dan terburu-buru oleh deadline.

3.Kesimpulan

Jadi, dengan software ini terintregasi dengan software-software office, software ini akan melakukan efisiensi yang sangat besar. Kita tidak usah lagi capek-capek mengetik atau mengulang lagi jika ada salah ketik. Semuanya akan otomatis terketik jika kita mengucapkan suatu kata pada microphone. Kita harap ide ini akan segera terealisasikan secepetnya karena sangat membantu kita di saat bekerja dengan software office.

Kamis, 12 November 2009

Jawaban Practical exercise 4

Jawaban practical exercises 4 no 1.



Ini adalah rule dengan penulisan predikat biasa.
Dan ini adalah outputnya pada prolog .



Berikut tampilan rule setelah di edit.



Dan ini tampilan prolognya.





Ini adalah jawaban no 2



Ini adalah rulenya.

Selasa, 10 November 2009

Summary of Chapter 4 : Operator and Arithmatic

OPERATOR AND ARITHMETIC in Prolog
1. Operators
Ada bentuk lain untuk menulis suatu predikat selain bentuk standar yang sudah dipelajari pada bab sebelumnya. Untuk binary predicate (predikat dengan dua argumen) dapat diubah menjadi bentuk infix operator. Contoh :
makan (adit,pisang)
bentuk standard tersebut dapat diubah menjadi infix operator
adit makan pisang
Kemudian untuk bentuk unary predikat (predikat dengan satu argumen) dapat diubah menjadi bentuk prefix operator atau postfix operator. Contoh :
keren (satriya)
bentuk tersebut diubah menjadi prefix operator
keren satriya
atau bisa juga diubah menjadi postfix operator
satriya keren
2. Arithmetic
Prolog menyediakan fasilitas untuk melakukan penghitungan aritmatik menggunakan notasi-notasi yang mirip dengan aljabar dasar. Pembahasan tentang aritmatik di dalam prolog dibagi menjadi beberapa bagian.
a. Arithmetic Operators
Merupakan operator yang biasanya digunakan untuk melakukan penghitungan aritmatik variabel-variabel di dalam pemrograman menggunakan prolog. Berikut adalah contoh penggunaan dari masing-masing operator.
o X+Y (penjumlahan dari X ditambah Y)
o X-Y (selisih dari X dikurangi Y)
o X*Y (hasil perkalian dari X dan Y)
o X/Y (hasil pembagian dari X dibagi oleh Y)
o X//Y the 'integer quotient' of X and Y (the result is truncated to the nearest integer between it and zero)
o X^Y (nilai dari X pangkat Y)
o -X (nilai negatif dari X)
b. Arithmetic Functions
Merupakan fungsi yang biasanya digunakan untuk melakukan penghitungan aritmatik variabel-variabel di dalam pemrograman menggunakan prolog. Berikut adalah contoh penggunaan dari masing-masing fungsi.
o abs(X) (nilai absolut dari X)
o sin(X) (nilai sinus dari X untuk X dalam derajat)
o cos(X) (nilai cosinus dari X untuk X dalam derajat)
o max(X,Y) (menentukan mana yang lebih besar antara X dan Y)
o sqrt(X) (nilai dari X akar pangkat dua)
c. Pengutamaan Operator Dalam Ekspresi Aritmatika
Prolog menggunakan algoritma aljabar biasa dalam pengopersian aritmatika. Contohnya A+B*C-D. Di dalam ajabar C dan D dikalikan lebih dahulu lalu ditambah dengan A lalu dikurangi dengan D. DI prolog juga demikian. Untuk pengecualian, kita tinggal menggunakan kurung. Contoh : (A+B)*(C+D).
d. Relational Operators
Operator seperti =, !=, >,>=, <, =<, dapat digunakan di Prolog. Digunakan untuk membandingkan dua variabel.

3. Operator Pembanding
Berikut merupakan daftar dari equality operators yang digunakan dalam prolog beserta fungsi dari masing-masing operator.
o Arithmetic Expression Equality =:=
o Arithmetic Expression Inequality =\=
o Terms Identical ==
o Terms Not Identical \==
o Terms Identical With Unification =
o Non-Unification Between Two Terms \=
4. Operator Logika
a. Operator Not
Operator not dapat ditempatkan sebelum predikat untuk memberikan negasi. Predikat yang dinegasikan bernilai benar jika predikat yang asli salah dan bernilai salah jika predikat yang asli benar. Berikut contoh penggunaan operator not :
dog(fido).
?- not dog(fido).
no
?- dog(fred).
no
?- not dog(fred).
yes
?- X=0,X is 0.
X = 0
?- X=0,not X is 0.
no
b. Operator Disjungsi
Operator disjungsi (;) digunakan sebagai operator ‘atau’. Contoh :
?- 6<3;7 is 5+2.
yes

?- 6*6=:=36;10=8+3.
yes

Senin, 09 November 2009

Satria Personal Blog

hello, i made my personal blog. Please come to kuroudo66.blogspot.com