이번 기사에서는 AutoLISP의 조건 함수에 대해 설명합니다.
일반적으로 프로그램은 단일 처리만 가능하지만 조건부 분기를 추가하여 처리에 유연성을 부여할 수 있습니다.
사용하기 편리한 AutoLISP 명령을 작성하는 데 도움이 되므로 AutoCAD를 효율화하고 싶은 분은 꼭 봐 주세요.
「만약 ○○라면 □□한다」라고 하는, 어느 조건을 채우거나 채우지 않는가로 처리를 분기시키는 것을 조건 분기라고 합니다.
조건의 설정에는 수치의 대소 관계를 조사하는 함수나, 논리 연산을 실시하는 함수등을 사용합니다.
이번에 소개하는 조건 분기의 함수는 다음의 3개입니다.
if는 조건 분기가 하나인 경우에 사용하는 함수입니다.
조건을 만족하면 THEN 문이 실행되고, 만족하지 않으면 ELSE 문이 실행됩니다.
이 함수에서는 조건식의 뒤를 THEN문, ELSE문과 자동으로 판단하기 때문에, THEN문과 ELSE문은 각각 1식 밖에 기술할 수 없다는 것에 주의해 주세요.
복수 기술하는 경우는 후술하는 progn를 이용해 1개에 정리하면 실행 가능합니다.
(if 조건식 THEN 문 [ELSE 문])
;입력한 수치가 3 미만인지 판정한다
(setq a (getint "정수를 입력하세요."))
(if (< a 3)
(print "3보다 작습니다.")
(print "3이상입니다.")
)
getint는 사용자에게 정수 입력을 요청하는 함수입니다.
progn은 인수로 표현한 표현식을 순차적으로 평가하고 마지막 표현식의 결과를 반환하는 함수입니다.
if에서는 THEN문과 ELSE문 각각 1식한 대응하고 있지 않습니다만, progn를 사용하는 것으로 복수의 식을 실행할 수 있게 됩니다.
(progn 식 ...)
;입력한 수치가 3이면 배의 수치를 표시하고, 다르면 "3이 아닙니다."라고 표시
(setq a (getint "정수를 입력하세요."))
(if (= a 3)
(progn
(setq a (* a 2))
(print a)
)
(print "3이 아닙니다.")
)
조건 분기가 여러 개 있는 경우 if에 if를 설명하는 방법도 있습니다.
그러나 표기가 복잡해지고 기술 실수가 일어나기 쉽고 수정 등이 힘들어 버립니다.
cond는 복수의 조건 분기를 알기 쉽게 표기할 수 있는 함수입니다.
조건과 처리가 세트로 되어 있어, 위로부터 차례로 조건의 판정 을 해 갑니다.
조건을 만족하는 것이 있으면 대응하는 처리를 실행해, 미판정의 조건은 스루 해 종료합니다.
(cond (조건식 처리) ...)
;입력한 수치가 3 또는 4일 때, 그 수만큼☆을 표시
(setq a (getint "정수를 입력하세요."))
(cond ((= a 3)
(print "☆☆☆"))
((= a 4)
(print "☆☆☆☆"))
(T
(print "3 또는 4가 아닙니다.")
)
)
조건 분기를 사용하면 보다 유연한 동작을 하는 프로그램을 작성할 수 있습니다.
if문을 사용할 수 있게 되면 프로그래밍이 즐거워지기 때문에, 꼭 시험해 주세요.
기능 | 내용 | 구문 |
if | 조건 분기가 하나일 때 사용한다. 조건을 만족하면 THEN문, 만족하지 않으면 ELSE문을 실행. |
(if 조건식 THEN 문 ELSE 문) |
progn | 인수로 한 식을 차례로 평가해 가고, 마지막 식의 결과를 돌려준다. |
(progn 식 ...) |
cond | 복수의 조건 분기를 알기 쉽게 표기할 수 있다. | (cond (조건식 처리) ...) |
AutoLISP의 문자열 함수 (0) | 2021.12.23 |
---|---|
조건을 만족하는 한 반복하는 함수 「while」 (0) | 2021.12.23 |
AutoLISP 비교 연산 (0) | 2021.12.22 |
AutoLISP의 논리 연산 설명 (0) | 2021.12.22 |
프로그래밍의 필수품! AutoLISP의 함수 (1) | 2021.12.22 |
댓글 영역