비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 104862
다음
진행 중
Lv.0
등록일: 2015-08-182015-08-18T14:57:08+09:00 2015-08-18T14:57:08+09:00카테고리: AutoCAD & CADian

1.if문과 2.if,and문의 차이 설명 부탁드려요

하기 1번이 간결하고 좋았으나,  조건식이 두가지가 되다보니  2번식을 써야 되는가 봅니다
1.if문과 2.if,and문의 차이 설명 부탁드려요
1.
(defun c:test ()
(setq a 1 b 1)
(if (= a b)
(prompt ”   ; 오류: no function definition”))
(princ “n   <<< ok ok >>>”) ;;본문 실행부
(princ)
)


2.
(defun c:test ()
(setq a 2 b 2)
(setq c 3 d 3)
(if (and (>= a b)(= c d))
(progn
(princ “n   <<< ok ok >>>”)  ;;본문 실행부
) ; end of progn
(progn
(prompt ”   ; 오류: no function definition”))
) ; end of progn
) ; end of if
) ; end of defun

  • 0
  • 4 4 답변
  • 14 조회
공유
  • Facebook

    관련 있는 질문들

    • mvsetup 및 align 안됨
    • mvsetup 및 align 안됨
    • 에어컨 실외기 도면
    • cad에서 기준점 복사 후 다른 파일에 붙여넣기 시 블록참조객체의 길이가 줄어들어있어요

    4 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 수야12 Lv.21
      2015-08-18T22:21:32+09:00답변 등록 답변 등록 일시 2015-08-18 10:21 pm

      if는 조건식(function)이고 and는 조건문(word)입니다 (맞는 표현인지는 ㅎㅎ;;;)

      if는 주어진 조건으로 “갑”이나 “을”중에 하나를 실행하라는 얘기고.
      and는 (and(>= a b)(= c d))  이걸 다르게 쓴다면 (= (>= a b)(= c d)) 이겠네요
      .그냥 한덩어리의 구문입니다 …
      그리고 progn 은 if 문 조건식 안에서 명령이 2개이상 될때 묶어주는 역활을 하는 구문 입니다 
      ex  
      ;;if문에서 한가지 명령만 실행할때..
       (setq a 2 b 1)
      (if (> a b) ;<= 여기 조건식은 결과만 명확하면 아무리길게 써도 상관없습니다
       (princ “a가 크네”) “갑”
       (princ “b가 크넼”) “을”
      )
      ;;if문에서 두가지 이상명령 실행할때..
       (setq a 2 b 1)
      (if (> a b)
       (prong
        (princ “a가 크네”) “갑”
        (princ “a가 큰데 뭐 보태준거 있슈?”) “얘도 갑”
       )
       (princ “b가 크넼”) “을”
      )
      보시다시피 a가 클때 a가 크네와 뭐 보태준거 있슈란 출력을 두번 하잖아요 그런데 progn 으로 
      안묵어 놓은 이런경우라면 
      (if (> a b) <=이부분엔 얼마나 많은 조건이 주어져도 상관없습니다 결과만 명확하면
        (princ “a가 크네”) “갑”
        (princ “a가 큰데 뭐 보태준거 있슈?”) “을”
        (princ “b가 크넼”) “넌 뭐니?”
      )
      컴퓨터가 헛갈리겠죠 
      잉 난 if문에서는 “갑”아니면 “을”인데 얘는 “갑” “을””병” 세개나 되네 하고 
      그래서 progn 으로 애들 필요부분을 묶어주면 “갑” 하고 “을 ” 두가지로 만 인식하게 되는겁니다..
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 자유천지 Lv.8
      2015-08-19T07:50:34+09:00답변 등록 답변 등록 일시 2015-08-19 7:50 am

      보충 설명 합니다. 수야님이 설명하신 “갑” “을”  은 참값(THRU) 과 거짓값 (FALSE) 입니다.
      if 문에서는 프로그램 실행이 두가지로 나뉘는데 조건문 결과값이 참값일때와 거짓일때로 나누어 집니다.
      리습에서는 참값을 T로하고 거짓값을 nil로 표현 합니다.
      (setq a 2 b 1) 일때 조건문 (> a b) 는 결과값이 T로 나옵니다.
      즉 if문 첫번째 실행문이 실행 된다는겁니다.
      (if (조건문)
          (첫번째실행문)
          (두번째 실행문)
      )
      첫번째 실행문은 조건식 (수식으로 표현 되기때문에조건문 또는조건식이라고도 함) 결과값이 참(T) 일때 실행하고 두번째 실행문은 결과식이 거짓(nil)일때 실행 합니다.
      여기서 ..
      실행식이 두개만 존재 해야되기 때문에 progn으로 묶어주는건 앞에서 수야님이 설명 하셨는데..
      실행문이 하나면 어떻게 되느냐..
      조건식이 참(T)일때만 실행 합니다.
      거럼 조건식이 거짓이때만 실행할수는 없는건가요?
      조건식이 (> a b) 일때는 (<  a b)가 되지만 (>= a b) 일경우는 즉 a가 b보다크거나 같을경우 의 역은
      (and (< a b) (/= a b)) 즉 a 가 b 보다 작고 a 와 b가 다를경우 입니다.. 복잡하죠..
      이렇게 결돠값을 반대로수식을 만들어야 T가 되어서 nil 실행문을 실행할수 있습니다..실행문이 한개일경우에..
      IF 문은 두개의 실행문을 실행한다 한개일경우는 조건식 결과값이 참값 (T)일경우에만 실행한다.
       (>= a b) 조건식 참값은 알겠는데 거짓값 식을 만들려니 복잡하다..그럴때 쓰라고..not 함수가 있는것입니다.
      (and (< a b) (/= a b))  하고 (not  (>= a b))같은겁니다.
      not함수는 조건식 결과값이 T일경우 nil결과값을 나타냅니다. 당연히 nil결과값일경우 T를 나타내지요

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2015-08-20T15:18:02+09:00답변 등록 답변 등록 일시 2015-08-20 3:18 pm

      넘 표현 많이 해주셨네요…. 논문감입니다  
      제가 다시 구성 해보았습니다
      (defun c:test ()
      (setq a 1 b 2)
      (setq c 1 d 3)
      (if (and (>= a b)(= c d))
      (progn
      (C:testL)
      )
      (progn
      (prompt ”   ; 오류: no function definition”))
      )
      (princ)
      )

      (defun c:testL ()
      (setq pt1 (getpoint ”   1st Pick Point: “))
      (setq pt2 (getpoint pt1 ”   2nd Pick Point: “))
      (Command “Line” Pt1 Pt2 “”))
      (princ)
      )

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. [Deleted User]
      2015-08-20T15:31:39+09:00답변 등록 답변 등록 일시 2015-08-20 3:31 pm

      수야12님이 짜신거 이제 보고 참조로 올렸습니다
      메인을 조건문을 주어 만족하면 서브로 프로그램 작동하는 방식입니다

      수야12또다른 방법입니다
      (defun c:test (/ _MakeLine a b c d)
       ;; subfunction ======================
       ;; 이부분은 Main함수부분 조건이 안맞으면 실행이 안됩니다
        (defun _MakeLine (/ pt1 pt2)
          (setq pt1 (getpoint ”   1st Pick Point: “))
          (setq pt2 (getpoint pt1 ”   2nd Pick Point: “))
          (Command “Line” Pt1 Pt2 “”)
        )
      ;;======================================================
      ;;
      ;; === Mainfunction =============  ;; 프로그램은 일단 이부분 부터 평가합니다..
      (setq a 1 b 2)
      (setq c 1 d 3)
       
         (if(and (>= a b)(= c d));;;;; 조건문 a가 b보다 크거나 같을때 만족하고, c 와 d가 같을때 다음 명령을 실행함
           (_MakeLine)
           (prompt “조건을 만족하지 않습니다~!!”)   
          )
      (princ)
      )

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved