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.
|
|
|
|
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
?- 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
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.
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
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).
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