Aplikasi Swi PDF
Aplikasi Swi PDF
FINAL PROJECT
“APLIKASI SWI-PROLOG TENTANG SILSILAH KELUARGA”
Disusun oleh:
M.Chandra Cahyo (105090605111003)
Maulana Shalihin (105090600111039)
Agus Hariono (105090600111045)
Rezza Hary Dwi Satriya (105090607111005)
● Contoh aplikasi prolog yang sering kita temukan yaitu tentang pengenalan
dalam silsilah keluarga. Misal sebagai berikut:
Yuda dan Nina adalah sepasang suami istri dan mempunyai empat anak yang terdiri dari
tiga laki-laki dan satu perempuan, yaitu anak pertama adalah Rico, anak kedua adalah
Ambar, anak ketiga adalah Tatang, dan anak keempat adalah Joko. Ke empat anak tersebut
masing-masih sudah berkeluarga dan memiliki anak. Rico menikah dengan Dina dan
mempunyai lima anak yang terdiri dari dua laki-laki dan tiga perempuan, yaitu anak
pertama adalah Budi, anak kedua adalah Ani, anak ketiga adalah Rani, anak keempat
adalah Ajeng, dan anak kelima adalah Danang. Lalu anak kedua dari Yuda dan Nina yang
bernama Ambar menikah dengan Hari dan mempunyai empat anak yang terdiri dari satu
laki-laki dan tiga perempuan, yaitu anak pertama adalah Ika, anak kedua adalah Tuti, anak
ketiga adalah Rudi, dan anak keempat adalah Ana. Lalu anak ketiga dari Yuda dan Nina
bernama Tatang menikah dengan Yani dan mempunyai tiga anak yang terdiri dari dua
laki-laki dan satu perempuan, yaitu anak pertama adalah Eko, anak kedua adalah Dita, dan
anak ketiga adalah Tedi. Sedangkan anak keempat dari Yuda dan Nina bernama Joko yang
menikah dengan Endah dan mempunyai empat anak yang terdiri dari tiga laki-laki dan
satu perempuan, yaitu anak pertama adalah Adi, anak kedua adalah Nana, anak ketiga
adalah Rifki, dan anak keempat adalah Antok. Serta Budi menikah dengan Mila dan
mempunyai dua anak yang terdiri dari satu laki-laki dan satu perempuan yaitu Anton dan
Tina.
Keterangan di atas dapat digambarkan sebagai berikut:
● Kode prolog untuk silsilah keluarga di atas dapat dituliskan sebagai berikut:
Fakta (Fact):
laki_laki(yuda).
laki_laki(rico).
laki_laki(hari).
laki_laki(tatang).
laki_laki(joko).
laki_laki(budi).
laki_laki(danang).
laki_laki(rudi).
laki_laki(eko).
laki_laki(tedi).
laki_laki(adi).
laki_laki(rifki).
laki_laki(antok).
laki_laki(anton).
istri(yuda,nina).
istri(rico,dina).
istri(hari,ambar).
istri(tatang,yani).
istri(joko,endah).
istri(budi,mila).
anak(yuda,rico).
anak(yuda,ambar).
anak(yuda,tatang).
anak(yuda,joko).
anak(rico,budi).
anak(rico,ani).
anak(rico,ajeng).
anak(rico,rani).
anak(rico,danang).
anak(hari,ika).
anak(hari,tuti).
anak(hari,rudi).
anak(hari,ana).
anak(tatang,eko).
anak(tatang,dita).
anak(tatang,tedi).
anak(joko,adi).
anak(joko,nana).
anak(joko,rifki).
anak(joko,antok).
anak(budi,anton).
anak(budi,tina).
anak(nina,rico).
anak(nina,ambar).
anak(nina,tatang).
anak(nina,joko).
anak(dina,budi).
anak(dina,ani).
anak(dina,ajeng).
anak(dina,rani).
anak(dina,danang).
anak(ambar,ika).
anak(ambar,tuti).
anak(ambar,rudi).
anak(ambar,ana).
anak(yani,eko).
anak(yani,dita).
anak(yani,tedi).
anak(endah,adi).
anak(endah,nana).
anak(endah,rifki).
anak(endah,antok).
anak(mila,anton).
anak(mila,tina).
Aturan (Rule):
anak(A,C) :- istri(B,A), anak(B,C).
perempuan(A) :- not(laki_laki(A)).
suami(A,B) :- istri(B,A).
menikah(A,B) :- istri(A,B);
istri(B,A).
orang_tua(A,B) :- anak(B,A).
orang_tua(A,B,C) :- anak(B,A), istri(B,C).
ayah(A,B) :- anak(B,A), laki_laki(B).
ibu(A,C) :- anak(C,A), not(laki_laki(C)).
2. istri(yuda,nina).
Maksudnya bahwa istri yuda adalah nina.
3. anak(yuda,rico).
Maksudnya bahwa anak yuda adalah rico.
4. perempuan(A) :- not(laki_laki(A)).
Maksudnya bahwa perempuan bukanlah laki-laki
5. suami(A,B) :- istri(B,A).
Maksudnya bahwa suami kebalikan dari istri yaitu suami A adalah B dimana istri B
adalah A.
7. orang_tua(A,B) :- anak(B,A).
Maksudnya bahwa orang-tua kebalikan dari anak yaitu orang-tua A adalah B dimana
anak B adalah A.
● Syntax dan penjelasan input-output dari prolog silsilah keluarga di atas, sebagai
berikut:
1. Untuk menanyakan Yuda menikah dengan sapa, maka akan ditulis sebagai berikut: :
?- menikah(yuda,X).
X = nina
Output di atas menyatakan bahwa Yuda menikah dengan Nina. X=Nina.
2. Untuk menanyakan suami dari Nina, maka akan ditulis sebagai berikut :
?- suami(nina,X).
X = yuda.
atau
?- menikah(nina,X).
X = yuda.
Output di atas menyatakan bahwa Nina menikah dengan Yuda atau Nina mempunyai
suami yaitu Yuda. X=Yuda.
3. Untuk menanyakan anak dari Yuda dan Nina, maka akan ditulis sebagai berikut :
?- anak(yuda,X).
X = rico .
atau
?- anak(nina,X).
X = rico
Output di atas menyatakan bahwa anak dari Nina adalah Rico serta anak dari Yuda
adalah Rico. X=Rico.
4. Untuk menanyakan anak perempuan dari Yuda dan Nina, maka akan ditulis sebagai
berikut :
?- anak_perempuan(yuda,X).
X = ambar .
atau
?- anak_perempuan(nina,X).
X = ambar
Output di atas menyatakan bahwa anak perempuan dari Nina adalah Ambar serta anak
perempuan dari Yuda adalah Ambar. X=Ambar.
5. Untuk menanyakan apakah Joko adalah anak laki-laki dari Yuda dan Nina, maka akan
ditulis sebagai berikut :
?- anak_laki_laki(yuda,joko).
true .
atau
?- anak_laki_laki(nina,joko).
true
Output di atas menyatakan bahwa Joko merupakan anak laki-laki dari Yuda dan Nina.
True.
6. Untuk menanyakan orang tua dari Rico, maka akan ditulis sebagai berikut :
?- orang_tua(rico,X,Y).
X = yuda,
Y = nina .
Output di atas menyatakan bahwa orang tua dari Rico adalah Yuda dan Nina. X=yuda
Y=nina.
7. Untuk menanyakan ayah dari Ika, maka akan ditulis sebagai berikut :
?- ayah(ika,X).
X = hari
Output di atas menyatakan bahwa ayah dari Ika adalah Hari. X=hari.
8. Untuk menanyakan ibu dari Ika, maka akan ditulis sebagai berikut :
?- ibu(ika,X).
X = ambar
Output di atas menyatakan bahwa ibu dari Ika adalah Ambar. X=ambar.
9. Untuk menanyakan saudara kandung perempuan dari Ana, maka akan dirulis sebagai
berikut :
?- saudara_kandung_perempuan(ana,X).
X = ika
Output di atas menyatakan bahwa saudara kandung perempuan Ana adalah Ika.
X=ika.
10. Untuk menanyakan saudara kandung laki-laki dari Ana, maka akan dirulis sebagai
berikut :
?- saudara_kandung_laki_laki(ana,X).
X = rudi
Output di atas menyatakan bahwa saudara kandung laki-laki Ana adalah Rudi.
X=rudi.
11. Untuk menanyakan paman dari Tedi, maka akan ditulis sebagai berikut :
?- paman(tedi,X).
X = rico
Output di atas menyatakan bahwa paman Tedi yaitu Rico.X=rico.
12. Untuk menanyakan bibi dari Eko, maka akan ditulis sebagai berikut :
?- bibi(eko,X).
X = ambar
Output di atas menyatakan bahwa bibi Eko yaitu Ambar.X=ambar.
13. Untuk menanyakan saudara sepupu perempuan dari Antok, maka akan ditulis sebagai
berikut :
?- saudara_sepupu_perempuan(antok,X).
X = ani
Output di atas menyatakn bahwa saudara sepupu perempuan dari Antok yaitu Ani.
X=ani.
14. Untuk menanyakan saudara sepupu laki-laki dari Antok, maka akan ditulis sebagai
berikut :
?- saudara_sepupu_laki_laki(antok,X).
X = budi
Output di atas menyatakn bahwa saudara sepupu laki-laki dari Antok yaitu Budi.
X=budi.
15. Untuk menanyakan kakek dari Tina, maka akan ditulis sebagai berikut :
?- kakek(tina,X).
X = rico .
Output di atas menyatakan bahwa kakek Tina adalah Rico. X=rico.
16. Untuk menanyakan nenek dari Anton, maka akan ditulis sebagai berikut :
?- nenek(anton,X).
X = dina .
Output di atas menyatakan bahwa nenek Anton adalah Dina. X=dina.
17. Untuk menanyakan cucu_laki_laki dari Yuda, maka akan ditulis sebagai berikut :
?- cucu_laki_laki(yuda,X).
X = budi .
Output di atas menyatakan bahwa cucu laki-laki dari Yuda adalah Budi. X=budi.
18. Untuk menanyakan cucu_perempuan dari Nina, maka akan ditulis sebagai berikut :
?- cucu_perempuan(nina,X).
X = ani .
Output di atas menyatakan bahwa cucu perempuan dari Nina adalah Ani. X=ani.
19. Unutk menanyakan buyut laki-laki dari Anton, maka akan ditulis sebagai berikut :
?- buyut_laki_laki(anton,X).
X = yuda .
Output di atas menyatakan bahwa buyut laki-laki dari Anton adalah Yuda. X=yuda.
20. Unutk menanyakan buyut perempuan dari Tina, maka akan ditulis sebagai berikut :
?- buyut_perempuan(tina,X).
X = nina .
Output di atas menyatakan buyut perempuan dari Tina adalah Nina. X=nina.
21. Unutk menanyakan cicit laki-laki dari Yuda, maka akan ditulis sebagai berikut :
?- cicit_laki_laki(yuda,X).
X = anton .
Output di atas menyatakan bahwa cicit laki-laki dari Yuda adalah Anton. X=anton.
22. Unutk menanyakan cicit perempuan dari Nina, maka akan ditulis sebagai berikut :
?- cicit_perempuan(nina,X).
X = tina
Output di atas menyatakan bahwa cicit perempuan dari Nina adalah Tina. X=tina.