오늘은 변수에 대해서 설명을 해보도록 하겠습니다.
프로그래밍을 접해 보지 못한 분들은 변수란 단어조차 생소 할 수 있기에 쉽게 쉽게 설명을 해보도록 하겠습니다.
프로그래밍을 하다 보면 어떤 값을 저장해 두었다가 그 값을 불러와야 하는 경우가 발생하게됩니다.
이때 우리는 변수라는 하나의 객체를 생성해서 가져다 쓰거나 공유해서 사용하고 합니다.
즉 우리가 필요한 값을 저장해 두는 객체
이것이 바로 변수가 되겠습니다.
변수 타입에는 BOOLEAN , ARRAY , REAL , STRING등이 존재합니다.
뜻 그대로 필요한 객체로 생성하여 그 값을 저장해 둘수 있습니다.
BOOLEAN = TRUE / FALSE 참 과 거짓
STRING = 문자
ARRAY = 배열 ( 다수의 정보를 넣어둘때 사용합니다.)
REAL = 숫자
변수를 사용 하려면 일단 변수를 선언 해주어야 합니다.
변수의 선언은 내가 쓰려는 변수가 어떤 타입인지 선언을 해주는 것입니다.
아래와 같이 내가 필요로하는 속성으로 선언을 해주면 됩니다.
!Name = STRING()
!Grid = BOOLEAN()
!Lengths = ARRAY()
!number = REAL()
변수를 선언한 후에는 대입을 해주어야 합니다.
!number = 99
위에서 선언한 !number 객체에 99 를 대입하는 명령어 입니다.
하지만 프로그래밍 과정에서는 위 와는 틀리게
선언과 대입을 한번에 해줍니다.
!number = 99
위와 같이 바로 사용 가능합니다.
선언이 생략 된듯 하지만
!number = 99 이 자체가 현재 값이 숫자라는 것 = REAL() 이다라는 것을 선언해주는 것이 되는 거지요 ㅎㅎ
MEMBER 변수를 사용 할때는 즉시 필요한 값이 들어가는 것이 아니라
필요할때 가져다 쓰는 경우가 많기에 일단 선언만 해놓고 그에 맞는 값을
나중에 넣어서 쓰기에 SORCE 상에 선언과 대입이 존재 합니다.
다음으로는 함수에 대해서 알아보도록 하겠습니다. 우선 함수를 사용 하기 위해서는 함수를 만들어 주어야 합니다.함수를 생성하는 방법은
DEFINE METHOD .함수이름()
내용
ENDMETHOD
위와 같이 생성 하실 수 있습니다. DESIGN 부분에서 먼저 CALL을 이용해 함수를 호출하고 함수가 호출되면 함수의 내용들을 하나씩 수행하게 됩니다.
간단하게 SOURCE를 적어 보도록 하겠습니다.
DEFINE METHOD .MOVEEAST()
BY EAST 100
ENDMETHOD
위에 함수는 현재 함수를 CALL 하는 버튼이나 옵션등이 작동을 하게 되면 바로 수행을 해서 EAST 방향으로 100 만큼 이동을 하게 하는 명령어가 되겠습니다. MOVEEAST 함수는 명령어를 사용 해서 간단히 만들어 본 함수가 되겠습니다. 그럼 여기서 무조건 100씩 이동을 원하지 않고
내가 원하는 값만큼이동을 하고싶을땐 어떻게 해야할까요? 바로 이런 부분들이 PML 코딩이 되겠습니다. 방법은 다수 존재합니다. 하지만 저같은 경우에는 TEXT GADGET 에서 그 값을 받아서 실행하라고 코딩을 해보겠습니다.
그럼 한번 해보겠습니다. 우선 디자인 부분
BUTTON .NAME AT X+0.5 YMAX 'MOVE EAST' CALL|!THIS.MOVEEAST()| WIDTH 4
위와 같은 버튼 가젯을 생성하신 후에 이 버튼이 클릭이 되면 CALL 이란 함수가 MOVEEAST 함수를 호출 하게 되는 것입니다.
허나 버튼만 필요한 것이 아니고 값을 입력을 받아야 하는 TEXT 가젯도 필요 합니다.
TEXT .VAL AT X+0.5 YMAX '' CALL|| WIDTH 10 FMT
다음과 같이 TEXT GADGET를 생성해 주면 되겠습니다. 버튼과 텍스트 가젯이 다른 점은 바로 CALL 부분입니다. 저희는 TEXT에 입력된 값만
받아오면 되는 것이기 때문에 TEXT 상자가 수행할 함수는 존재하지 않는 것이 되겠습니다.
그럼 다시 함수로 가보겠습니다.
DEFIME METHOD .MOVEEAST()
BY EAST $!THIS.VAL.VALUE
ENDMETHOD
위와 같이 입력을 해주면 현재 TEXT GADGET에 존재하는 값을 받아서 BY EAST 명령을 수행을 하게 됩니다.
GADGET 설명 중 모르시는 부분이 있으시면 GADGET부분을 먼저 공부를 해주시기 바랍니다. 수정해 보고 분석하고 하면서
하나하나 타이핑을 해보시면 이해 하실 수 있습니다.
$!THIS.VAL.VALUE 는 현재 TEXT의 있는 값을 받아서 오라는 명령이 되겠습니다. 그럼 현재 사용자가 TEXT 창에 500 을 입력하게 되면 바로 그 값을 받아 오기에 EAST 방향으로 500이동이 되겠지요
ROTATE 기능도 마찬가지 입니다. 현재 필요한 값 즉 각도를 입력 받아서 명령어 만 수정해 주면 되겠습니다.
ROTATE BY 90 ABOU E
회전을 시켜라 EAST 방향으로 E는 방향을 나타내며 다들 아시겠지만 EAST WEST NORTH SOUTH UP DN 이 있습니다.
모든 명령어에 응용 가능 합니다. 그렇기 때문에 간단한 툴을 만들기 위해서라도 명령어 먼저 숙지 하시기 바랍니다.
그렇지 않으면 간단한 툴도 제대로 만들 수 없을 뿐만 아니라 명령어의 존재를 모르고 원하는 사항을 모드 PML로 입력하고 나서 명령어의 존재를 알게 된다면 허무해질수 있습니다.
저도 처음에는 반복문안에 반복문 조건문안에 조건문을 수도 없이 써서 어떠한 툴을 만들었는데
그 기능이 간단한 명령어 하나로 수행이 되는 것을 보고 제가 한심스럽기까지 한적 있습니다.
아직 이해가 안되시는 분들도 계실 겁니다.
하지만 저는 중요한 부분만 집고 넘어가도록 하겠습니다.
혼자 찾아보고 직접해봐야 본인것이 될 수 있으니까요 모든걸 적어 드리면 드래그 COPY 로 사용 하시는 분들이 존재 할거라 생각 되어집니다.
디자인 부분에서도 .NAME 등과 AT 부분등 아직 공부하지 않으신 분들은 쉽게 이해 하실수 없다는걸 알고 있습니다.
하지만 일단 도전을 해보시고 그래도 어렵다고 생각되시면 MAIL 주시거나 댓글을 남겨주세요 그럼 그부분에 대해서 친절하게 설명해 드리도록 하겠습니다.
아니면 공통된 어려운 부분이 존재하면 그 부분에 대해서 강의를 올리도록 하겠습니다.