(작성중)

목표

숫자를 문자열로 변경하는 함수들을 사용 해 봅시다.


숫자와 문자열의 차이점

123 이라는 수가 있다고 합시다.
사람이 보기에는 숫자 123과 문자 **“123”**이 동일 해 보여도,
컴퓨터는 숫자와 문자열을 전혀 다른 데이터로 취급합니다.

숫자가 필요한 함수에 문자열 형태로 숫자를 주게되면, 그 함수는 오류가 발생하게 됩니다.

따라서 숫자를 문자열로, 또는 문자열을 숫자로 변환해야 할 때 사용하는 함수에 대해서 알아보려고 하는데요.

그 중 이번 글에서는 먼저 숫자를 문자열로 변환하는 함수들에 대해서 알아보겠습니다.


itoa & rtos

숫자에는 소숫점이 없는 정수와 소숫점이 포함되어 있는 실수 2가지가 있죠
그 중 정수를 문자열로 변환하는 함수는 (itoa)이고,
실수를 문자열로 변환하는 함수는 (rtos)입니다.

itoaInteger TO Alphabet의 약자이고,
rtosReal TO String의 약자입니다.
두 함수 모두 결국 문자열로 변환하는건데, 직관적이지 않은 이름이 아쉽긴 합니다.

정수는 실수에 포함되기 때문에 (rtos) 함수로 정수 또한 문자열로 변경할 수 있지만,
(itoa)함수로는 실수를 문자열로 변경할 수 없습니다.

itoa

(itoa 정수) 

rtos

(rtos 실수 모드 소숫점자리수) 

실수 : 문자열로 변경하기 원하는 실수입니다.
모드 : 문자열로 변경할 때, 어떤 형태[지수(1)/10진수(2)/피트+인치(3)/피트+분수(4)/분수(5)]로 변경할지 선택할 수 있습니다. 일반적으로 **10진수(2)**를 사용합니다.
소숫점자리수 : 실수는 무한히 많은 소숫점자리를 가질 수 있습니다. 따라서, 실수를 문자열로 변경하기 위해서는 소숫점 몇번째 자리까지를 문자열로 변경할지를 입력 해 줘야합니다. 입력한 자릿수에 맞춰서 반올림됩니다.

따라서 일반적으로 rtos를 사용하실 때는 아래처럼 사용한다고 생각하시면 됩니다

(rtos 실수 2 소숫점자리수) 

사용예시

command함수로 **문자(text)**객체를 입력 해 봅시다
사용자로부터 숫자를 입력받아서, 입력받은 숫자를 내용으로 하는
문자의 높이(크기)는 20, 각도는 0으로 고정하겠습니다.

사용자가 입력한 값을 문자(text) 저장하는 함수를 만들어봅시다.

목표

사용자로부터 문자열을 입력받는 (getstring)함수를 사용 해 봅시다.


getstring

사용자로부터 문자열를 입력받는 함수에는 (getstring)이 있습니다.
getstring에서 string문자열을 의미합니다.


사용형식

(getstring "메시지") 

(getstring)함수는 사용자에게 보여줄 메시지를 인자로 넣을 수 있습니다.


사용예시

command함수로 **문자(text)**객체를 생성 해 봅시다
사용자로부터 문자의 내용인 문자열을 입력받습니다.
문자의 높이(크기)는 20, 각도는 0으로 고정하겠습니다.

(command  "dt"  (getpoint "\n문자가 삽입 될 좌표를 클릭 해 주세요")  20  0  (getstring "\n문자의 내용을 입력 해 주세요 : ") ) 

dt(text)명령어는 순서대로 삽입점, 문자높이, 각도, 문자내용을 입력받습니다. 여기서 삽입점(getpoint)함수로, 문자내용(getstring)함수로 입력받아서 (command)함수로 dt명령어를 실행합니다.


목표

사용자로부터 숫자를 입력받는 (getint)함수와 (getreal)함수를 사용 해 봅시다.


getint & getreal

사용자로부터 숫자를 입력받는 함수에는 (getint)(getreal)이 있습니다.
getint에서 intInteger의 약자로, 소숫점이 없는 정수를 의미하구요.
getreal에서 realRealNumber의 약자로, 소숫점이 포함될 수 있는 실수를 의미합니다.


사용형식

getint

(getint "메시지")

getreal

(getreal "메시지")

(getint)함수와, (getreal)함수 모두 사용자에게 보여줄 메시지를 인자로 넣을 수 있습니다.


사용예시

command함수로 원을 그려봅시다.
사용자로부터 원의 중심점 좌표와 반지름을 입력받습니다.

(command
 "circle"
 (getpoint "\n원의 중심이 위치할 좌표를 클릭 해 주세요")
 (getint "\n원의 반지름을 입력 해 주세요 : ")
)

위 명령어를 실행 해 보시면, (getint) 함수를 사용했으므로, 사용자로부터 반지름을 입력 받을 때, 정수만 입력받을 수 있습니다.

Nov-08-2023 01-32-08.gif

만약 사용자가 소숫점이 포함되어 있는 실수를 입력하게 되면,
Nov-08-2023 01-35-18.gif
위와 같이 에러메시지가 표시되며, 정수를 입력받을 때 까지 다음으로 진행이 되지 않습니다.
굳이 반지름을 받아야 할 이유가 없다면, 여기서는 (getint)함수보다는 (getreal)함수를 사용하는 것이 더 좋을 것 같습니다.


getint? getreal?

숫자를 입력 받을 때 두 함수 중 무엇을 사용하는 것이 좋을까요?
상황에 따라서 더 적절하다고 판단되시는 것을 사용하시면 됩니다.

갯수, 인덱스처럼 소숫점을 가지면 안 되는 값을 입력받아야 할 때, 또는 정치수로 값을 입력받고 싶을 때는 (getint)함수를 사용하고,
비율, 치수 등 소숫점이 포함 될 수 있거나, 굳이 정수를 입력받을 필요가 없을 때(getreal)함수를 사용해도 좋을것으로 생각되네요.

목표

알림창을 띄우는 (alert)함수를 알아봅시다.


alert

일반적인 메시지는 하단 명령어창에 표시하는게 일반적이지만,
간혹 사용자로 하여금 중요한 내용을 알려야 할 때가 있습니다.
그럴때에는, (alert)함수로 알림창을 띄울 수 있습니다.

(alert "메시지")

한가지 단점이 있다면, 기본 (alert)함수로는 일방적으로 사용자에게 메시지를 전달하기만 하고, 사용자로부터 어떠한 값을 되돌려 받을 수는 없습니다.
만약 위와같은 기능을 구현하려면, DCL등으로 직접 대화상자를 만들어야 합니다.


간단한 예제

"Hello Autolisp!"이라는 글자를 띄어봅시다.

(alert "Hello Autolisp!")

Nov-08-2023 01-27-39.gif


주의사항

알림창은 사용자가 확인버튼을 누르기 전까지는 아무런 작업을 수행할 수 없게합니다.(이러한 것을 모달(modal)이라고 합니다.)
따라서 별로 중요하지도 않은 내용에 알림창을 띄우게 되면 사용자는 불편하겠죠.
정말 필요할 때에만 사용하는 것이 사용자 경험에 유리합니다.

+ Recent posts