TUTORIAL 4
INPUT AND OUTPUT
Outputting Terms
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. Evaluating a nl goal causes a new line to be output to the current output stream.
Examples
?- write(26),nl.
26
yes
?- write('a string of characters'),nl.
a string of characters
yes
?- write([a,b,c,d,[x,y,z]]),nl.
[a,b,c,d,[x,y,z]]
yes
?- write(mypred(a,b,c)),nl.
mypred(a,b,c)
yes
?- write('Example of use of nl'),nl,nl,write('end of example'),nl.
Example of use of nl
end of example
yes
Note that atoms that have to be quoted on input (e.g. 'Paul', 'hello world') are not quoted when output using write. If it is important to output the quotes, the writeq/1 predicate can be used. It is identical to write/1 except that atoms that need quotes for input are output between quotes (other atoms are not).
?- writeq('a string of characters'),nl.
'a string of characters'
yes
?-writeq(dog),nl.
dog
yes
?- writeq('dog'),nl.
dog
yes
Inputting Terms
The built-in predicate read/1 is provided to input terms. It takes a single argument, which must be a variable. Evaluating it causes the next term to be read from the current input stream, which by default is the user's keyboard. In the input stream, the term must be followed by a dot ('.') and at least onewhite space character, such as space or newline. The dot and white space characters are read in but are not considered part of the term. Note that for input from the keyboard (only) a prompt character such as a colon will usually be displayed to indicate that user input is required. It may be necessaryto press the 'return' key before Prolog will accept the input. Both of these do not apply to input from files.When a read goal is evaluated, the input term is unified with the argument variable. If the variable is unbound (which is usually the case) it is bound to the input value.
?- 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).
: 'a string of characters'.
Y = 'a string of characters'
If the argument variable is already bound (which for most users is far more likely to occur by mistake than by design), the goal succeeds if and only if the input term is identical to the previously bound value.
?- X=fred,read(X).
: jim.
no
?- X=fred,read(X).
: fred.
X = fred
Input and Output Using CharactersAlthough 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.
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.Evaluating a put goal causes a single character to be output to the current output stream. This is the character corresponding to the numerical value (ASCII value) of its argument, for example
?- put(97),nl.
a
yes
?- put(122),nl.
z
yes
?- put(64),nl.
@
yes
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 aget0 goal causes a character to be read from the current input stream. The variableis then unified with the ASCII value of this character.Note that for input from the keyboard (only) a prompt character such as a colonwill usually be displayed to indicate that user input is required. It may be necessaryto press the 'return' key before Prolog will accept the input. Both of these alsoapply to the get predicate described below but do not apply to input from files.Assuming the argument variable is unbound (which will usually be the case), itis bound to the ASCII value of the input character.
?- get0(N).
: a
N = 97
?- get0(N).
: Z
N = 90
74 Logic Programming With Prolog
?- get0(M).
: )M = 41
If the argument variable is already bound, the goal succeeds if and only if it has a numerical value that is equal to the ASCII value of the input character.
?- get0(X).
: a
X = 97
?- M is 41,get0(M).
: )
M = 41
?- M=dog,get0(M).
: )
no
?- M=41.001,get0(M).
: )
no
The get predicate takes a single argument, which must be a variable. Evaluatinga get goal causes the next non-white-space character (i.e. character with an ASCIIvalue less than or equal to 32) to be read from the current input stream. Thevariable is then unified with the ASCII value of this character in the same way asfor get0.
?- get(X).
: Z
X = 90
?- get(M).
: Z
M = 90
Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan
Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan
Rabu, 25 November 2009
Kamis, 22 Oktober 2009
RULE BASED EXPERT SYSTEM
Expert System atau Sistem pakar adalah suatu program komputer yang memperlihatkan derajat keahlian dalam pemecahan masalah di bidang tertentu sebanding dengan seorang pakar (Ignizio, 1991). Keahlian sistem pakar dalam memecahkan suatu masalah diperoleh dengan cara merepresentasikan pengetahuan seorang atau beberapa orang pakar dalam format tertentu dan menyimpannya dalam basis pengetahuan. Sistem pakar berbasis kaidah (rule-based expert system) adalah sistem pakar yang menggunakan kaidah (rules) untuk merepresentasikan pengetahuan di dalam basis pengetahuannya.Mesin inferensi (inference engine) merupakan bagian yang bertindak sebagai pencari solusi dari suatu permasalahan berdasar pada kaidah-kaidah yang ada dalam basis pengetahuan sistem pakar. Selama proses inferensi, mesin inferensi memeriksa status dari basis pengetahuan dan memori kerja (working memory) untuk menentukan fakta apa saja yang diketahui dan untuk menambahkan fakta baru yang dihasilkan ke dalam memori kerja tersebut. Fakta-fakta yang merupakan hasil dari proses inferensi disimpan dalam memori kerja.
Rule Based Expert System
> Representasi Pengetahuan dengan Rules (aturan) sering disebut juga dengan Sistem Produksi
> Suatu Rule Terdiri dari 2 bagian, yaitu:
> Antacedent, yaitu bagian yang mengekspresikan situasi atau premis (Pernyataan berawalan IF)
> Konsekuen, yaitu bagian yang menyatakan suatu tindakan tertentu atau konklusi yang diterapkan jika situasi atau premis bernilai benar (Pernyataan berawalan THEN).
Misalnya:
IF lalulintas pagi ini macet
THEN saya naik sepeda motor saja
Rule Based Expert System
> Representasi Pengetahuan dengan Rules (aturan) sering disebut juga dengan Sistem Produksi
> Suatu Rule Terdiri dari 2 bagian, yaitu:
> Antacedent, yaitu bagian yang mengekspresikan situasi atau premis (Pernyataan berawalan IF)
> Konsekuen, yaitu bagian yang menyatakan suatu tindakan tertentu atau konklusi yang diterapkan jika situasi atau premis bernilai benar (Pernyataan berawalan THEN).
Misalnya:
IF lalulintas pagi ini macet
THEN saya naik sepeda motor saja
Selasa, 13 Oktober 2009
Langganan:
Postingan (Atom)

.jpg)