상세 컨텐츠

본문 제목

동작의 흐름을 조종하라! AutoLISP의 조건 함수 if

IT & Programming/LISP 공부

by 그림아이 2021. 12. 23. 02:00

본문

반응형

이번 기사에서는 AutoLISP의 조건 함수에 대해 설명합니다.

 

일반적으로 프로그램은 단일 처리만 가능하지만 조건부 분기를 추가하여 처리에 유연성을 부여할 수 있습니다.

사용하기 편리한 AutoLISP 명령을 작성하는 데 도움이 되므로 AutoCAD를 효율화하고 싶은 분은 꼭 봐 주세요.

 

조건 분기란?

「만약 ○○라면 □□한다」라고 하는, 어느 조건을 채우거나 채우지 않는가로 처리를 분기시키는 것을 조건 분기라고 합니다.

조건의 설정에는 수치의 대소 관계를 조사하는 함수나, 논리 연산을 실시하는 함수등을 사용합니다.

 

이번에 소개하는 조건 분기의 함수는 다음의 3개입니다.

소개하는 조건 분기의 함수
  1. 1개의 조건 분기: if
  2. 다중 표현식 그룹화: progn
  3. 여러 조건 분기: 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 (조건식 처리) ...)
기사의 내용이나 AutoLISP로 잘 모르는 곳이 있는 것 같으면, 코멘트나 메일로 부담없이 연락해 주세요!

 

프로그래밍

728x90
반응형

관련글 더보기

댓글 영역