슬롯 블로그 | 슬롯 철저한 활용 내비게이션No.13 Rulesheet Processing Mode

슬롯 커뮤니티 철저한 사용 블로그

No.13 Rulesheet Processing Mode

2017.03.24 Progress Corticon

이 항목은 Assist Co., Ltd. (https : //www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech13.html)의 재 인쇄입니다.

No.13 Rulesheet Processing Mode

이것은 2016 년 4 월부터 Progress Products를 담당 한 Tanahashi Hiroshi입니다. 올해 초에 우리 회사는 Kanji 캐릭터를 올해의 목표로 발표 할 것입니다. "de-out"을 발표하고 직접 프로그래밍 언어와 객체 지향 프로그래밍 언어를 목표로 코르티콘을 작업하고 싶습니다.

이제, 이번에는 슬롯 커뮤니티 시트에 처리 모드에 관한 기사를 작성하겠습니다.

버블 정렬

버블 분류는 알고리즘과 동의어이지만 대명사이기 때문에 JavaScript의 새로운 직원 교육에 사내를 사용합니다. 프로세스에는 서로 옆에 구성 요소의 인덱스를 비교하고 조건이 충족되면 교환하는 것이 포함됩니다.
반복 연산자를 사용하여 프로그램을 작성하겠습니다. 여기에서는 10 개의 숫자 배열 (요소)을 오름차순 순서로 정렬하는 사양이 포함 된 JavaScript 프로그램을 작성하겠습니다.

var warray = 새로운 배열 (100, 90, 80, 70, 60, 50, 40, 30, 20, 10);

노트
1) 비교 수는 요소 수입니다 -1Warray.length -1
2) 값은 임시 영역으로 저장되어 교환해야합니다var wint = warray [wcnt02]
3) 최대 값이 배열의 마지막 요소 [Warray.length] 한 반복
입니다.
3)은 다음 단계에서 중요한 이벤트이며, 하나의 반복은 배열의 마지막 요소에 대해 하나의 최대 값 만 결정 하므로이 반복을 추가로 반복해야합니다.
그리고이 반복 프로세스는 반복이 수행되면 하나의 최대 값 (최소값)이 결정되므로 한 번 줄여야한다는 것입니다. 이것을 구현하는 것은 다음과 같이 보일 것입니다 :

var warray = 새로운 배열 (100, 90, 80, 70, 60, 50, 40, 30, 20, 10);for (var wcnt01 = 0; wcnt01 <Warray.length -1; wcnt01 ++)for (var wcnt02 = 0; wcnt02 <Warray.Length -WCNT01-1; WCNT02 ++)

코르티콘의 버블 분류 (절차 프로그래밍 스타일)

코르티콘과 함께이 버블 정렬을 구현합시다.
JavaScript의 새로운 직원 교육에서 주요 초점은 프로그래밍 기술을 배우는 것입니다. 그러나 어떤 식 으로든, 공부에 대해 열정적 인 학생들이 매번이 목적을 무시하는 학생들이 있습니다. 배열 객체의 정렬 방법을 사용하여 약 10 분 안에 작업을 완료 한 다음 "내가 만들었지 만 작동하지 않습니다!" ... 이번에는 다시 생각합니다 ...
(배열 객체의 정렬 메소드는 문자열 정렬에 특화되어 있으므로 숫자를 정렬하려면 조금 더 비틀어 야합니다)
절차 프로그래밍의 제목에 따라 Corticon의 슬롯 커뮤니티 시트에서 위의 JavaScript 스크립트 코드를 구현하는 것이 바람직합니다. SortedBy Operator가 있으므로이를 사용하여 슬롯 커뮤니티을 작성하겠습니다.

볼륨 : ProceduralSort.ecore

이미지 1

먼저 입력/출력 정의볼륨 파일우리가 10 가지 요소를 정렬한다고 가정하면Sort Entity int01 속성 int10 속성 .
그리고 어휘를 추가하여 10 개의 요소를 정렬하는 작업 영역을 만들고 정렬합니다. 아마도 많은 구현 방법이 있지만 작업 영역을 동적으로 만들 수 있으며SortedBy Operator사용할 수 있습니다.

볼륨 : ProceduralSort.ecore

이미지 2

다음슬롯 커뮤니티 시트를 작성하십시오.볼륨 파일와 마찬가지로 많은 구현 방법이있을 수 있지만 다음과 같이 만들었습니다.

rulesheet : init.ers

init.ers 먼저, 요소를 저장할 컨테이너를 만듭니다.

이미지 3

행동 a 라인work.integer01 = 0사전 추론 자체 트리거(위의 이미지의 빨간색 프레임) 및 ACTION C LINE 사용temp.index = work.integer01 and temp.Ranking = -1 .
이 방법사전 추론 자체 트리거"절차 프로그래밍"이라고하는 카운터를 사용하여 숫자를 증가시키고 반복하려고 할 때 사용됩니다. 슬롯 커뮤니티 시트는 동작 e 행에 카운터를 설정합니다.
JavaScript 프로그램 코드를 다시 한 번 참조하십시오.
for (var wcnt01 = 0; wcnt01 <Warray.length -1; wcnt01 ++)
에 정의 된 스크립트와 동일하게 작동합니다. 이 처리 모드는 "절차 프로그래밍"을 한 사람들에게는 이해하기 쉽다고 생각합니다.

rulesheet : init2.ers

컨테이너를 만든 후 컨테이너에 요소를 넣습니다 init2.ers를 작성하십시오.

이미지 4

행의 조건 atemp.index| 그리고 액션 라인은temp.Value에 할당하십시오. 다음으로 처리 모드를 고급 추론으로 설정했습니다. init.ers사전 추론 자체 트리거카운터를 설정하지만 temp.Value의 값이 가정되기 때문에 고급 추론으로 이루어졌습니다. 획득 한 데이터로 항상 업데이트됩니다. 반대로temp.Value업데이트 할 수없고 처리 모드를 설정사전 추론 자체 트리거로 설정하여 카운터를 포함시켜야합니다. 왜냐하면사전 추론```데이터 상태가 변경되지 않으면 루프 반복이 중지됩니다. '(Corticon Studio : Rule Modeling Guide P156 참조) 따라서 루프 코스 중에도 데이터가 한 번 업데이트되지 않으면 루프 처리가 중단됩니다.

rulesheet : sort_init.ers

이제 두 개의 이전 슬롯 커뮤니티에 대한 정렬을 수행 할 준비가되었으므로 슬롯 커뮤니티에 대한 정렬 프로세스를 생성합니다.
첫 번째SortedBy- 첫 번째 sort_init.ers로 카운터를 초기화하십시오.

이미지 5

rulesheet : sort.ers

카운터 사용 a action a line SortedBy- 첫 번째 를 사용하여 순위를 결정하십시오. 이 부분을 구현하는 방법에는 여러 가지가 있지만 아래에서 Sort.ers만들어졌습니다.

이미지 6

init.ers Temp.Ranking-1Array.Rankingvalue0보다 작음array- sortedby (value) - first.ranking = work.integer01. 이것Array- SortedBy (value) - First.Ranking is Sort.ers로 처음으로 실행됩니다. 그래서이 슬롯 커뮤니티은입니다 사전 추론YA 사전 추론 자체 트리거설정되면 동일한 값이 남아 있습니다. 따라서 슬롯 커뮤니티 흐름에서 이것은 Sort.ers로 설정하십시오 배열 - SortedBy (value) - first.ranking이 루프 할 때마다 실행됩니다. 분류 과정은 이것입니다 sort_init.ers Sort.ers두 개의 슬롯 커뮤니티 시트로 완성하십시오.

rulesheet : init2.ers

마지막 I/O 어휘로 분류 한 결과를 반환하는 슬롯 커뮤니티 시트 sort_end.ers 를 작성하십시오.

이미지 7

이 과정은 init2.ers의 역 프로세스입니다. 처리 모드는 루프가 반복 되더라도 항상 값을 변경한다고 가정합니다.사전 추론로 설정하십시오.

RuleFlow : ProceduralSort.erf

다음 규칙 흐름 만들기 :

이미지 8

앞에서 설명한 노트 Sort.ers로 설정하십시오.

테스트 시트 : ProceduralSort.ert

버블 분류 슬롯 커뮤니티이 완료되었으므로 테스트합시다.

이미지 9

분류는 아무런 문제없이 수행되었지만 수많은 규칙의 정점이되었습니다. Corticon에는 첫 번째 또는 마지막 데이터를 조작하는 연산자가 있지만 순열을 보유하고 중간 데이터를 조작하는 연산자는 없습니다.
javaScript 소스에서는 문을 위해 외부를 제어 할 수 있지만 내부 내부 처리에 적합하지는 않습니다.

반면에,이 워크 플로에는 버블 분류가있는 불필요한 처리가 포함되어 있습니다.
예를 들어 JavaScript에 정의 된 경우

var warray = 새로운 배열 (10, 20, 30, 40, 50, 60, 70, 80, 100, 90);

의 요소의 경우 마지막 두 요소를 한 번만 교환하면되지만 비교 프로세스는 46 번 매우 높습니다. 다시 말해, 토론은 "46 개의 비교 프로세스 후에 10 가지 요소가 정렬된다"는 것이며 요소 교환이 주요 프로세스인지 요소 비교인지 여부를 말하기가 어려워집니다. 이것은 절차 프로그래밍의 장단점입니다.

그래서, Corticon의 고유 한 기능을 구현 해보자 프로그래밍 시스템이므로 시도해 봅시다.

코르티콘 (코르티콘 스타일)의 버블 분류

처리 모드에서 코르티콘의 버블 분류 (절차 프로그래밍 스타일) 사전 추론and사전 추론 자체 추론의 차이점을 이해 했습니까?
사전 추론"데이터 상태에 변경이 없으면 반복력이 중지해야합니다"모드에 있습니다. 사전 추론 자체 추론"데이터 상태가 변경되지 않더라도 반복을 강제하지 마십시오"모드에 있습니다.
(사전 추론 자체 트리거에 카운터가 나열되지 않으면사전 추론이동)

이 코르티콘 특성을 사용하면 실제로 버블 정렬을 쉽게 만들 수 있습니다. 이미 이해 했습니까? 기포 분류의 기본 과정은 "요소를 비교하고 교환하는 것"입니다. 교환 프로세스가 중단되면 프로세스가 완료됩니다. (= '데이터 상태에 변경이 없으면 반복이 중단되어야합니다'). 46 번 비교할 필요가 없습니다. 바로 구현합시다.

볼륨 : Sort.ecore

첫 번째볼륨 파일. I/O는 절차 프로그래밍 스타일과 같은 방식으로 정의됩니다.

이미지 10

그게 어휘 파일입니다. 놀랄 수도 있지만 정렬을위한 항목을 추가하는 것은 불가능합니다.temp유일한 속성.

룰 시트 : Sort.ers

다음에 슬롯 커뮤니티 시트를 만듭니다.

이미지 11

방금 "왼쪽과 오른쪽 요소를 비교하고 왼쪽 값이 더 큰 경우 교체하십시오"라고 말했습니다. 값을 교환해야합니다. sort.temp 그리고 움직입니다. 이것이 프로그래밍의 황금률입니다. 그리고이 슬롯 커뮤니티 시트에서사전 추론그리고 당신은 끝났습니다. 데이터 상태가 변경되지 않으면 Corticon은 강제 반복을 중단합니다. 또한 슬롯 커뮤니티이 하나만 있기 때문에 RuleFlow로 제어 할 필요가 없습니다.

테스트 시트 : Sort.ert

테스트를 실행합시다.

이미지 12

정렬은 아무런 문제없이 수행되었습니다. 절차 적 프로그래밍 스타일은 그렇게 쉽지 않습니다.

마지막

실제로 절차 프로그래밍처럼 보이는 슬롯 커뮤니티을 만드는 데 3 일 이상 걸렸습니다. 되돌아 보면, 나는 그것이 내가 원하는대로 효과가 없다는 사실을 조사하는 데 시간을 보냈고, 과정에서 나는 다른 문제를 발견했습니다. 한편, 코르티콘 스타일 슬롯 커뮤니티은 시험을 완료하는 데 한 시간이 걸렸습니다. 이번에는 결과에 놀랐지 만, 지난번에 지적한 비율적 프로그래밍의 사고 과정을 사용하여 슬롯 커뮤니티을 만들어야한다는 것을 깨달았습니다. 결과적으로 개발 노력이 크게 줄어들었고 코르티콘을 약간 검토했습니다.

"비공식 프로그래밍"이라는 아이디어와 함께 Corticon을 사용하십시오.

다운로드 닫기

닫기

[Thu, 2 월 16 일]

"Progress Corticon"실무 세미나

진행을 시각화하고 자동화를 촉진하는