$DO

C/C++ 프로그램을 아는 사람은 for 구문에 대해서 잘 알고 있을 것이다. C/C++의 for 구문이 ASAP에서는 $DO로 구현된다. for 구문을 살펴보면 for(int i=0; i<3; i++) {…}과 같은 문법 구조를 가지고 있다.  for 문은 반복 횟수가 결정된 반복문에 사용되는 것으로 for(초기값; 조건; 증감) { 명령문 } 을 의미한다. 위의 예를 보면, 먼저 for 문은 변수 i 에 0 을 넣어 변수를 초기화 시키고, i 가 3보다 작은지 조건을 확인한다. i 가 3 보다 작으면 { } 안의 명령문을 실행하고 명령문이 끝나면 증감을 계산한다(i++는 i 값에 1을 더하라는 뜻이다). 그러면 i 는 1이 되고, 조건을 다시 확인한 후 i 가 3보다 작으면 또 명령문을 실행한다. 이 루프를 계속 반복하면서 i 의 값을 증가시키게 되고,  i 가 3이 되어 조건을 만족하지 못하게 되면 명령문을 실행하지 않고 구문을 종료하게 된다.

DO Flow Chart
그림 8.3 $DO 명령어 흐름도

C/C++의 for 구문과 같은 문법을 ASPA에서는 $DO  초기값  종값  증감  { 명령문형식의 구문으로 사용하고 있다. 우선 프로그램을 하나 만들어 보자.

SYSTEM NEW
RESET

$DO  1  1
{
 
  SURFACE
    PLANE Z
0 ELLIPSE .5 .5
  OBJECT ‘PLANE_?’
    SHIFT X ?
}

WINDOW Y X
PLOT FACETS
RETURN

위의 프로그램을 보면 초기값이 -1 이고, 최종값이 1 이다. 증감을 표시해 주지 않으면 자동으로 +1 또는 -1의 정수값을 가지게 된다. 이때 증감의 방향은 초기값이 최종값에 도달할 수 있는 방향으로 자동 선택된다. 즉, 초기값이 최종값보다 작으면 +1이 되고, 초기값이 최종값보다 크면 -1이 된다. 위의 프로그램은 -1, 0, 1의 계산값을 가지게 되며, 총 3번 {…} 안의 명령문을 반복해서 실행 하게 된다.

for 문은 변수 i 를 통해 현재 어떤 값이 적용되는지 알 수 있다. 그러나, ASAP은 변수를 따로 만들지 않았다. 그럼, 어떻게 현재 적용되는 값을 알 수 있을까? 위의 프로그램을 자세히 보면 ?(물음표)를 사용하고 있는 것을 볼 수 있다. ASAP에서는 변수 이름을 따로 지정하지 않고 ?(물음표)를 통해서 현재 적용되고 있는 값을 알 수 있다. 위 프로그램을 실행시킨 후 생성된 Object의 이름을 보면 PLANE_-1, PLANE_0, PLANE_1로 되어 있는것을 확인할 수 있는데 이것은 ?에 현재 돌고있는 적용값이 들어간다는 것을 알 수 있다. 그리고, SHIFT 명령어를 통해서도 X 축으로 ?(적용값) 만큼 이동한 것을 확인 할 수 있다.

DO_3ea
그림 8.4 $DO -1 1 결과

$DO -1 1 2 로 프로그램을 변경해 보자. 그러면, -1, 1 의 두 값만이 만들어 진다. 이것은 증감값을 2로 설정하였기 때문이다.

DO_2ea
그림 8.5 $DO -1 1 2 결과

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: