17. 조건에 따라 다른 기능 실행하기 3 - (if)중첩
목표
논리함수
인 (or)
(and)
(not)
을 사용하여 원하는 조건
을 만들어봅시다.
논리함수
(if)
함수에 조건
은 한 가지만 추가할 수 있습니다.
1
(if 조건 참일때실행 [거짓일때실행])
만약 조건이 한가지가 아니라 여러가지라면 (and)
함수 또는 (or)
함수를 사용할 수 있습니다. 또는 특정조건에 해당하지 않을 경우에만 참일때실행
이 실행되게 하고 싶다면, (not)
을 사용하면 됩니다.
모든 조건을 만족하면 참 (and)
(and)
안에는 원하는 만큼 조건을 추가할 수 있습니다. 만약 (and)
함수 안의 모든 인자들이 참
인조건이면(nil
이 아니면) (and)
함수는 T
(참, true)를 반환합니다. 하지만 (and)
함수 내에 한가지라도 참
이 아닌 조건이 있다면 nil
을 반환합니다.
1
2
(and T T T T) ;T
(and T T nil T) ;nil
한 가지 조건이라도 만족하면 참 : (or)
(or)
안에도 원하는 만큼 조건을 추가할 수 있습니다. 만약 (or)
함수 안의 인자들 중 한개 이상이 참
인조건이면 (or)
함수는 T
(참, true)를 반환합니다. (or)
함수의 모든 인자가 거짓
인 조건일 경우에 nil
을 반환합니다.
1
2
(or T nil nil nil) ;T
(or nil nil nil nil) ;nil
조건에 해당하는 경우는 거짓 : (not)
(not)
함수는 인자로 1개의 조건을 받는데, 그 조건값의 반대를 반환합니다. 만약 인자가 참
인조건이면 nil
을 반환하고, 거짓
인 조건이면 T
를 반환합니다.
1
2
(not T) ;nil
(not nil) ;T
실습
(if)
함수의 조건
에 각 논리함수
들을 사용 해 보겠습니다. 사용자로부터 숫자를 입력받아서 조건에 따라서 흐름을 제어 해 봅시다.
먼저 형태는 다음과 같이 될겁니다. 알아보기 편하도록 (if)
함수와 각 논리함수들은 여러줄로 나누겠습니다.
1
2
3
4
5
6
7
8
9
(progn
(setq num (getint "메시지"))
(if
조건
참일때실행
[거짓일때실행]
)
(princ)
)
(and)
숫자를 입력받고, 입력받은 숫자가 특정범위(10이상 20미만)에 속하는지에 따라서 다른 메시지를 출력하는 예제입니다. 복붙 해 봅시다
1
2
3
4
5
6
7
8
9
10
11
12
(progn
(setq num (getint "\n숫자를 입력 해 주세요 : "))
(if
(and ;조건
(>= num 10)
(< num 20)
)
(princ "\n입력한 숫자는 10이상이고 20미만입니다.")
(princ "\n입력한 숫자는 10미만 혹은 20이상입니다.")
)
(princ)
)
(or)
실행결과는 동일하지만, (and)
가 아닌 (or)
함수를 통해 구현해봅니다. 복붙 해 봅시다
1
2
3
4
5
6
7
8
9
10
11
12
(progn
(setq num (getint "\n숫자를 입력 해 주세요 : "))
(if
(or ;조건
(< num 10)
(>= num 20)
)
(princ "\n입력한 숫자는 10미만 혹은 20이상입니다.") ;참일때실행
(princ "\n입력한 숫자는 10이상이고 20미만입니다.") ;거짓일때실행
)
(princ)
)
(not)
입력받은 정수가자연수(1 이상의 정수)가 아닌경우만 메시지를 보여줍니다. 복붙 해 봅시다
1
2
3
4
5
6
7
8
(progn
(setq num (getint "\n정수를 입력 해 주세요 : "))
(if
(not (>= num 1)) ;조건
(princ "\n입력된 수는 자연수가 아닙니다.") ;참일때실행
)
(princ)
)