RSS

Input and Output in Prolog (Number 5)

Soal 5

Pertama-tama, kita membuat new file pada notepad dengan inputan seperti pada gambar dibawah ini. Kemudian, simpan dengan nama masuk1.txt (format tetap .txt)


Kedua, kita membuat new file lagi pada notepad dengan inputan berbeda seperti pada gambar dibawah ini. Kemudian, simpan gambar dengan nama masuk2.txt


Setelah itu, mulai membuat masukkan untuk menjalankan prolog pada notepad dengan inputan seperti gambar dibawah ini guna menjalankan compare. Kemudian, simpan dengan nama comp.pl

Buka SWI-Prolog dan jalankan program compare dengan, membuka file comp.pl dari folder anda menyimpannya. Dan open with ... plwin

Kemudian barulah kita ketikkan perintah berikut pada prolog :

?-compare('c:/Users/.../matdis/masuk1.txt','c:/Users/.../matdis/masuk2.txt').

ENTER

Maka mumcullah gambar seperti gambar dibawah ini



Input and Output in Prolog (Number 4)

Soal 4

Pertama, kita membuat 2 new file format .txt di notepad

- FILE in1.txt, kita berikan masukan data sebagai berikut :

first.
second.
third.
fourth.
'fifth and last'.
end.

- FILE  in2.txt, kita berikan masukan data sebagai berikut :

alpha.
beta.
gamma.
omega.
end.

Berikut salah satu tampilan file yang tersebut di atas


Kemudian, kita membuat prolog terlebih dahulu pada notepad untuk menggunakan formula compare. Seperti gambar di bawah ini, kemudian disimpan dengan nama :  fungsi.pl


Setelah itu, mari kita menjalankan program compare di atas, dengan mengetikkan :

?-compare('C:/.../matdis/in1.txt','C:/.../matdis/in2.txt','C:/.../matdis/out3.txt').

ENTER 

akan muncul kata          Yes, seperti  gambar di bawah ini


Setelah itu, silahkan anda buka folder anda menyimapan file otput tadi, maka akan ada file baru seperti gambar di bawah ini : out3.txt

Input and Output in Prolog (Number 3)

Soal 3

Pertama kita menuliskan data seperti dibawah ini pada notepad


Kemudian, disimpan dengan nama testa.txt

Selanjutnya tulis formula readfile pada notepad seperti dibawaha ini

Kemudian disimpan dengan nama abc.pl

Barulah, kita bisa menjalankan fungsi ABC pada SWI-Prolog

Buka prolog kemudia ketik

?-readfile('C:/.../matdis/testa.txt').      

Kemudian ENTER , muncul hasil seperti gambar dibawah ini

Input dan Output in Prolog (Number 1 and 2)

Soal 1

Kita membuka notepad dan memasukkan langkah-langkah prolog di dalamnya, seperti gambar di bawah ini

 

kemudian disimpan dengan nama dan format gakgak

Buka SWI-Prolog dan jalankan fungsi makelower  

sehingga muncul tampilan seperti gambar di bawah ini



Soal 2

Pertama, kita memasukkan input  di notepad . Kemudian, disimpan dengan nama tes1.txt (format simpan tetap txt) di Local Disk C, seperti gambar di bawah ini :



Kemudian buka Prolog, dan jalankan fungsi copyterms seperti gambar dibawah ini, maka akan keluar output.txt secara langsung




 


Input dan Output in Prolog (Exercise)

Soal 1

1. Kita membuka notepad dan memasukkan langkah-langkah prolog di dalamnya, seperti gambar di bawah ini

makelower:-ubah(Y).
ubah(Y):-get0(X), process(X).
process(13):-nl.
process(X):-X=\=13,asik(X,Y),put(Y),makelower.
asik(X,Y):-X>64,X<91,>
asik(X,Y):-X<65,x>90, Y is X+0.

kemudian disimpan dengan nama dan format gakgak.pl

2. Buka SWI-Prolog dan jalankan fungsi makelower
kemudian, ketikkan berikut pada prolog

?- makelower. kemudian ENTER

sehingga muncul tampilan seperti gambar di bawah ini




Soal 2



Input dan Output in Prolog (Resume)

OUTPUTTING

Fungsi untuk mencetak ouput dengan write/1 atau writeq/1.
Perbedaan write/1 dan writeq/1 :
- write/1 : membutuhkan tanda ' __ ' , dimana setiap otuput yang akan dicetak harus diawali dan diakhiri petik satu(')
- writeq/1 : untuk mencetak ouput kita tidak perlu membuhkan tanda petik satu (') di awal dan akhir

Contoh :

?- write('a string of characters'),nl.
a string of charactersyes

?- writeq(a string of characters),nl.
a string of charactersyes

INPUTTING TERM

Predikat built-in read/1 yang digunakan untuk memasukkan inputan dimana input tersebut merupakan satu argumen dan berjenis variabel.

contoh : (ketik langsung pada program prolog)
?- read(X).
: jim.
X = jim ---> hasil output setelah ENTER

?- X=fred,read(X).
: jim.
no
----> menunjukkan bahwa input tidak sesuai dengan syarat yang telah diinputkan sebelumnya

INPUT AND OUTPUT USING CHARACTERS
Disini nilai input dan output menggunakan input bantuan nilai dari karakter yang ada pada aturan ASCII (American Standard Code for INformation tab), dimana integer dimulai dari 0 hinggga 225.

OUTPUTTING CHARACTER
Untuk mengeluarkan output dengan karakter yang dicocokkan dengan ketentuan ASCII. Atau bisa dikatakan sebagai mengkonversi nilai angka decimal --> karakter yang sesuai berdasarkan ketentuan ASCII.
Formula yang digunakan untuk menjalankan output karakter adalah put/1.
Contoh:
?- put(97),nl.
a
yes
// disini menunjukkan bahwa kita mengingikan output karakter yang bernilai desimal 97 pada ASCII, maka 'a' tercetak

INPUTTING CHARACTHERS
Ada 2 macam predikat built-in untuk inputan karakter : (1) get0/1 ; (2) get/1.
Input karakter bisa dikatakan sebagai menkonversi sebuah karakter --> nilai angka desimal sesuai dengan ketentuan ASCII.
Contoh :
?- get0(N). // N ; sebagai bantuan permisalan saja (jadi)
: Z // karakter yang ingin dikonversi
N = 90 // hasil konversi atau?- M is 41,get0(M).: )M = 41

Inovasi dengan Expert System

Gagasan kami untuk penerapan Expert System adalah sebagai berikut:

Identifikator 4 Tipe Karakter Manusia

Latar Belakang :
Sifat atau karakteristik manusia sangatlah dinamis. Sifat tersebut dapat mempengaruhi softskill serta interaksi antarmanusia(kehidupan sosial). Softskill merupakan bagian terpenting dalam mempengaruhi kehidupan manusia. Akan tetapi banyak orang yang belum mengetahui bagaimana mengembangkan softskill melalui cara identifikasi dari sifat-sifat bawaan. Oleh karena itu kami ingin mengulas tema ini beserta fact (ciri-ciri sifat) dan kategori tipe menurut sifatnya.

Manfaat:
  • Untuk pengembangan softskill
  • Untuk Pengembangan keterampilan interpersonal serta intrapersonal
Ulasan ide :
1. Tipe Sanguinis :
  • Penuh kehidupan
  • ceria
  • jiwa sosial
  • mempesona
  • refreshing
  • bersemangat
  • promotor
  • optimis
  • humoris
  • menyenangkan
  • inspiring
  • demontrativ
  • suka bicara
  • kuat
  • pusat perhatian
  • populer
  • penuh tenaga
  • suka pamer
  • kurang disiplin
  • cerewet
  • ingatan lemah
  • tidak suka mendengar
  • tidak terprediksi
  • tidak konsisten
  • permissive
  • angered easily
  • naive
  • suka penghargaan
  • talkative
  • tidak terorganisir
  • tidak teratur
  • ingin dilihat
  • suara keras
  • sulit konsentrasi
2. Tipe koleris
  • berani
  • persuasive
  • percaya diri
  • competitive
  • tindak efektif
  • mandiri
  • positive
  • spontaneous
  • out spoken
  • mendominasi
  • siap menanggung resiko
  • mover
  • keras kepala
  • pemimpin
  • produktif
  • tangguh
  • suka memerintah
  • tidak simpati
  • resistant
  • tidak sungkan
  • tidak sabar
  • unaffecionate
  • agresif
  • tidak berperasaan
  • tidak toleransi
  • memanipulasi
  • sulit dibujuk
  • tidak ragu-ragu
  • emosional
  • tergesa-gesa
  • cerdik
3.Tipe melankolis :
  • analitical
  • menuntaskan pekerjaan
  • rela berkorban
  • menghargai
  • menghormati
  • sensitive
  • planner
  • terjadwal
  • ingatan jernih
  • metodis
  • sistematis
  • setia
  • konsisten
  • artistik
  • idealistic
  • musical
  • tanggap
  • chartmaker
  • perfectionist
  • menghindari perhatian
  • pendendam
  • mudah tersinggung
  • pekerja keras
  • kurang percaya diri
  • tidak populer
  • berpikir negatif
  • merasa tertekan
  • tertutup
  • moody
  • sulit percaya
  • penyendiri
  • critical
4. Tipe plegmatis
  • adaptif
  • tenang
  • pendengar setia
  • controlled
  • pandai menahan emosi
  • penerima keadaan
  • sabar
  • pemalu
  • rendah diri
  • kurang inisiatif
  • penuh siasat
  • perasa
  • konsisten
  • mudah puas
  • jarang iri
  • mudah bergaul
  • terbuka
  • stabil
  • tidak bergairah
  • khawatir
  • gelisah
  • sulit mengambil keputusan
  • kurang sosialisasi
  • lambat
  • kurang emosi
  • datar
  • tidak peduli
  • terganggu
  • tidak tanggung jawab
  • tidak percaya diri
  • bicara pelan
  • tidak cekatan
  • perlu motivasi
  • menghindari konflik

Operators and Arithmetic in Prolog (Exercis)

SOAL NO. 1

Pertama-tama kita membuka Notepad , kemudian ketik seperti di bawah ini :



Lalu, disimpan dengana nama exercise-4-1.pl
Kemudian, buka program SWIG Prolog, dan ketik

?-X chases Y.


lalu, Consult dengan file exercise-4-1.pl




dan hasilnya seperti di bawah ini






SOAL NO. 2

1. Jawaban soal 2.a , membuat dua argumen kemudia mencari rata-rata mereka

?-X is 49, Y isa 25, A is X+Y, B is A/2.

kemudian Enter, dan muncul

X=49
B=25
A=74
B=37

2. Jawaban soal 2.b, mencari akar dari masing-masing argumen tersebut.

?-X is 49, Y isa 25, A is sqrt(X), B sqrt(Y).


kemudian Enter, dan muncul

X=49
B=25
A=7
B=5

3. Jawaban soal 2.c, mencari argumen terbesar dari keduanya,

?-X is 49, Y isa 25, A is max(X,Y).

kemudian Enter, dan muncul

X=49
B=25
A=49

Operator ann Arithmetic in Prolog (Resume)

Operators

• Sampai sekarang notasi digunakan sebagai predikat dan standart nama predikat diikuti oleh beberapa argumen dalam tanda kurung. Contoh : likes(john,mary).
• Sebagai alternatif, banyak pengguna yang mendefiisikan predikat dengan dua argumen (binary predicate) yang dapat dikonversikan ke dalam infix operator. Nama predikat ditulis diantara dua argumen tanpa tanda kurung. Contoh : john likes mary
• Beberapa pengguna mendsefinisikan predikat dengan sebuah argumen yang dapat dikonversikan kedalam prefix operator. Nama predikat ditulis sebelum argumen tanpa tanda kurung.
Contoh : isa_dog fred
Sebagai pengganti
isa_dog (fred)
• Sebagai alternatif , unary predicate dapat dikonversikan kedalam postfix operator. Nama predikat ditulis setelah argumen. Contoh : fred isa_dog
• Notasi operator dapat digunakan dengan peraturan untuk membantu memudahkan membaca. Beberapa peraturannya adalah :
o likes(john,X):-is_female(X),owns(X,Y),isa_cat(Y).
Lebih mudah dibaca jika ditulis :
john likes X:- X is_female, X owns Y, Y isa_cat.
• Standart notasi nama predikat dan argumen dalam kurung, seprti likes(john,X) dapat digunakan dengan operator jika lebih disukai.
• Perpaduan notasi juga diizinkan
Contoh : jika likes/2, is_female/1, owns/2 and isa_cat/1 semuanya adalah operator
Maka likes(john,X):-is_female(X),X owns Y,isa_cat(Y)adalah bentuk yang valid dari peraturan yang sebelumnya.
• Beberapa pengguna mendefinisiakan predikat dengan satu atau dua argumen yang dapat dikonversikan kedalam operator dengan menggunakan predikat op pada sistem prompt. Predikat ini memerlukan tiga argumen.
Contoh : ?-op(150,xfy,likes).
o Argumen pertama adalah ‘operator precedence’, yaitu integer mulai 0 keatas.
 Jarak angka yang digunakan tergantung implementasi khusus.Lebih rendah dari angka, lebih tinggi dari precedece.
 Operator precedence value digunakan untuk menentukan operator yang akan digunakan ketika lebih dari satu digunakan dalam sebuah istilah.
 Yang paling penting digunakan adalah operator untuk aritmatika.
o Argumen kedua merupakan argumen yang biasa digunakan dari ketiga argumen, yaitu:
 xfy => predikat binary dan dikonversikan ke infix operator
 fy => predikat unary dan dikonversikan ke prefix operator
 xf => predikat unary dan dikonversiakan ke postfix operator
o Argumen ketiga merupakan spesifikasi nama dari predikat yang dikonversikan kedalam operator.

• Predikat dapat juga dikonversikan kedalam operator dengan mengubah seperti:
o ?-op(150,xfy,likes).
• Dalam program prolog file akan diproses menggunakan consult atau reconsult. Prompt (karakter ?-) harus ada. Directive harus ditempatkan di file sebelum clausa pertama yaitu operator likes.
• Beberapa pembangun predikat telah didefinisikan sebagai operator, seperti : relational operator untuk membandingkan data numeric, yaitu <‘kurang dari’ dan > ‘lebih dari’.
Contoh : X>4
Y(X,4)sebagai pengganti X>4

Arithmetic

• Penggunaan predikat is/2 yang didefinisikan sebagai infix operator dan ditulis diantara dua argumen. Penggunaan yang umum adalah argumen pertama merupakan bound variabel.
Contoh : X is -6.5
 X adalah bound angka -6.5
• Argumen kedua dapat berupa angka atau tanda aritmatik.
Contoh : X is 6*Y+Z-3.2+P-Q/4
 Eksekusi akan berhasil dan variabel yang membentuk argumen pertama akan menjadi bound dari hasil operasi aritmatika. Jika tidak akan terjadi error.
• ?- X is 10.5+4.7*2.
X = 19.9
?- Y is 10,Z is Y+1.
Y = 10 ,
Z = 11
o Simbol-simbol seperti + - * / dalam operasi aritmatika termasuk infix operator yang diketahui sebagai operator aritmatika. Namun mereka bukan operator tetapi fungsi yang menghasikan data numerik.
• Angka, variabel dan operator, operasi aritmatika dapat tergolong fungsi aritmatik, yang ditulis dengan argumen di dalam tanda kurung (tidak sebagai operator).
Contoh : untuk mencari akar dari 36 =>
?-X is sqrt(36).
X = 6
• Operator aritmatika tidak hanya dapat digunakan sebagai binary infix operator untuk mendeskripsikan selisih dari dua data numerik (X-6), tetapi juga sebagai unary prefix operator untuk mendeskirpsikan bentuk negatif dari data numerik.
Contoh : -X is 10, Y is –X-2.
X = 10, Y = -12
• Operator aritmatik dan fungsi aritmatik
X+Y the sum of X and Y
X-Y the difference of X and Y
X*Y the product of X and Y
X/Y the quotient of X and Y
X//Y the 'integer quotient' of X and Y (the result is truncated to the
nearest integer between it and zero)
X^Y X to the power of Y
-X the negative of X
abs(X) the absolute value of X
sin(X) the sine of X (for X measured in degrees)
cos(X) the cosine of X (for X measured in degrees)
max(X,Y) the larger of X and Y
sqrt(X) the square root of X
Contoh :

?- X is 30,Y is 5,Z is X+Y+X*Y+sin(X).
X = 30 ,
Y = 5 ,
Z = 185.5
o Meskipun predikat is biasa digunakan dalam pendeskripsian, argumen pertama juga dapat berupa angka atau variabel bound dengan nilai numerik. Sehingga nilai numerik dari dua argumen terhitung. Program akan berhasil jika sama dan gagal jika tidak sama.
Contoh : ?- X is 7,X is 6+1.
X = 7
?- 10 is 7+13-11+9.
no
?- 18 is 7+13-11+9.
yes


Unification

The previous description can be simplified by saying that the second argument of
the is/2 operator is evaluated and this value is then unified with the first argument.
This illustrates the flexibility of the concept of unification.
(a) Jika argumen pertama unbound variabel, maka merupakan bound nilai dari argumen kedua dan tujuan berhasil.
(b) Jika argumen pertama angka, atau variabel bound dengan nilai numerik akan dibandingkan dengan nilai argumen kedua. Jika sama, maka berhasil dan jika tidak akan gagal.

X is X+1 maka akan selalu gagal, jika X bukan bound.
?-X is 10,X is X+1
No
• Untuk meningkatkan hasil diperlukan perbedaan approach
/* Incorrect version */
increase(N):-N is N+1.
?- increase(4).
no
/*Correct version */
increase(N,M):-M is N+1.
?- increase(4,X).
X = 5


Operator Precedence in Arithmetic Expressions
• Jika ada lebih dari satu operator dalam operasi aritmatika
Contoh : A+B*C-D
o Pertama mengeksekusi B dan C
o Derajad kepentingannya : * dan /, + dan –
o Jika ada tanda kurung maka didahulukan

Relational Operators
• Merupakan infix operator, yaitu =:= =\= >>= < =< • Untuk membandingkan nilai dua operasi aritmatik • Akan berhasil jika nilai dari operasi pertama sama, kirang dari atau kurang dari dan sama dengan operasi kedua. • Kedua argumen haarus angka, variabel bound atau operasi aritmatik. Contoh : ?- 88+15-3=:=110-5*2. yes ?- 100=\=99. Yes

Equality operators

Ada 3 tipe operasi relasi untuk menidentifikasi persamaan dan pertidaksamaan yg sesuia dengan prlog. Tpe pertama membandingkan nilai aritmetika
E1=:=E2 succeeds if the arithmetic expressions E1 and E2 evaluate to the same
value.

Contoh
?- 6+4=:=6*3-8.
yes
?- sqrt(36)+4=:=5*11-45.
Yes
Arithmetic Expression Inequality =\=
E1=\=E2 succeeds if the arithmetic expressions E1 and E2 do not evaluate to the
same value
?- 10=\=8+3.
yes

Operasi logika

Menghubungkan 2 operator yang disebut goal.
-operator not
Menandakan negasi dari goal tersebut.
Goal yang telah dinegasi akan sukses jika goal asli gagal dan gagal jika goal asli sukses.
Contoh dengan klausa tunggal
?- not dog(fido).
no
?- dog(fred).
no
?- not dog(fred).
yes

-operator disjungsi( ;/2)
Untuk menerangkan operator infix yang mengambil 2 argument, dan keduanya merupakan goal.
Goal 1;goal2 sukses jika keduanya goal 1 atau goal 2 sukses.
Contoh :
?- 6<3;7 is 5+2.
yes