학부공부/인공지능

Jess 기초 실습

IT grow. 2018. 11. 23. 22:53
반응형

Jess 를 Eclipse와 연동을 하여서 사용하는 방법 까지 알아보았다.


그런데 , 정확히 사용법을 몰라서 Jess.bat를 사용해서 기본적인 Jess 함수들을 알아 보겠다.


Jess 는 lips 처럼 , 수식계산이 맨 앞에 위치하게 된다.

전위표현식을 사용한다.


함수를 선언하는 방법을 알아보자.

deffunction 를 사용해서 함수를 선언할 수 있다.

그리고 printout t 를 통해서 java에서 사용하는 print 기능을 사용할 수 있다.

그리고 printout 마지막 문장에 crlf 만 붙여주면 다를게 없다.


한번 더 연습해 보자 . 

두 수의 값을 비교하는 max 라는 함수를 정의한다.

다음은 max 함수를 사용하여서 출력한 부분이다.

어째 , 감이 잡힐려나 모르겠다.


한번 더 해보자 .

이번엔 세 개의 숫자를 더하는 함수를 정의해 보자 .


sum 함수를 호출한 뒤 , 출력해 본다.



Jess에도 , if문이 존재한다.


bind ?x 1 의 의미는 ?x에 1를 저장한다 정도로 이해 하면 될 것같다.

Jess 에서는 변수 선언을 ?.... (물음표) 뒤에 값을 저장시켜줄 변수를 넣어준다.



Jess 에서는 facts라는 것이 있다.

이것은 java에서 클래스의 형태를 닮았다.

사용법은 다음과 같다.

위의 코드를 분석해 보자면 , 

deffacts facts이름 facts의 설명 / 내용들 .... 

의 형태를 이룬다.


특이한 점은 facts를 저장해 놓고 , reset을 해주어야 한다.

보니까 Jess는 어떤 자동화같은게 없는거 같다.

내가 reset을 해주는 이유는 값을 새롭게 해주었으니까 , 기존의 값은 사라지게 되는것이고,

새로운 값 위에 예를 들면 my-facts 를 넣어주는 것이다.

그리고 각 줄의 값들은 주소값 0 부터 시작해서 차례대로 위치하게 될 것이고 , 

주소값 0 에는 initial-fact가 위치한다.

초기화 한다는 의미같다.


다음은 while문이다.


while을 돌리기전에 bind 로써 ?i에 3값을 넣어주었다.

while문은 반복문으로써 ( 조건 ) 이 참일동안 반복이 된다.

즉 , 위의 반복문은 3이 0보다 클 경우에 while문이 돌아갈 것이다.


while문이 돌아가는 동안 ?i ( 3 ) 의 값은 1씩 줄어들 것이다.


3 ... 2 ... 1 .... 0이 되었을 때 , while의 조건에 부합하지 않으므로 , 

false를 반환하게 되는 것이다.



다음은 deftemplate 함수인데 , 이것은 클래스와 같다.

우리가 아는 클래스는 어떠한 특정 변수와 메소드로 이루어져 있다.


Jess 에서는 특정 변수는 slot으로 표현한다.

클래스는 template 로 표현한다.





template에 특정 값을 넣어줄 때는 , 

assert를 사용해서 값을 넣어 줄 수 있다.


template가 잘 들어 갔는지 확인해 주기 위해서는 facts 로 확인할 수 있다.



또한 , 들어가 있는 특정 값을 삭제해 주기 위해서는 다음과 같이 하면 된다.



이때 사용되는 함수는 retract 이다.


동일 하게 , 잘 삭제가 되었는지 확인하고 싶다면 , facts로 확인할 수 있다.



만약 , 들어가 있는 값을 수정하고 싶다면 다음처럼 하면 된다.

이 때 , modify 함수를 사용한다.










반응형