Rabu, 25 November 2009

resume bab 5


Bab 5
Input dan Output

Pendahuluan :
Prolog memiliki fasilitas untuk mengaktifkan input dan output baik dari istilah atau karakter.
Menggunakan istilah lebih sederhana dan akan dijelaskan terlebih dahulu.

5,1 Outputing
    fungsinya untuk mencetak write/1 dan writeq/1
    perbedaan write/1 : saat mencetak outputnya dibutuhkan tanda petik, baik di awal dan di akhir
    sedangkan writeq/1 : ketika mengeluarkan outputnya tidak memrlukan tanda petik baik di awal atau di akhir
    built-in predicate nl/0 akan membuat baris baru pada hasil outputnya
            contoh :
            untuk write/1
            ?- write('a string of characters'),nl.
            a string of characters
            yes

            untuk writeq/1
            ?- writeq('a string of characters'),nl.
            'a string of characters'
            Yes
5.2 Inputing terms
    Predikat read/1 dibutuhkan dalam penginputan yang membutuhkan sebuah argument dan berupa variabel.
    dalam penginputannya juga dibutuhkan tanda titik (.)
    istilah input disatukan dengan argumen
    variabel. Jika variabel tidak terikat (yang biasanya terjadi) itu adalah terikat pada
    masukan nilai.
            contoh :
            ?- read(Y).
            : 'a string of characters'.
            Y = 'a string of characters'
           
            atau

            ?- read(X).
            : 26.
            X = 26
            Jika variabel argumen sudah terikat (sebagian kesalahan terjadi karena kelasalahan [engguna itu sendiri), berhasil jika dan hanya jika
            masukan istilah adalah identik dengan nilai terikat sebelumnya.
            contoh :
            ?- X=fred,read(X).
            : jim.
            no ==> disini "no" maksudnya kata jim tidak ada dalam variabel x
           
5.3  Input and Output Using Characters
            Menggunakan syarat-syarat yaitu penggunaan tanda kutip dan penuh
berhenti dapat menjadi rumit dan tidak selalu sesuai.


94 : ^
95 :_
96 :`
97:-
122 :a to z
123 :{
124 |:
125 :}
126 :~



59: ;
60 :<
61 :=
62 :>
63 :?
64: @
65:-
90 : A to Z
91 : [
92 : \
93 :]



40: (
41 :)
42 :*
43 :+
44 :,
45 :-
46 :.
47 :/
48-57: 0 to 9
58 ::



9   : tab
10 : end of record
32 :space
33 :!
34 :"
35 :#
36 :$
37 :%
38 :&
39 :'


Contoh :






Nilai ASCII karakter yang kurang dari atau sama dengan 32 yang dikenal sebagai putih
ruang karakter.

5.4 Outputting Characters
Karakter output menggunakan built-in predicate put/1..
Karakter put akn menyebabkan satu karakter di outputnya . Ini adalah karakter yang sesuai dengan nilai numerik (ASCII nilai) dari argumen, misalnya :
            ?- put(97),nl.
a
yes
5.5 Inputting Characters
Predikat Two built-in untuk memasukan inputan satu karakter get0/1 and get/1.
Maksud dari get0/1 adalah untuk satu karakter 
Contoh :
?- get0(N).
: a
N = 97
?- M is 41,get0(M).
: )
M = 41
?- M=dog,get0(M).
: )
No
?- get(X).
: Z
X = 90

5.6 Using Characters: Examples
Contoh pertama menunjukan bagaimana cara karakter dari keyboard. Variabel
kemudian disatukan dengan nilai ASCII karakter ini.
Contoh :
readin:-get0(X),process(X).
process(42).
process(X):-X=\=42,write(X),nl,readin.
?- readin.
: Prolog Example*
80
114
111
108
111
103
32
69
120
97
109
112
108
101
yes

Kali ini ASCII nilai-nilai input adalah karakter yang tidak output, tetapi jumlah karakter
(termasuk *) adalah output.
go(Total):-count(0,Total).
count(Oldcount,Result):-
get0(X),process(X,Oldcount,Result).
process(42,Oldcount,Oldcount).
process(X,Oldcount,Result):-
X=\=42,New is Oldcount+1,count(New,Result).
?- go(T).
: The time has come the walrus said*
T = 33
?- go(T).
: *
T = 0
Predikat vokal tes untuk salah satu dari 10 kemungkinan vokal (lima huruf besar dan lima huruf kecil), menggunakan nilai-nilai ASCII.

go(Vowels):-count(0,Vowels).
count(Oldvowels,Totvowels):-
get0(X),process(X,Oldvowels,Totvowels).
process(42,Oldvowels,Oldvowels).
process(X,Oldvowels,Totalvowels):-
X=\=42,processChar(X,Oldvowels,New),
count(New,Totalvowels).
processChar(X,Oldvowels,New):-vowel(X),
New is Oldvowels+1.
processChar(X,Oldvowels,Oldvowels).
vowel(65). /* A */
vowel(69). /* E */
vowel(73). /* I */
vowel(79). /* O */
vowel(85). /* U */
vowel(97). /* a */
vowel(101). /* e */
vowel(105). /* i */
vowel(111). /* o */
vowel(117). /* u */
?- go(Vowels).
: In the beginning was the word*
Vowels = 8
?- go(Vowels).
: pqrst*
Vowels = 0

5.7 Input dan Output Menggunakan File
Prolog melakukan input dan output dalam stream. Pengguna mungkin melakukan (membuka dan menutup) di  stream dengan menggunakan huruf dari nama filenya .
File 5,8 Output: Mengubah Current Output Stream
Aliran arus output dapat diubah menggunakan tell / 1 predikat. Nilai ini dapat dikembalikan baik dengan menggunakan kata / 0 predikat atau dengan kirim (pengguna).


File 5,9 Input: Mengubah Input Current Stream
Input stream yang aktif dapat diubah dengan menggunakan melihat / 1 predikat yang mewakili nama file, misalnya
lihat ( 'myfile.txt'). Nilai ini dapat dikembalikan baik dengan menggunakan dilihat predikat atau dengan melihat (pengguna).
1.
Membaca dari File: End of File
Jika akhir file ditemukan ketika mengevaluasi tujuan read (X), variabel X akan terikat pada atom end_of_file. Jika akhir file ditemukan saat mengevaluasi tujuan mendapatkan (X) atau get0 (X), variabel X akan terikat kepada seorang 'khusus' nilai numerik.
2.
Membaca dari File: End of Record
Biasanya akhir baris dari input pada terminal pengguna akan ditunjukkan oleh karakter dengan nilai ASCII 13. Akhir sebuah catatan dalam sebuah file pada umumnya akan ditandai dengan dua nilai ASCII: 13 diikuti oleh 10.
Readline:-get0 (X), proses (X).
proses (13).
proses (X):-X = \ = 13, memakai (X), nl, Readline.
? - Readline.
: Prolog test
P
r
o
l
o
g
t
e
s
t
ya


Tidak ada komentar:

Posting Komentar