프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

15. 연산자의 종류 (하)


지난 강에 이어서 연산자를 마저 배워보겠습니다.

비교 연산자

비교 연산자는 두 값을 비교하여 그 결과를 보여주는 연산자입니다. 만약 비교의 값이 옳다면 1, 옳지 않다면 0을 뱉어내죠. 오토핫키에서 10은 각각 내장 변수 true, false와 대응되기 때문에, 비교의 참과 거짓을 나타내주는 연산자로도 볼 수 있습니다.

비교 연산자설명
<좌측이 우측 값보다 작다(미만)
<=좌측이 우측 값보다 작거나 같다(이하)
>좌측이 우측 값보다 크다(초과)
>=좌측이 우측 값보다 크거나 같다(이상)
=좌측과 우측의 값이 같다

예를 들어서, 한번 2 > 3 이라는 거짓된 조건식을 출력해볼까요?

1MsgBox(2 > 3)
거짓된 식(2가 3보다 크다) 출력

0이 출력되는 것을 볼 수 있습니다. 왜냐하면 2 > 3 은 거짓된 식이기 때문이죠. 반대로 3 > 2와 같이 참된 비교식을 작성해주면, 그 식은 1의 값을 갖습니다.

논리 연산자

논리 연산자는 두 값의 논리적인 연결 관계를 계산할 수 있는 연산자입니다. 감이 잘 안오실텐데 아래와 같은 것들이 논리 연산자입니다.

논리 연산자설명
&&(두 피연산자의 사이에 써서) 그리고(AND)
||(두 피연산자의 사이에 써서) 또는(OR)
!((피)연산자의 앞에 써서) 부정(NOT)

예를 둘어서 a가 10보다 크고, b의 값이 1이다를 표현하면 a > 10 && b = 1 이라고 표현할 수 있습니다. 이 경우 a > 10 이라는 수식과 b = 1 이라는 수식 중 한 개라도 거짓이라면 전체 식은 거짓이 되겠죠.

실제 숫자로 예를 들면, 1 = 1 && 2 > 3이라는 식에서, 1 = 1은 참일지라도 2 > 3은 명백한 거짓이기 때문에(2가 3보다 크진 않죠?) "1과 1은 같고, 2는 3보다 크다" 라는 전체 식은 거짓이 되는 셈입니다. MsgBox에 출력해보면 0이 나오겠네요.

논리 연산자를 사용해서 '같지 않다'를 만들 수도 있습니다. '같다'를 뜻하는 비교 연산자 =에 '부정'을 뜻하는 논리 연산자 !를 붙여주어, !=로 쓸 수 있습니다. 뜻은 '같지 않다'겠네요. 따라서 1 != 1의 결과는 0(거짓)이고, 1 != 2의 값은 1(참)입니다.

Tip: 부정(!)의 사용

부정을 나타내는 논리 연산자 !연산자 뿐만 아니라, 뒤에 오는 (피연산자)을 반전시키는 역할을 합니다. 값이 참이면 거짓으로, 거짓이라면 참으로 바꾸어주죠.

MsgBox!0을 출력해볼까요? 0은 오토핫키에서 거짓을 나타내므로, 이의 부정인 참(1)을 출력하겠죠.
여기서 파생되는 테크닉으로, 변수 := !변수는 변수의 값이 0이라면 1로, 1이라면 0으로 바꾸는 스위치 역할을 하게됩니다.

Tip: | 키의 위치

OR을 나타내는 논리 연산자 ||의 키보드 위치를 모르는 경우가 많습니다. 해당 키는 키보드에 따라 다르지만 대개 Enter키 위, ]키 오른쪽에 위치하고 있습니다. 역슬래시(\)를 Shift키와 함께 입력해주면 되죠.

증감 연산자

증감 연산자는 정말 쉽습니다. 그저 변수의 값을 1만큼 증가시키거나, 1만큼 감소시키는 역할을 하죠.

증감 연산자설명
++변수의 값을 1만큼 증가
--변수의 값을 1만큼 감소

예를 들어서, 이미 10이라는 값이 담긴 변수 var이 있다고 가정할 때, var--을 해주면 var 변수의 값은 9가 되죠.

1var := 10
2var--
3MsgBox(var)
증감 연산자의 사용

위의 코드 조각은 2번 줄에서 변수 var의 값이 9가 되죠. 따져보면 아래와 같은 세 구문은 모두 같은 역할을 합니다.

  • var := var + 1
  • var += 1
  • var++

Tip: 전위 표기와 후위 표기

타 프로그래밍 언어를 학습하신 분들은 전위표기, 후위표기를 사용해보신 경험이 있을 수 있습니다. 오토핫키 또한 증감연산자의 전위표기를 지원하여, ++var의 형태로 사용할 수 있습니다.

그러나 기초 강좌에서 전위표기와 후위표기까지 구분지어 설명드리기엔 다소 복잡해지기 때문에, 후위표기 방식인 var++만 강좌합니다. 본인이 전위표기/후위표기에 대한 학습을 타언어에서 하고 오셨다면 써도 좋습니다!

만약 전위표기 / 후위표기가 무엇인지 모르시거나 오토핫키로 프로그래밍을 처음 접하신 분들은 그냥 강좌에서 사용한대로 증감연산자를 써주시면 됩니다. 어디까지나 고급(?) 활용법이니까요. 궁금하신 분들은 시간 나실때 '전위표기식'에 대해 검색해주시는 것으로 충분합니다.

 

[점검 질문] 주어진 문장을 논리 연산자와 비교 연산자를 이용한 수식으로 표현해보세요.
연산자에 익숙해지기 위해 간단한 논리 문제를 내보겠습니다.

예) a는 2보다 크다.
a > 2
1. a는 3이면서 b는 10이다.
정답 펼치기/접기 a = 3 && b = 10
2. a가 100이거나 b가 1이다.
정답 펼치기/접기 a = 100 || b = 1
3. a는 b가 아니고, c는 d보다 크거나 같다.
정답 펼치기/접기 a != b && c >= d
4. a가 b거나, a는 c와 같거나, a는 1이다.
정답 펼치기/접기 a = b || a = c || a = 1
5. (a가 1이면서 b는 0)이거나, (c는 1)이다. (괄호는 소괄호로 표시)
정답 펼치기/접기 (a = 1 && b = 0) || (c = 1)
질문하러 가기