Advertisement
waydub12

plant.pro

Mar 22nd, 2021
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. % Start Rules (Knowledge Base)
  2. /* Knowledge Base */
  3. plant(dikotil):-
  4. tulang_daun_sejajar(yes),
  5. keping_lembaga_1(no),
  6. batang_bercabang(no),
  7. tidak_berbunga(yes),
  8. daun_tebal(yes),
  9. keping_lembaga_2(yes).
  10. plant(monokotil):-
  11. tulang_daun_sejajar(no),
  12. keping_lembaga_1(yes),
  13. batang_bercabang(yes),
  14. tidak_berbunga(yes),
  15. daun_tebal(no),
  16. keping_lembaga_2(no).
  17. % End Rules (Knowledge Base)
  18.  
  19. % Start User Interface
  20. /* Asking the user */
  21. tulang_daun_sejajar(X):-
  22. menuask(tulang_daun_sejajar, X, [yes, no]).
  23. keping_lembaga_1(X):-
  24. menuask(keping_lembaga_1, X, [yes, no]).
  25. batang_bercabang(X):-
  26. menuask(batang_bercabang, X, [yes, no]).
  27. tidak_berbunga(X):-
  28. menuask(tidak_berbunga, X, [yes, no]).
  29. daun_tebal(X):-
  30. menuask(daun_tebal, X, [yes, no]).
  31. keping_lembaga_2(X):-
  32. menuask(keping_lembaga_2, X, [yes, no]).
  33.  
  34. /* Menus for user & Remembering the answer*/
  35. menuask(A, V, _):-
  36. known(yes, A, V), % succeed if true
  37. !. % stop looking
  38. menuask(A, V, _):-
  39. known(_, A, V), % fail if false
  40. !,
  41. fail.
  42. menuask(A, V, MenuList) :-
  43. write('Apakah '), write(A), write('?'), nl,
  44. write(MenuList), nl,
  45. read(X),
  46. check_val(X, A, V, MenuList),
  47. asserta( known(yes, A, X) ),
  48. X == V.
  49.  
  50. /* Check input */
  51. check_val(X, _A, _V, MenuList) :-
  52. member(X, MenuList),
  53. !.
  54. check_val(X, A, V, MenuList) :-
  55. write(X), write(' is not a legal value, try again.'), nl,
  56. menuask(A, V, MenuList).
  57.  
  58. /* Member rules */
  59. member(X,[X|_]).
  60. member(X,[_|T]):-member(X,T).
  61. % End User Interface
  62.  
  63. % Start Simple Shell
  64. /* Simple shell */
  65. top_goal(X) :- plant(X).
  66.  
  67. solve :-
  68. abolish(known, 3),
  69. top_goal(X),
  70. write('The answer is '), write(X), nl.
  71. solve :-
  72. write('No answer found.'), nl.
  73.  
  74. /* Command loop */
  75. go :-
  76. greeting,
  77. repeat,
  78. write('> '),
  79. read(X),
  80. do(X),
  81. X == quit.
  82.  
  83. greeting :-
  84. write('This is the Clasification a Plant Prolog Exsys.'), nl,
  85. write('Enter start or quit at the prompt.'), nl.
  86.  
  87. /* Running Program */
  88. do(start) :-
  89. solve,
  90. !.
  91.  
  92. /* Quit Program */
  93. do(quit).
  94. do(X) :-
  95. write(X),
  96. write('is not a legal command.'), nl,
  97. fail.
  98. % End Simple Shell
  99.  
  100. /* handle undefined procedure */
  101. :- unknown(trace, fail).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement