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 함수를 사용한다.
'학부공부 > 인공지능' 카테고리의 다른 글
Jess 기초 실습2 (0) | 2018.11.26 |
---|---|
퍼지 전문가 시스템 (0) | 2018.11.25 |
Jess_Download + eclipse plugins (0) | 2018.11.20 |
LISP의 Lambda 함수 ( Lambda Functions ) (0) | 2018.10.13 |
LISP의 대응함수 ( Mapping Functions) (0) | 2018.10.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상