Feeds:
Posts
Comments

Hasil FP

FP Matdis Final

Ujicoba program

Berikut ini adalah hasil ujicoba program sederhana yang sedang kami coba untuk kembangkan :

dari hasil ujicoba yang kami lakukan, kami berkesimpulan masih perlu adanya perbaikan agar program ini makin baik.

Pada postingan sebelumnya, kami sudah mencoba membuat desain awal mengenai cara diagnosa penyakit yang bisa kita lakukan sendiri sebelum kita pergi ke dokter. Berikut ini adalah source code dasar dari program yang sedang kami buat, kemungkinan masih akan ada perbaikan :

diag:- write(‘Diagnosis awal penyakit mandiri’),menu.
menu:-nl,write(‘Pilih 3 keluhan yang paling mendekati apa yang Anda rasakan saat ini:’),nl,
write(’1. kepala pusing’),nl,
write(’2. suhu badan tinggi’),nl,
write(’3. batuk dan pilek’),nl,
write(’4. badan lemas’),nl,
write(’5. demam lebih dari 3 hari’),nl,
write(’6. cek darah menunjukkan positif Salmonella Paratipii’),nl,
write(’7. nyeri ulu hati’),nl,
write(’8. nyeri lambung’),nl,
read(A),nl,read(B),nl,read(C),nl,keluhan(A,B,C).
keluhan(1,2,3):-write(‘Kemungkinan Anda menderita penyakit flu. Obatnya adalah Paracetamol, antibiotik, dan Multivitamin’),nl.
keluhan(4,5,6):-write(‘Kemungkinan Anda menderita penyakit tipus. Obatnya adalah Paracetamol, antibiotik, Multivitamin, obat anti Mual, dan CTM ‘),nl.
keluhan(1,7,8):-write(‘Kemungkinan Anda menderita penyakit maag. Obatnya adalah Paracetamol, antibiotik, Multivitamin, dan obat anti Mual’),nl.
Program ini akan kami coba kembangkan agar bisa menjadi lebih baik.

Kebanyakan bahasa pemrograman konvensional memiliki fasilitas perulangan yang memungkinkan set instruksi yang akan dieksekusi berulang-ulang tetap baik beberapa kali atau sampai kondisi tertentu terpenuhi. Prolog tidak memiliki fasilitas perulangan, efek yang sama dapat diperoleh yang memungkinkan urutan tujuan untuk dievaluasi berulang kali. Hal ini dapat dilakukan dalam berbagai cara, menggunakan pengecekan mundur (backtracking), rekursi, built-in predikat, atau kombinasi dari semuanya.

Looping Angka Tetap Beberapa kali

Banyak bahasa pemrograman menyediakan ‘for loops’ yang memungkinkan satu set instruksi akan dieksekusi tetap beberapa kali. Tidak ada fasilitas tersebut tersedia dalam Prolog (langsung), tetapi efek yang sama dapat diperoleh dengan menggunakan rekursi, seperti ditunjukkan dalam contoh program di bawah ini.

Contoh 1

Keluaran program berikut bilangan bulat dari nilai tertentu ke 1.

loop(0).

loop(N):-N>0,write(‘The value is: ‘),write(N),nl,

M is N-1,loop(M).

Predikat loop didefinisikan dalam istilah itu sendiri. Kalimat kedua dapat dianggap sebagai: ‘for loop dari N, pertama menulis nilai N, kemudian kurangi satu untuk memberikan M, kemudian loop dari M’. Proses ini jelas harus dihentikan dan ini dicapai oleh klausa pertama: ‘ketika argumen adalah nol, tidak melakukan apa-apa (dan karenanya berhenti) ‘. Klausa pertama dapat dianggap sebagai suatu kondisi untuk menghentikan rekursi.

? – Loop (6).

Nilai adalah: 6

Nilai adalah: 5

Nilai adalah: 4

Nilai adalah: 3

Nilai adalah: 2

Nilai adalah: 1

yes

Looping sampai sebuah kondisi terpenuhi

Prolog tidak mempunyai instruksi khusus untuk mengeksekusi secara berulang sampai menemukan kondisi yang ditentukan.

Rekursi

Contoh program berikut menunjukkan penggunaan rekursi untuk membaca term yang dimasukkan user melalui keyboard dan menampilkannya ke layar, hingga kata ‘end’ dimasukkan.

Source file

go:-loop(start). /* start is a dummy value used to get

the looping process started.*/

loop(end).

loop(X):-X\=end,write(‘Type end to end’),read(Word),

write(‘Input was ‘),write(Word),nl,loop(Word).

Atau dengan menggunakan operator disjungsi

loop:-write(‘Type end to end’),read(Word),

write(‘Input was ‘),write(Word),nl,

(Word=end;loop).

Tampilan prolog

?- go.

Type end to end: university.

Input was university

Type end to end: of.

Input was of

Type end to end: portsmouth.

Input was portsmouth

Type end to end: end.

Input was end

yes

Menggunakan predikat ‘repeat’

Selain dengan rekursi, metode lain yang bisa digunakan adalah dengan predikat ‘repeat’. Namun, tidak seperti namanya, ‘repeat’ (mengulang) tidak mengulang sesuatu. Dia hanya mengulang satu proses saja sampai suatu kondisi yang ditentukan terpenuhi.

Contoh program:

get_married(Ans):-

write(‘Pertanyaan : Mau nikah sama saya?’),nl,

repeat,write(‘Jawablah dengan mau atau ngga_nolak: ‘),read(Ans),

valid(Ans),nl,write(‘Hore !! dia ‘),write(Ans),write(‘ nikah sama saya’),nl.

valid(mau). valid(ngga_nolak).

Ouputnya adalah

1 ?- get_married(X).

Pertanyaan : Mau nikah sama saya?

Jawablah dengan mau atau ngga_nolak: ngga.

Jawablah dengan mau atau ngga_nolak: pikir-pikir.

Jawablah dengan mau atau ngga_nolak: mau_deh.

Jawablah dengan mau atau ngga_nolak: mau.

Hore !! dia mau nikah sama saya

X = mau

Klausa “Jawablah dengan mau atau ngga_nolak” akan selalu keluar hingga user menjawab ‘mau’ atau ‘ngga_nolak’.

Pengecekan mundur dengan fungsi “failure”.

Sesuai dengan namanya, predikat ‘fail’ selalu gagal, baik dalam evaluasi standar dari kiri ke kanan maupun dalam pengecekan mundur.

Mencari database prolog

Predikat ‘fail’ berfungsi untuk melakukan perulangan (looping) sampai menemukan semua klausa dengan sifat-sifat tertentu yang berada dalam database. Contoh:

Database prolog:

dog(fido).

dog(fred).

dog(jonathan).

alldogs:-dog(X),write(X),write(‘ is a dog’),nl,fail./*syntax*/

Alldogs.

Outputnya adalah:

?- alldogs.

fido is a dog

fred is a dog

jonathan is a dog

yes

Menemukan beragam solusi

Pengecekan mundur menggunakan ‘failure’ juga dapat digunakan untuk mencari semua cara dalam mencapai suatu tujuan. Misalkan sebuah predikat ‘carirute(kota1,kota2,rute), maka pengecekan mundur menggunakan ‘failure’ dapat digunakan untuk menentukan semua rute yang memungkinkan dari dua kota tersebut dan ditulis dalam baris yang berbeda.

Looping_1

Asalamualaikum…..Selamat berjumpa kembali pada tutorial mingguan(ehm….maksudnya). Kali ini kita akan mencoba membahas penggunaan Prolog dalam Looping.

Salah satu contoh soalnya adalah menghasilkan nilai pangkat dua (kuadrat) dari dua buah bilangan dengan nilai bawah (N1 = 6) sampai dengan nilai atas (N2 = 12).

Bagaimana prosedur pengoperasiannya dalam Prolog? Seperti biasa kita buat dulu coodingannya he5…. Berikut ini adalah contoh coodingnya :

output(N1,N2) :-N1>N2.

output(N1,N2) :- write(‘ kuadrat dari ‘),write(N1),write(‘ adalah ‘),Kuadrat is N1*N1,write(Kuadrat),nl,M is N1+1,output(M,N2).

Apa sih maksud cooding ini? Begini penjelasannya :

output(N1,N2) :-N1>N2.

Baris di atas maksudnya memberikan aturan bahwa nilai N1 lebih kecil dari nilai N2….. Ooooo begitu ya… trus baris ke dua maksudnya apa?

output(N1,N2) :- write(‘ kuadrat dari ‘),write(N1),write(‘ adalah ‘),Kuadrat is N1*N1,write(Kuadrat),nl,M is N1+1,output(M,N2).

Baris ke dua ini maksudnya output dari (N1,N2) ini adalah “kuadrat dari”, nilai N1,” adalah” lalu kita definisikan nilai kuadrat adalah N1*N1, lalu untuk nilai N2 merupakan hasil dari N1+1 hingga mencapai batasan atas yaitu N2=12 (nah disinilah fungsi loopingnya).

Untuk lebih jelasnya lebih enak langsung kita praktekan saja ke dalam Prolog. Seperti biasa kita tulis coodingannya di dalam notepad dan nanti di simpan dengan format namafile.pl seperti contoh pada gambar di bawah ini :

Nah kalau sudah selesai dan disimpan lalu kita coba consult ke dalam Prolog, lalu kita ujicoba coodingannya (moga-moga berhasil……) dengan cara mengetikkan :

Output(6,12).

Jangan lupa menambahkan “.” Nanti gagal lho kalau lupa, kalau berhasil maka hasilnya akan seperti gambar di bawah ini :

Alhamdulilah…. Ternyata berhasil he5……. Lanjut ke soal berikutnya yuk…

Looping_2

Di sini kita juga masih menggunakan looping dalam prolog, dengan input-an user sebagai batas bawah dan baris baru ataupun? sebagai batasan atas. Nilai yang akan diharapkan muncul adalah nilai sebelum batas atas.

Nah sekarang saatnya mencoba soal kedua yaitu bagaimana caranya membuat dan mencoba predikat agar mampu membaca serangkaian karakter yang di input oleh user dengan hasil berupa semua inputa-an sebelum dimulai baris baru ataupun sebelum “?”. Baris baru ini bisa diartikan sebagai blank character jika dalam ASCII nilainya adalah 13, sedangkan ? dalam ASCII code memiliki nilai 63.

Bagaimana caranya? Mari kita buat coodingannya :

go:- repeat,get0(X),stop(X).

stop(13):- nl.

stop(63):- nl,repeat,get0(X),X=:=13.

stop(X):- put(X),fail.

Apasih maksudnya coodingannya? Begini maksudnya sob :

Baris pertama artinya get0(X) mendapatkan nilai inputan yaitu (X) yang akan di ulang dan akan berhenti dengan nilai (X). Lalu pada baris kedua dan ketiga artinya proses akan berhenti apabila user memasukkan blank character / baris baru atau tanda “?” dan pada baris ke empat program akan menampilan nilainya, nilai yang akan di ambil adalah nilai sebelum user memasukkan karakter-karakter tersebut.

Nah sekarang kita lakukan perekaman cooding tersebut ke dalam prolog dengan format namafile.pl seperti contoh pada gambar di bawah ini :

Setelah itu, kita masukkan coodingan tersebut dalam Prolog melalui consult,

Lalu saatnya kita lakukan ujicoba terhadap coodingan yang kita buat  dengan cara mengetikkan :

go.

Jika tidak ada masalah kita lanjutkan dengan mengetikkan sebuah kalimat atau nama atau sebarang.

Motor.

Kita lihat hasilnya, jika tidak ada masalah lalu kita lanjutkan dengan mengetikkan dua kalimat yang dibatasi dengan “?” antara dua kalimat tersebut seperti :

Honda?Yamaha.

He5 bila tidak ada masalah maka hasil akhirnya adalah seperti pada gambar di bawah ini :

Nah dari gambar di atas sudah dapat dilihat bahwa setelah user memilih untuk memasukkan baris baru maka nilai yang di munculkan adalah nilai sebelum user memilih baris baru, dan nilai yang dihasilkan pada saat user melakukan input data dua kalimat yang dibatasi dengan “?” maka nilai yang di hasilkan adalah nilai sebelum “?”. Berarti…… Alhamdulilah….. berhasil kembali…. Huf…huf…huf….. Selanjutnya kita coba soal ke tiga he5….. masih ada toh?

Looping_3

Kembali berjumpa di soal yang ketiga, seperti apa ya soal ketiga ini…jadi penasaran…he5…..

Tugas ketiga adalah :

Menentukan profesi dari klausa yang diberikan dengan syarat usia di atas 40 tahun. Klausanya sendiri adalah sebagai berikut :

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

Terus…terus…terus….bagaimana coodingnya? Begini rumusnya :

profesi:-person(_,_,Usia,_,Prof),Usia>40,write(‘Profesi untuk usia di atas 40 tahun adalah ‘),write(Prof),nl,fail.

profesi.

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

Penjelasannya adalah sebagai berikut :

Kita membagi dalam dua bagian utama yaitu pemroses dan klausa. Pemroses menyatakan untuk mencari profesi dari klausa person dimana data yang di ambil adalah usia dan profesi dengan batasan umur di atas 40 tahun. Mengerti kan maksudnya? Semoga mengerti….. he5  Untuk lebih jelasnya langsung kita coba saja.

Kita buat dulu aturan dan klausa tersebut dalam notepad dengan format penyimpanan namafile.pl seperti pada gambar di bawah ini :

Kemudian kita masukkan ke prolog melalui consult :

Kemudian kita coba jalankan dalam prolog dengan kata kunci :

profesi.

Jika berhasil maka hasilnya adalah seperti gambar di bawah ini :

Alhamdulilah….berhasil…… kalau begitu sampai di sini dulu ya sob, jumpa lagi di lain waktu dan kesempatan ya. Selamat belajar…..!!!!!!!!!!

Prolog menyediakan fasilitas untuk menampilkan output dan menginput suatu pernyataan (term) atau karakter baik melalui keyboard maupun dari media lain seperti hard disk atau CD-ROM. Penjelasan mengenai hal tersebut akan kami bahas dalam postingan kali ini.

v   Menampilkan output pernyataan

Untuk menampilkan output berupa pernyataan dapat digunakan predikat bawaan dari prolog, yaitu write, writeq, dan nl. Predikat write/1 (satu argumen) digunakan untuk menampilkan output tanpa tanda petik. Predikat writeq sama dengan predikat write, hanya saja writeq menampilkan pernyataan dengan disertai tanda petik (quote), kecuali jika pernyataan yang ditulis hanya satu kata saja, maka tanda petik tidak tertampilkan. Sedangkan predikat nl/0 (tanpa argumen) berfungsi sama dengan tombol enter, yaitu untuk membuat baris baru (new line).

Contoh penggunaan dari predikat-predikat tersebut adalah sebagai berikut.

1 ?- write(‘matdis itu asik’).

matdis itu asik

Yes

2 ?- writeq(‘hati-hati’).

‘hati-hati’

Yes

3 ?- writeq(‘hati’).

hati

Yes

4 ?- writeq(‘hati-hati dengan hati’).

‘hati-hati dengan hati’

Yes

5 ?- write(‘maju terus pantang mundur’),nl,nl,writeq(‘mundur terus kapan majunya?’).

maju terus pantang mundur

‘mundur terus kapan majunya?’

Yes.

v   Input pernyataan

Predikat yang digunakan untuk menginput pernyataan adalah read/1 yang membutuhkan satu argument, yang harus berbentuk variable.. Pada inputan yang berasal dari keyboard,  biasanya muncul tampilan karakter prompt seperti tanda titik dua(:), yang berarti dibutuhkan inputan dari user. Nilai dari pernyataan yang kita inputkan akan diberikan kepada variable argument. Jika variable argument sudah diberikan nilai sebelumnya, maka goal akan tercapai hanya jika nilai yang diinput sama dengan nilai awalnya.

1 ?- read(X).

|: 1000.

X = 1000

Yes

2 ?- read(Y).

|: ‘jika ini maka itu’.

Y = ‘jika ini maka itu’

Yes

3 ?- X=joko,read(X).

|: joko.

X = joko

Yes

v   Input dan output menggunakan karakter

Untuk problem seperti membaca sebuah seri karakter dari keyboard dan menghitung jumlah huruf hidupnya, akan lebih efektif jika menggunakan input sebuah karakter. Untuk melakukan hal tersebut kita harus terlebih dahulu mengetahui nilai ASCII untuk sebuah karakter. Semua printing karakter dan non-printing karakter (spasi, tab) mempunyai hubungan dengan nilai ASCII, yaitu bilangan bulat dari 1 sampai 255.

Tabel berikut menggambarkan nilai angka ASCII untuk beberapa karakter utama.

v     Menampilkan Output Karakter

Menampilkan Output Karakter digunakan dalam predikat put/1. Predikat ini menggunakan satu argumen, dengan nilai berupa angka antara 0 – 255 atau pernyataan yang memiliki nilai integer sesuai batasan tadi.Penggunaan tujuan put menghasilkan sebuah karakter yang merupakan output dari urutan output. Karakter ini berhubungan dengan nilai numerik (nilai ASCII) dari argumen yang digunakan

Contoh :

?- put(97),nl.

a

yes

?- put(122),nl.

z

yes

kedua contoh di atas merupakan output dari nilai 97 dan 122. Seperti kita ketahui dalam ASCII nilai 97 dan 122 merupakan nilai untuk huruf a dan z.

v        Menginput Karakter

get0/1 dan get/1 merupakan predikat yang disediakan untuk melakukan input sebuah karakter. Predikat get0 memerlukan sebuah argumen yang variatif. Tujuan pengggunaan get0 adalah untuk membaca karakter yang d input dari sebuah urutan penginputan. Variabel inilah yang nantinya akan disatukan dengan nilai ASCII dari karakter tersebut.

Pertama kita asumsikan bahwa variabel dari argumen ini tidak terikat, nantinya variabel argumen akan terikat sesuai dengan nilai ASCII dari karakter yang diinput.

Contoh :

?- get0(N).

: a

N = 97 % nilai N merupakan nilai ASCII dari huruf a (kecil)

?- get0(N).

: Z

N = 90

Jika variabel dari argumen tersebut sudah terikat, maka tujuan akan berhasil jika dan hanya jika nilai numeriknya sama dengan nilai ASCII dari karakter yang di input.

Sebahai contoh :

?- get0(X).

: a

X = 97

?- M is 41,get0(M).

: )

M = 41 % karena nilai M sudah ditentukan 41 maka hasil nilai dari hasil inputan akan tetap sesuai dengan nilai dari M

?- M =dog,get0(M).

: )

No     % nilai dari “)” tidak terdefinisikan karena nilai M sudah ditentukan yaitu “dog” dan dog ini bukan merupakan nilai integer antara 0 – 255.

Predikat get yang menggunakan sebuah argumen, yang berupa sebuah variabel. Penggunaan predikat get0 dalam goal menyebabkan karakter bukan white-space (karakter dengan nilai ASCII kurang dari atau sama dengan 32) dibaca dari urutan input.

Sebagai contoh :

?- get(X).

: Z

X = 90

?- get(M).

:       Z

M = 90       % walaupun menggunakan “spasi” dalam melakukan input, nilai yang tetap dibaca adalah nilai dari huruf “Z”.

Penggunaan predikat readin bersifat rekursif.  Untuk contohnya adalah sebagai berikut :

readin :- get0(X),process(X).

process (42).

Process(X) : – X=\=42, write(X),nl,readin.

Jika kita lakukan inputan di atas maka akan menghasilkan

?- readin..

: Prolog Examples* % karakter yang akan dibaca

80

114

111

108

103

32

69

120

97

109

112

108

101

yes

Dari contoh di atas dapat kita lihat bahwa proses yang dilakukan untuk (process (X)) tergantung dari ada tidaknya nilai X yang memiliki nilai 42( hal ni ditandai dengan penggunaan karakter “*”) dari inputan yang dilakukan. Jika memiliki nilai tersebut, maka pencarian untuk tujuan selesai sampai tanda “*” tersebut, apabila tidak maka proses akan tetap berjalan sampai ditemukan karakter “*”.

v        File Output : Merubah Urutan Outpus Saat Ini

Menggunakan :

  • tell/1, misal tell(‘outfile.txt’)
  • told

default-nya: user

built-in:

  • told/0, tanpa argumen, menyebabkan file output ditutup dan kembali ke user
  • telling/1, tanpa argumen, menyebabkan variabel menjadi terikat dengan nama file

v        File Input : Merubah Urutan Input Saat Ini

Menggunakan:

  • see/1, misal see(‘myfile.txt’)
  • seen

default-nya: user

built-in:

  • seen/0, tanpa argumen, menyebabkan file output ditutup dan kembali ke user
  • seen/1, tanpa argumen, menyebabkan variabel menjadi terikat dengan nama file

Membaca Dari File: End Of File

Jika pada saat menjalankan perintah read(X) terjadi kegagalan maka variabel X akan menjadi terikat dengan atom end_of_file.

Jika pada saat menjalankan perintah get(X) atau get0(X) terjadi kegagalan maka variabel X akan menjadi terikat dengan nilai berupa angka tertentu.

Membaca dari File : End Of Record

Pada End of Line diindikasikan dengan karakter ASCII bernilai 13, sedangkan End of Record diindikasikan dengan 2 buah nilai karakter ASCII bernilai 13 diikuti oleh 10

Contoh:

readline:-get0(X), process(X).

process(13).

Process(X):–X=\=13, put(X), nl, readline.

Contoh Penggunaan File (mengacu pada penggunaan karakter)

Tentukan sebuah predikat copychars untuk menyalin karakter input (sebagai sebuah baris tunggal) pada user’s terminal untuk file tertentu, sampai karakter ! dimasukkan (karakter ini
tidak boleh disalin).

Pada program di bawah ini, fungsi utama copychars adalah menyimpan dan mengembalikan nilai-nilai pada aliran input dan output terakhir. Sisa tugas yang tersisa untuk copy_characters,
yang didefinisikan secara rekursif dengan cara yang mirip dengan readin dalam contoh di atas.

copychars(Outfile):- telling(T),tell(Outfile),
copy_characters,told,tell(T).
copy_characters:-get0(N),process(N).
/*     33 is ASCII value of character ! */
process(33).
process(N):-N=\=33,put(N),copy_characters.

Menggunakan copychars seperti contoh berikut

?- copychars(‘myfile.txt’).

: abxyz!

Yes
akan menempatkan karakter abxyz dalam file myfile.txt.

Berikut ini adalah salah satu contoh tugas, yang bernama makelower. Disini kita akan mencoba mengubah dari huruf besar menjadi huruh kecil

This is an Example 123 inCLUDing numbers and symbols +-*/@[]XYz

sebelumnya yang perlu kita lakukan adalah membuat file makelower.pl dahulu, di dalam file ini berisi aturan / rule untuk mengubahnya. berikut ini adalah rule yang akan kita buat :

makelower :- get0(X),process(X).

process(13).

process(X) :- X=\=13,case(X,Y),put(Y),makelower.

case(X,Y) :- 64 < X, X < 91, Y is X + 32.

case(X,Y) :- Y is X + 0.

Berikut ini adalah tampilan aturan / rule dalam notepad

Seperti biasa rule yang sudah kita buat lalu kita simpan dengan ekstensi .pl.

Setelah berhasil disimpan maka langkah selanjutnya adalah meng-consult file makelower.pl tadi ke dalam program PROLOG. Bila berhasil maka akan seperti gambar di bawah ini :

langkah berikutnya adalah mencoba aturan/rule yang kita buat tadi apakah berhasil atau tidak. Untuk mencobanya maka kita ketikkan perintah / command makelower. di PROLOG

Setelah meng-input perintah tadi lalu kita tekan tombol Enter dan kita lanjutkan dengan melakukan input terhadap kata/kalimat yang akan kita ubah menjadi lower case. Berikut ini adalah contoh kata/kalimatnya :

This is an Example 123 inCLUDing numbers and symbols +-*/@[]XYz

Setelah itu kita tekan kembali tombol Enter dan coba kita lihat hasilnya, apabila berhasil maka hasilnya akan seperti gambar di bawah ini :
Alhamdulilah, berhasil…… he5

Pada postingan terdahulu kita sudah pernah membahas mengenai sistem pakar, yaitu program yang dapat membantu kita menyelesaikan masalah layaknya seorang pakar dalam bidang tertentu, seperti kedokteran, pajak, psikologi, dan lain-lain. Dalam postingan kali ini kami mencoba menampilkan sebuah contoh sederhana dari penerapan sistem pakar dalam bidang kedokteran, yaitu diagnosis penyakit berdasarkan gejala-gejala dan beberapa solusi untuk penyembuhannya. Dalam keseharian kita, terdapat beberapa penyakit dengan gejala yang hampir mirip, sebagai contoh influenza, tipus, dan maag. Untuk dapat melakukan diagnosis dengan benar, terlebih dahulu kita harus mengetahui gejala-gejala dari penyakit tersebut. Beberapa gejala yang mungkin timbul dari ketiga jenis penyakit tersebut adalah sebagai berikut:

  1. Kepala pusing;
  2. Suhu badan tinggi;
  3. Batuk dan pilek;
  4. Badan lemas;
  5. Demam lebih dari tiga hari;
  6. Hasil cek darah menunjukkan positif salmonella paratipii
  7. Nyeri pada ulu hati;
  8. Nyeri pada lambung.

Sedangkan obat yang kami sarankan sebagai solusi untuk mengobati penyakit tersebut meliputi:

  1. Paracetamol;
  2. Antibiotik;
  3. Multivitamin;
  4. Obat anti mual;
  5. CTM (obat tidur).

Dari gejala-gejala tersebut kita dapat mengambil kesimpulan sebagai berikut :

  • Jika gejala yang timbul adalah 1, 2, dan 3 maka dia menderita influenza dan solusi obatnya adalah a, b, dan c.
  • Jika gejala yang timbul adalah 1, 4, 5, dan 6 maka dia menderita tipus dan solusi obatnya adalah a, b, c, d, dan e.
  • Jika gejala yang timbul adalah 1, 7, dan 8 maka dia menderita maag dan solusi obatnya adalah a, b, c, dan d.

Dengan menggunakan sistem pakar ini kita dapat melakukan diagnosis penyakit influenza, tipus, dan maag sehingga kita dapat melakukan pertolongan pertama pada penderita penyakit tersebut.

Kali ini kita akan mencoba untuk menggunakan Prolog dalam mengitung operasi Aritmatika. Seperti yang sudah dijelaskan sebelumnnya, program Prolog ternyata dapat juga digunakan untuk melakukan operasi aritmatika. Berikut ini kami berikan beberapa contoh dasar operasi artimatika dalam Prolog.

1. Penjumlahan dua bilangan

Untuk contoh ini kita gunakan dua argumen berupa angka yang akan dijumlahkan, misalkan X = 48 dan Y = 36. Kalau dijumlahkan melalui prolog seperti apa hasil dan bagaimana caranya? Perhatikan contoh dibawah ini :

penjumlahan_1operasi aritmatikanya terdapat pada argumen Z is X+Y,  hasilnya dapat dilihat pada baris dibawahnya yaitu nilai X = 48, nilai Y = 36 dan nilai Z (merupakan hasil penjumlahan X dan Y) = 84.

 

2. Menghitung nilai rata-rata.

Kembali kita menggunakan nilai yang sama seperti pada penjelasan mengenai penjumlahan yaitu X=48 dan Y=36. Nilai rata-rata didapatkan dengan menjumlahkan kedua bilangan kemudian membaginya sesuai dengan banyaknya bilangan yang dijumlah. Untuk lebih jelasnya kita lihat gambar dibawah ini :

rata-rata1dapat kita lihat bahwa nilai rata-rata dari 48 dan 36 adalah 42..

 

3. Akar suatu bilangan

Prolog juga dapat digunakan utnuk menghitung akar dari suatu bilangan, operator aritmatika yang digunakan adalah sqrt(X) dimana X merupakan nilai bilangan yang akan dicari akarnya. Untuk lebih jelasnya kita lihat gambar di bawah ini :

akar1di sini kami kembali menggunakan nilai X dan Y yang sama dan Z merupakan nilai akar dari penjumlahan X dan Y.

 

4. Mencari nilai yang terbesar antara dua bilangan.

Prolog juga bisa digunakan untuk menentukan nilai terbesar dari dua bilangan atau lebih. Operator aritmatika yang digunakan adalah max(X,Y) untuk contoh lebih jelasnya dapat dilihat pada gambar dibawah ini :

terbesar1sebagai contoh kami menggunakan nilai X dan Y yang sama dengan operasi sebelumnya, yaitu X=48 dan Y=36. Setelah dilakukan operasi aritmatikanya maka dapat diperoleh nilai terbesar adalah X yaitu 48..

 

Sekian dulu gambaran sederhana dari kami mengenai pengenalan penggunaan Prolog dalam operasi Aritmatika. Semoga dapat membuka wawasan dan menambah ilmu kita. Sekian dan terimakasih.

Older Posts »

Follow

Get every new post delivered to your Inbox.