Senin, 07 Desember 2009

INPUT AND OUTPUT in PROLOG.. (Summary chapter 6)

 SUMMARY CHAPTER 6


Sekarang, kita akan membahas tentang Looping dalam Prolog. Seperti kita ketahui, sebagian besar bahasa pemrograman konvensional memiliki fasilitas yang memungkinkan perulangan satu set instruksi ke b dilaksanakan untuk beberapa kali, atau sampai suatu kondisi terpenuhi. Meskipun, Prolog tidak memiliki fasilitas perulangan, perulangan efek serupa dapat dilakukan dalam beberapa beberapa cara, menggunakan backtracking, rekursi, built-in predikat, atau kombinasi dari itu.  
  • Looping a Fixed Number of Times
Tidak seperti java, yang memiliki fasilitas untuk-loop untuk mengaktifkan satu set instruksi yang akan dieksekusi nomor tetap kali, Prolog tidak tersedia untuk melakukan hal itu (langsung), tapi efek yang sama dapat diperoleh dengan menggunakan rekursi, seperti:
testloop(0).
testloop(N) :- N>0, write(‘Number : ‘), write(N), nl, M is N-1, testloop(M)
Testloop predikat yang didefinisikan sebagai 'loop dari N, tulis nilai N, kemudian kurangi satu untuk diberikan kepada M, kemudian loop dari M'. "Dan oleh klausa pertama, didefinisikan sebagai 'jika argumen adalah nol, melakukan apa-apa (stop!)'.
uji program:

?- testloop(3).
Number : 3
Number :2
Number :1
yes

  • Looping until a Condition is Satisfied
Contoh di bawah ini menunjukkan penggunaan istilah rekursi untuk membaca dimasukkan oleh pengguna dari keyboard dan output mereka ke layar, sampai akhir adalah sebuah kata yang dihadapi, dengan menggunakan ‘disjunctive goal’(word=end).
test :- write(‘Type the word : ‘), read(word), write(‘Input was ‘), write(word), nl, (word=end; test).
?- test.
Type the word : Hello.
Input was Hello
Type the word : ITS.
Input was ITS
Type the word : end.
Input was end.
yes
 
  • Backtracking with failure
 Seperti namanya, predikat gagal, selalu gagal, apakah pada 'standar' evaluasi kiri ke kanan atau pada kemunduran. Dengan menggabungkan dengan otomatis Prolog backtracking, untuk mencari database untuk menemukan semua klausa dengan properti khusus, kita dapat memiliki perulangan otomatis.

Contoh program di bawah ini dirancang untuk mencari database yang berisi klausul yang mewakili nama, umur, tempat tinggal, dan pekerjaan dari sejumlah orang.

Database berisi nilai-nilai ini:

person(john,smith,45,london,doctor).
person(martin,williams,33,birmingham,teacher).
person(henry,smith,26,manchester,plumber).
person(jane,wilson,62,london,teacher).
person(mary,smith,29,glasgow,surveyor).

predikat Somepeople di bawah ini adalah untuk pencarian orang dalam database yang merupakan nama keluarga smith
somepeople :- person(Forename, Surname, _, _, _), Surname =smith, write(Forename), write(‘ ‘), write(Surname), nl, fail.
somepeople.
Yang gagal dalam predikat somepeople digunakan sebagai kemunduran, yang menemukan semua database dalam program.

Output program ini adalah:

?- somepeople.
john smith
henry smith
mary smith
yes

Tidak ada komentar:

Posting Komentar