: )
Outputting terms (Ketentuan Keluaran)
Pada intinya, ada tiga hal utama yang digunakan dalam masalah out[ut atau keluaran, yaitu kode write/1, nl/0, dan nl.
write/1 sudah pernah kami gunakan dalam tutorial sebelumya. write/1 digunakan apabila predikat memiliki argumen tunggal. Sebenarnya, ada satu lagi model penulisan dari write/1. Yaitu writeq/1. Tapi sampai saya posting ini, saya tidak menemukan perbedaan antara write/1 dengan writeq/1. Mohon maaf atas kekurangan ini.
nl/0 digunakan apabila tidak ada argumen.
nl artinya adalah new line. Fungsinya hampir sama dengan System.out.println(""); lebih mudahnya sama dengan tombol enter dalam keyboard qwerty.
Contoh Outputting terms :
?- write(rhiezall), nl, write(cakep).
rhiezall
cakep
yes?- write('randy'), nl, write('cantik').
randy
cantik
yes*catatan : dalam penggunaan tanda petik gunakan simbol dengan satu tanda petik (') bukan ("). Karena akan menghasilkan sesuatu yang berbeda.
Inputting Terms (Ketentuan Masukan)
Dalam inputting terms, ada kode read/1. Kode ini digunakan untuk memasukkan satu predikat. Untuk lebih jelasnya, bisa dilihat contoh dibawah ini. Anda akan mengerti dengan sendirinya. Mudah kok.
?- read(X).
| : apriyan.
X = apriyan
| : apriyan.
X = apriyan
Selain hal di atas, ada juga input yang digunakan untuk mencocokkan atau lebih mudahnya memeriksa kebenaran dari variabel yang sudah diberi argumen. Ini contohnya :
?- X=fred,read(X).
| : rhiezall.
no
| : rhiezall.
no
?- X=fred,read(X).
| : fred.
X = fred
yes
Input dan Output Menggunakan Karakter
Dalam prolog, ternyata kita juga bisa menggunakan ASCII (American Standard Code fot Information Interchange). Kita bisa memanfaatkan ASCII dengan cara input dan output yang telah saya tuliskan di atas. Perlu diketahui, ASCII sebenarnya memiliki beberapa kode lagi. Ada kode biner, oktal, desimal, dan hexadesimal. Namun yang kita pelajari disini adalah yang menggunakan bilangan desimal. Di bawah ini adalah tabel minimalis dari kode ASCII.
Untuk melihat tabel ASCII yang lebih lengkap Klik disini.
Outputting Characters (Keluaran Karakter)
Outputting Characters digunakan untuk mengeluarkan karakter dari kode ASCII desimal. Misalnya saja kita massukkan angka 97, maka yang keluar adalah huruf a. Di bawah ini adalah contohnya :
?- put(97),nl.
a
yes
a
yes
?- put(122),nl.
z
yes
?- put(64),nl.
@
yes
Sama kan dengan tabel di atas..
Inputting Characters (Masukan Karakter)
Kebalikan dari Outputting Characters. Kita memasukkan huruf, dan keluarannya adalah kode ASCII desimal. Kodenya sebagai berikut :
?- get0(N).
|: a
N = 97
|: a
N = 97
?- get0(N).
|: Z
N = 90
File Output : Changing the Current Output Stream
Aliran arus keluaran dapat diubah menggunakan predikat tell/1. Kode ini membutuhkan argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya :
tell('outfile.txt').
Mengevaluasi sebuah tujuan kirim menyebabkan file bernama untuk menjadi arus keluaran 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 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).
File Input : Changing the Current Input Stream
Input stream yang aktif dapat diubah dengan menggunakan see/1 predikat. Kode ini membutuhkan argumen tunggal, yang merupakan variabel yang mewakili nama file, misalnya :
see('myfile.txt').
Catatan bahwa file yang sesuai dengan arus input yang sebelumnya tetap terbuka ketika sebuah arus input yang baru dipilih. Hanya arus input dapat ditutup (menggunakan predikat melihat dijelaskan di bawah). Default input stream pengguna, yaitu pengguna terminal. Nilai ini dapat dipulihkan baik dengan menggunakan dilihat predikat atau dengan melihat (pengguna).
PRACTICAL EXERCISE 5
(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
: This is an Example 123 inCLUDing numbers and symbols +-*/@[] XYz
this is an example 123 including numbers and symbols +-*/@[] xyz
yes
(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.
(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.
(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.
(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.
Jawaban Exercise 5
(1) Soal no.1
Kode yang dimasukkan ke dalam prolog. Merubah huruf besar menjadi huruf kecil. Dengan cara menambah ASCII dengan angka 32. Mengingat A-Z = 65-90 sedangkan a-z = 97-122.
Keluaran di prolog. Dengan kata-kata asal-asalan.
(2) Soal no.2
in.txt adalah notepad data masukan.
Setelah itu kita membuat kode yang akan dibaca oleh prolog
Dalam prolog, kita menuliskan seperti ini.
Kemudian akan terbentuk keluaran seperti ini.
(3) Soal no.3
Kita membuat file testa.txt dengan ketentuan yang telah disebutkan pada soal
(4) Soal no.4
Kita menuliskan data sesuai dengan yang ada di soal dalam file in1.txt
Kemudian kita juga menuliskan data di file in2.txt
Lalu kita menulis kode yang bisa dibaca oleh prolog.
Dalam prolog kita menuliskan seperti yang dibawah ini.
Hasil Keluarannya adalah seperti ini.
(5) Soal no.5
Kita menuliskan sesuai dengan perintah di soal dalam test1.txt
Kita menuliskan sesuai dengan perintah di soal dalam test1.txt
Kita mengetikkan kode di prolog dan hasilnya pun terlihat disana.
Tidak ada komentar:
Posting Komentar