$ASK

프로그램이 실행되는 중에 변수 값을 입력받는 방법에 대해서 알아보자. 프로그램을 작성할 때 기본적으로 변수 초기치를 설정해 놓고 시작한다. 그래서, 어떤값을 입력해주지 않으면 초기치로 설정된 값이 적용되게 한다. 그리고, 프로그램이 실행되는 도중에 변수 값을 바꾸고 싶을 때 이 매크로를 사용하면 아주 유용하다.

값을 입력하는 방법은 입력 윈도우를 하나 생성시켜서 값을 입력받고, 이 입력받은 값을 지정된 변수에 적용한다. ASAP이 C/C++과 같은 프로그래밍 개발툴이 아니기 때문에 윈도우를 생성하는 것을 어렵게 만들어 놓지는 않았다. $ASK 명령어만 사용하면 입력 윈도우 창을 만드는 것은 ASAP이 알아서 해준다.

아래의 프로그램을 먼저 실행시켜 보자.

SYSTEM NEW
RESET

Z=0
S=”RECTANGLE
R1=10
R2=10

$ASK  Z  ‘Enter location along Z
$ASK  S  ‘Enter RECTANGLE or ELLIPSE
&ASK  R1 R2  ‘Enter Radius X Y

SURFACE
  OPTICAL  Z
  (Z)  S”  (R1)  (R2)
OBJECT  ‘ASK_SHAPE’

WINDOW Y X
PLOT FACETS
  $VIEW
RETURN

그러면 아래와 같이 총 3개의 윈도우가 순차적으로 생성된다. 윈도우 안에 있는 텍스트박스에 아무것도 입력하지 않고 OK를 선택하면 초기치로 설정해준 값이 적용되어 Z=0의 위치에 폭이 20(±10)인 RECTANGLE이 만들어 진다. 이제 하나하나 알아보자.

우선 Z, S, R 이라는 변수에 초기값을 설정하였다. 특이한 것은 숫자 뿐만아니라 문자(열)도 변수에 넣을 수 있다는 것이다. 문자(열)를 변수에 넣는 방법은 문자(열)를 큰따음표(” “)로 묶어주면 된다. 그리고, 문자가 들어있는 변수를 사용할 때는 변수 이름 뒤에 큰따음표를 하나 찍어주면( S”) 된다. 앞에 찍거나(“S) 양쪽에 찍으면(“S”) 에러가 발생한다.

그림 8.12는 $ASK  Z  ‘Enter location along Z’ 명령어의 결과로 생긴 윈도우이다. 명령어의 구성을 보면 $ASK  변수명  ‘창에 보여줄 설명’의 순서대로 하나하나 작성하면 된다. 텍스트박스에 아무것도 입력하지 않고 OK 버튼을 누르면 초기값 0 이 Z 값으로 설정된다.

ASK_Z-location
그림 8.12 $ASK Z의 결과

다음은 $ASK  S  ‘Enter RECTANGLE or ELLIPSE ‘ 명령어의 결과로 나타나는 윈도우이다. 텍스트박스에는 RECTANGLE 이나 ELLISPE와 같은 특정 문자열을 입력해야 한다. 원하는 문자가 아닌 숫자와 같은 엉뚱한 값을 입력하게 되면, 입력된 값은 적용되지 않으며 초기값으로 설정된 RECTANGLE이 적용되어 사각형이 그려지게 된다.

ASK_Rectangle
그림 8.13 $ASK S의 결과

마지막으로 그림 8.14는 &ASK  R1 R2  ‘Enter Radius X Y ‘ 명령어에 대한 윈도우이다. 위의 두 명령어와 조금 다른 것이 2개 있다. 첫번째는 숫자값을 사용하는 변수명은 복수개가 올 수 있지만, 문자(열)는 복수개의 변수명을 나열하여 사용할 수 없다는 것이다. $ASK  변수명1  변수명2  ‘설명문’ 처럼 변수명을 빈칸으로 구분해서 띄어쓰기를 하면 된다. 입력을 받을 때도 스페이스바로 빈칸을 주어 값을 입력하면 된다. 입력받은 값은 순차적으로 변수명에 적용되기 때문에 순서를 잘 고려하여서 변수를 사용하면 된다. 두번째는 $ASK와 &ASK 이다. 앞의 두 명령은 $ASK를 사용하였고, 세번째 명령은 &ASK를 사용하였다. 뭔가 차이가 보이는가? 그렇다. 윈도우의 설명문 뒤에 초기값을 표시해 주느냐 아니냐의 차이다. 처음의 두 명령어는 윈도우의 설명문 뒤에 [Z:0], [RECTANGLE:0] 과 같이 설정된 초기값을 표시해 준다. 그러나, 세번째 명령어는 초기값에 대한 아무런 표시도 해주지 않는다. 이 두 명령어는 단지 이 차이밖에 없으니 사용자가 편한것을 선택하여 사용하면 된다.

ASK_Radius
그림 8.14 &ASK R의 결과

그림 8.15는 프로그램을 실행 후 아무값도 입력하지 않고 OK 버튼만 눌렀을 때의 결과이다.

ASK_RECT
그림 8.15 RECTANGLE의 결과

다음은 두번째 윈도우에서는 텍스트박스에 ELLIPSE 라고 입력하고, 다른 윈도우에서는 OK 버튼만 눌렀을때의 결과이다.

ASK_ELLIPSE
그림 8.16 ELLIPSE의 결과

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: