동작의 흐름을 조종하라! AutoLISP의 조건 함수 if
이번 기사에서는 AutoLISP의 조건 함수에 대해 설명합니다.
일반적으로 프로그램은 단일 처리만 가능하지만 조건부 분기를 추가하여 처리에 유연성을 부여할 수 있습니다.
사용하기 편리한 AutoLISP 명령을 작성하는 데 도움이 되므로 AutoCAD를 효율화하고 싶은 분은 꼭 봐 주세요.
조건 분기란?
「만약 ○○라면 □□한다」라고 하는, 어느 조건을 채우거나 채우지 않는가로 처리를 분기시키는 것을 조건 분기라고 합니다.
조건의 설정에는 수치의 대소 관계를 조사하는 함수나, 논리 연산을 실시하는 함수등을 사용합니다.
이번에 소개하는 조건 분기의 함수는 다음의 3개입니다.
- 1개의 조건 분기: if
- 다중 표현식 그룹화: progn
- 여러 조건 분기: cond
1개의 조건 분기: if
if는 조건 분기가 하나인 경우에 사용하는 함수입니다.
조건을 만족하면 THEN 문이 실행되고, 만족하지 않으면 ELSE 문이 실행됩니다.
이 함수에서는 조건식의 뒤를 THEN문, ELSE문과 자동으로 판단하기 때문에, THEN문과 ELSE문은 각각 1식 밖에 기술할 수 없다는 것에 주의해 주세요.
복수 기술하는 경우는 후술하는 progn를 이용해 1개에 정리하면 실행 가능합니다.
구문
(if 조건식 THEN 문 [ELSE 문])
인수 설명
- 조건식
분기의 판정을 하는 조건. nil 또는 nil이 아닌지를 판정한다. - THEN 문
조건식은 nil이 아닌 값을 반환하도록 실행됩니다. - ELSE 문
조건식은 nil을 반환할 때 실행됩니다. 선택 사항.
반환값
- THEN 문 실행 결과
THEN 문이 실행되면 THEN 문 결과가 반환됩니다. - ELSE 문 실행 결과
ELSE 문이 실행되면 ELSE 문 결과가 반환됩니다.
if 사용 예
;입력한 수치가 3 미만인지 판정한다
(setq a (getint "정수를 입력하세요."))
(if (< a 3)
(print "3보다 작습니다.")
(print "3이상입니다.")
)
getint는 사용자에게 정수 입력을 요청하는 함수입니다.
다중 표현식 그룹화: progn
progn은 인수로 표현한 표현식을 순차적으로 평가하고 마지막 표현식의 결과를 반환하는 함수입니다.
if에서는 THEN문과 ELSE문 각각 1식한 대응하고 있지 않습니다만, progn를 사용하는 것으로 복수의 식을 실행할 수 있게 됩니다.
구문
(progn 식 ...)
인수 설명
- 표현식
progn 내에서 순서대로 실행되는 표현식. 복수 기술될 수 있다.
반환값
- 최종 표현식의 실행 결과
progn에 기술 된 마지막 표현식의 실행 결과가 리턴됩니다.
progn의 사용 예
;입력한 수치가 3이면 배의 수치를 표시하고, 다르면 "3이 아닙니다."라고 표시
(setq a (getint "정수를 입력하세요."))
(if (= a 3)
(progn
(setq a (* a 2))
(print a)
)
(print "3이 아닙니다.")
)
여러 조건 분기: cond
조건 분기가 여러 개 있는 경우 if에 if를 설명하는 방법도 있습니다.
그러나 표기가 복잡해지고 기술 실수가 일어나기 쉽고 수정 등이 힘들어 버립니다.
cond는 복수의 조건 분기를 알기 쉽게 표기할 수 있는 함수입니다.
조건과 처리가 세트로 되어 있어, 위로부터 차례로 조건의 판정 을 해 갑니다.
조건을 만족하는 것이 있으면 대응하는 처리를 실행해, 미판정의 조건은 스루 해 종료합니다.
구문
(cond (조건식 처리) ...)
인수 설명
- 조건식
분기의 판정을 하는 조건. nil 또는 nil이 아닌지를 판정한다. - 처리
조건식이 nil 이외를 리턴하면 실행된다.
반환값
- 처리의 실행 결과
조건을 만족하는 처리를 실행하고, 그 결과가 되돌아 간다.
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 (조건식 처리) ...) |
