Rabu, 25 November 2009

INPUT DAN OUPTUT

INPUT dan OUTPUT adalah dua istilah yang sangat umum ketika berbicara tentang menggunakan komputer. Yang kami maksud dengan INPUT adalah informasi yang diberikan untuk sebuah program (baik itu sistem operasi, aplikasi seperti pengolah kata program, atau program yang Anda tulis sendiri). OUTPUT keprihatinan yang menghasilkan komputer sebagai hasil dari menjalankan program. Agak membingungkan, pengguna komputer selalu merujuk pada saluran input dan output sebagai "masukan" dan "output" juga.

Biasanya, Anda memberikan masukan ke program dari terminal (apa yang Anda ketik pada keyboard) atau dari sebuah file. Yang pertama sering disebut sebagai STANDAR INPUT (dalam arti kanal input). Misalnya, ketika anda mengetik perintah untuk Unix atau untuk SICStus pada tingkat atas meminta Anda menggunakan standard input. Ketika Anda meminta kompiler Prolog untuk berkonsultasi file, saluran masukan Anda adalah file.

Output dari program-program ini biasanya dikirim ke terminal (ditampilkan pada layar), tetapi Anda juga dapat mengirim output ke file, atau perintah lain. Ini adalah apa yang Anda lakukan di Unix bila Anda menggunakan> perintah untuk mengarahkan kembali output dari perintah ke file, atau pipa | perintah untuk mengirim output dari perintah ke perintah lain (lebih misalnya).

Sejauh ini, bila Anda telah menjalankan program Prolog, Anda hanya menggunakan terminal untuk input dan output. Tetapi ada cara untuk memberitahu Prolog untuk mengambil input dari sebuah file, atau untuk mengirim output ke satu. Hal ini berguna misalnya ketika Anda ingin menguji sebuah program, atau jika itu menghasilkan suatu kumpulan data yang ingin Anda menganalisis kemudian.

Ouput


built-in predikat utama yang disediakan untuk istilah output write/ 1, yang d gunakan dalam resume ini
write/ 1 predikat mengambil satu argumen, yang harus yang valid dengan syarat prolog.  Evaluasi predikat menyebabkan syarat akan ditulis ke current output stream, , yang secara default adalah layar user.
Built-in predikat nl / 0 juga telah digunakan berkali-kali sebelumnya dalam hal ini
buku. Tanpa membutuhkan argumen. Mengevaluasi sebuah tujuan nl menyebabkan baris baru untuk menjadi output untuk
output stream.
Contoh
? – write(26), nl.
26
ya
? – write( ’string karakter’), nl.
string karakter
ya
? – write([a, b, c, d, [x, y, z]]), nl.
[a, b, c, d, [x, y, z]]
ya
? – write (mypred (a, b, c)), nl.
mypred (a, b, c)
ya
? – write( ‘Contoh useran nl’), nl, nl, write( ‘akhir contoh’), nl.
Contoh useran nl
contoh akhir
ya

Input

Built-in predikat membaca disediakan untuk masukan istilah. Dibutuhkan satu argumen, yang harus menjadi variabel.
Mengevaluasi itu menyebabkan istilah berikutnya untuk dibaca dari input arus sungai,
yang secara default adalah pengguna keyboard. (Yang dimaksud dengan arus input). Dalam input stream, istilah harus diikuti oleh sebuah titik ('.') dan setidaknya satu spasi, seperti spasi atau baris baru. Titik dan spasi karakter dibaca dalam tetapi tidak dianggap bagian dari istilah. Perhatikan bahwa untuk masukan dari keyboard (hanya) sebuah prompt karakter seperti titik dua biasanya akan ditampilkan untuk menunjukkan bahwa input pengguna diperlukan. Mungkin perlu untuk tekan tombol 'kembali' tombol sebelum Prolog akan menerima input. Kedua tidak berlaku untuk masukan dari file. Ketika sebuah tujuan membaca dievaluasi, istilah input disatukan dengan argumen variabel. Jika variabel tidak terikat (yang biasanya terjadi) itu adalah terikat pada masukan nilai.

Contoh
? - 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).
: 'String karakter'.
Y = 'string karakter'

Jika variabel argumen sudah terikat (yang bagi sebagian besar pengguna adalah jauh lebih mungkin terjadi karena kesalahan daripada desain), tujuan berhasil jika dan hanya jika masukan istilah adalah identik dengan nilai terikat sebelumnya.


Dalam Prolog :
? - X = fred, read (X).
: Jim.
tidak
? - X = fred, read (X).
: Fred.
X = fred


INPUT dan OUTPUT KARAKTER
Meskipun input dan output sangat mudah,tapi useran tanda kutip dan titik dapat menjadi rumit dan tidak selalu sesuai.Sebagai contoh, akan membosankan untuk menentukan predikat (menggunakan baca) yang akan membaca serangkaian karakter dari keyboard dan menghitung jumlah huruf vokal.
untuk mengetahui tentang nilai ASCII karakter.
Semua mencetak karakter dan banyak karakter non-cetak (seperti ruang dan
tab) memiliki sesuai ASCII (American Standard Code for  Information
Interchange) nilai, yang merupakan integer 0-255.

Output Karakter
 

Karakter adalah output dengan menggunakan built-in predikat meletakkan / 1. Predikat mengambil
argumen tunggal, yang harus menjadi nomor 0-255 atau ekspresi yang
mengevaluasi ke integer dalam jangkauan.
Mengevaluasi tujuan put menyebabkan satu karakter untuk menjadi output untuk saat ini
output stream. Ini adalah karakter yang sesuai dengan nilai numerik (ASCII
nilai) dari argumen, misalnya
?- put(97),nl.
a
yes
?- put(122),nl.
z
yes
?- put(64),nl.
@
Yes


 INPUT KARAKTER
 
Dua predikat built-in disediakan untuk memasukkan satu karakter: get0 / 1 da n get/ 1.
Get0 predikat yang mengambil satu argumen, yang harus menjadi variabel. Mengevaluasi
tujuan get0 menyebabkan karakter untuk dibaca dari input saat ini stream. Variabel
kemudian disatukan dengan nilai ASCII karakter ini.
Mengasumsikan argumen variabel tak terikat (yang biasanya akan terjadi), itu
terikat ke nilai ASCII karakter input.
? – Get0 (N).
: A
N = 97
? – Get0 (N).
: Z
N = 90
Logika Pemrograman Dengan 74 Prolog
? – Get0 (M)
)
M = 41
Jika variabel argumen sudah terikat, tujuan berhasil jika dan hanya jika memiliki
nilai numerik yang sama dengan nilai ASCII karakter input.
?- get0(X).
: a
X = 97
?- M is 41,get0(M).
: )
M = 41
?- M=dog,get0(M).
: )
no
?- M=41.001,get0(M).
: )
No
predikat mengambil satu argumen, yang harus menjadi variabel. Mengevaluasi
get berikutnya menyebabkan tujuan non-white-space karakter (yaitu ASCII karakter dengan
nilai kurang dari atau sama dengan 32) untuk dibaca dari input saat ini stream. Itu
variabel ini kemudian disatukan dengan nilai ASCII karakter ini dengan cara yang sama seperti
untuk get0.
?- get(X).
: Z
X = 90
?- get(M).
: Z
M = 90

Input and Output Using File
 

Prolog mengambil semua input dari input stream dan menulis semua output ke
output stream. Secara default kedua stream ini bernama user,
menunjukkan user terminal, yaitu untuk input keyboard dan layar untuk memperoleh output.
Fasilitas yang sama yang tersedia untuk input dan output dari dan ke user
terminal kedua istilah tersebut dengan istilah atau karakter demi karakter juga tersedia untuk input
dan output dari dan ke file (misalnya file pada hard disk atau CD-ROM).
User dapat membuka dan menutup streaminput dan output yang terkait dengan
jumlah nama file, tapi hanya ada satu streaminput dan satu
stream output pada setiap saat. Perhatikan bahwa tidak ada file bisa terbuka untuk input maupun
output pada waktu yang sama (kecuali user) dan bahwa user input dan output stream
tidak dapat ditutup.

Mengubah Output Current Stream


Stream output dapat diubah menggunakan tell / 1 predikat. Ini membutuhkan
argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya
kirim ( ‘outfile.txt’).
Mengevaluasi sebuah tujuan kirim menyebabkan file bernama untuk menjadi arus output
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 stream output sebelumnya tetap
terbuka ketika arus output baru stream dipilih. Hanya stream output
dapat ditutup (menggunakan predikat kata yang dijelaskan di bawah).
Arus output default stream user, yaitu user terminal. Nilai ini dapat
dikembalikan baik dengan menggunakan kata predikat atau dengan kirim (user).
Built-in predikat tell/ 0 mengambil tanpa argumen. Mengevaluasi sebuah tujuan kepada penyebab
arus output file yang akan ditutup dan arus output stream untuk diatur ulang ke user,
i.e. user.
Built-in predikat tell / 1 memerlukan satu argumen, yang harus menjadi variabel
dan biasanya akan terikat. Mengevaluasi sebuah tujuan memberitahu menyebabkan variabel yang akan
terikat nama output stream.

Mengubah Input Current Stream


Input stream yang aktif dapat diubah dengan menggunakan see/ 1 predikat. Ini membutuhkan
argumen tunggal, yang merupakan atom atau variabel yang mewakili nama file, misalnya
see( ‘myfile.txt’).
Mengevaluasi sebuah tujuan see menyebabkan file bernama input yang menjadi stream.
Jika file ini belum terbuka itu pertama kali dibuka (untuk akses baca saja). Jika tidak
mungkin untuk membuka file dengan nama yang diberikan, kesalahan akan dihasilkan.
Catatan bahwa file yang sesuai dengan arus input yang sebelumnya tetap
terbuka ketika sebuah arus input yang baru dipilih. Hanya arus input
dapat ditutup. Default input stream user, yaitu user. Nilai ini dapat
dipulihkan baik dengan menggunakan dilihat predikat atau dengan see (user).
Built-in predikat see/ 1 memerlukan satu argumen, yang harus menjadi variabel
dan biasanya akan terikat. Mengevaluasi sebuah tujuan see menyebabkan variabel yang akan
terikat nama input stream.

End Of File



Jika akhir file ditemukan ketika mengevaluasi tujuan read (X), variabel X akan
terikat ke atom end_of_file.
Jika akhir file ditemukan saat mengevaluasi tujuan get(X) atau get0 (X),
variabel X akan terikat kepada seorang ‘khusus’ nilai numerik. Sebagai nilai-nilai ASCII harus dalam
kisaran 0-255 inklusif, ini biasanya akan menjadi -1, tetapi dapat bervariasi dari satu
Prolog pelaksanaan lain.

End Of Record


Tergantung pada versi Prolog digunakan, mungkin ada ketidakcocokan untuk
karakter input antara membaca akhir sebuah catatan dari terminal user dan dari sebuah file.
Biasanya akhir baris dari input pada terminal user akan ditunjukkan oleh
karakter dengan nilai ASCII 13. Akhir sebuah catatan dalam sebuah file umumnya akan
ditunjukkan oleh dua nilai ASCII: 13 diikuti oleh 10.
Program berikut menunjukkan bagaimana membaca dalam serangkaian karakter dari
keyboard dan mencetak mereka keluar, satu per baris.
Readline:-get0 (X), proses (X).
proses (13).
proses (X):-X = \ = 13, memakai (X), nl, Readline.
Perhatikan useran meletakkan daripada menulis dan bahwa tes untuk nilai ASCII 13
menghindari kebutuhan untuk karakter seperti * untuk menunjukkan ‘akhir input’.
? – Readline.
: Prolog test
Pr
ol
og
t
est
ya


 



Tidak ada komentar:

Posting Komentar