프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

⚠ 이 강좌는 오토핫키 v1을 다룹니다

지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.

[프날 오토핫키] 10. 연산자의 종류 (상)

10강과 11강은 외울 것이 좀 있습니다. 무리하지 말고 천천히 외우셔도 되니, 숙지하셨으면 좋겠습니다.

강좌가 좀 긴데, 무작정 강좌만 읽으시지 말고 직접 코딩하면서 읽으셨으면 좋겠습니다.

 

특히, 예제들을 베끼지 말고 직접 써서 실행시켜보시면 한 번에 이해가 되실겁니다.


 연산자의 종류 

지난 강에서 말씀드렸다싶이, 우리가 배울 연산자는 총 5가지입니다. 이번엔 그 중 아래와 같은 세 가지를 배워보겠습니다.

  • 대입 연산자
  • 산술 연산자
  • 비교 연산자

하나씩 살펴보도록 하겠습니다.


 변수에 값을 넣는 대입 연산자 

대입 연산자는 두 가지가 있습니다. 하나는 :=, 다른 하나는 .=입니다.

대입 연산자를 기준으로 왼쪽에는 변수, 오른쪽에는 이 올 수 있습니다.


1. :=의 역할과 뜻

:=의 뜻은 "오른쪽에 있는 식을 왼쪽에 대입한다"입니다.

var := 1

→ var 변수에 1을 대입합니다.

 

변수에 변수를 담을 수 있습니다. 이 경우엔 변수가 가지고 있는 값이 들어갑니다

var1 := 10
var2 := var1

→ var2 변수엔 var1의 값인 10이 들어갑니다.

 

문자나 문자열을 담을 땐 아래와 같이 따옴표로 감싸줍니다.

var := "동해물과 백두산이 마르고 닳도록"

 

이렇게 섞어 쓸 수도 있습니다.

var1 := 12
var2 := "신에게는 아직 " var1 "척의 배가 남아있습니다."

→ var2 변수엔 "신에게는 아직 12척의 배가 남아있습니다"라는 문장이 담깁니다.

 


2. .=의 역할과 뜻

:=와 다르게 특수한 기능을 하는지라, 잘 쓰이지는 않습니다.

.=는 뒤에 오는 값을 현재 가지고 있는 값에 '붙이는' 역할을 합니다.

 

말이 어렵죠? 직접 보겠습니다.

var := 1

이렇게 이미 var 변수에는 1이 대입되어있습니다. 이 상태에서 .= 연산자로 2를 대입해보겠습니다.

var .= 2

var 변수에는 어떤 수가 들어가있을까요? 정답은 "12"입니다. 기존에 있던 1 뒤에, 새로 들어오는 2를 줄세우는 역할입니다.

 

비교해볼까요? 아래 두 연산의 결과를 알려드리겠습니다.

var1 := 100
var1 := 200
var1 := 300

var2 := 100
var2 .= 200
var2 .= 300

연산을 마친 후, var1에는 300이라는 값이 들어가있습니다.

반면, var2에는 100200300이라는 값이 있습니다.

 

이렇게 .=는 들어오는 값을 이어 붙입니다.


 변수를 사용하는 방법 

이렇게 변수에 값이 대입되기만 하면 아무 쓸모가 없지요. 변수를 사용하여 어떤 값이 담겨있는지 확인해봅시다.

 

변수를 사용할 땐 %기호로 변수를 감싸서 변수임을 표시해줍니다. 다음과 같이 말입니다.

var := 100
MsgBox, %var%

이해가 되셨나요? 대화 상자에는 100이 출력될 것입니다.

10강_대입1.ahk
0.00MB

 

아래 예제는 .=를 사용했습니다.

var := 100
var .= 200
var .= 300
MsgBox, %var%

10강_대입2.ahk
0.00MB

 

간단하지만 중요하니 꼭 숙지하고 계세요. 예외나 추가적인 사항은 강좌를 진행하면서 그때그때 말씀드리도록 하겠습니다.

 

 

그리고 한 번 대입된 변수는 값을 바꾸기 전까지는 남아있습니다. 변수를 사용한다고 값이 없어지는 것은 아니란 뜻입니다.

 

Q.
대입 연산자중에 =도 있지 않나요?

A.
네 맞습니다. 사실 =도 대입 연산자입니다. 그렇지만 일반적인 대입 연산자와는 성격이 조금 다르기에, 강좌에서는 다루지 않습니다.

1. =는 오토핫키에서 비교 연산자로 이미 쓰입니다.
2. =는 :=와 역할이 같은데도 불구하고 사용법이 다릅니다.
3. =를 대입 연산자로 설명 해버리면 :=와 =의 차이를 헷갈리실 수 있습니다.

여기서 2번, 사용법이 다르다는 말에 간단히 설명해드리면

:= 연산자는 우측에 변수가 오면 그냥 써주고, 문자열이 오면 ""로 감싸주지만
= 연산자는 우측에 변수가 오면 %%로 감싸주고, 문자열은 그냥 써주는 방식입니다.

용도가 같은 두 연산자를 아실 필요는 없습니다. 또한, 오토핫키 공식 문서에선 =를 이용한 대입 방식을 비권장하고, :=대입을 이용하라고 표기되어있습니다.

강좌에서 대입 연산자로는 :=만 사용하도록 하겠습니다. 여러분도 되도록이면 그렇게 사용해주시고요. 대입 연산자로서의 =는 설명드리지 않겠습니다.

 


 값을 계산해주는 산술 연산자 

산술 연산자는 보통 문자열이 있을 경우를 생각하지 않습니다. 우리는 숫자(와 숫자를 담은 변수)의 경우만 생각하도록 하겠습니다.

산술 연산자는 말 그대로 계산을 담당합니다. 우리가 아는 사칙연산말입니다.

 

연산을 한 후 대입을 해서 결과를 봅시다.

var := 2 + 3
MsgBox, %var% // 5가 출력됩니다.

쉽지요? 빼기, 곱하기, 나누기의 경우도 동일합니다. 각각 -, *, /입니다.

10강_산술1.ahk
0.00MB

 

var1 := 2
var2 := "한국을 빛낸 " var1 + 99 "명의 위인들"
MsgBox
, %var2%

10강_산술2.ahk
0.00MB

 


 대입과 연산을 하나로 묶은, 산술-대입 연산자 

위에서 알 수 있듯, 산술 연산자는 어차피 대입 연산자를 통해 대입해야 하는 경우가 대다수입니다.

그렇기때문에 사칙연산을 한 후 대입까지 한번해 해주는 연산자가 있습니다. 이를 산술-대입 연산자라고 부릅니다.

  • +=
  • -=
  • *=
  • /=

감이 오시죠? 예제로 확인하겠습니다.

var := 3
var += 2 //이 부분은 var := var + 2와 동일합니다.
MsgBox, %var% // 5가 출력됩니다.

10강_산술대입.ahk
0.00MB


 값끼리 비교해주는 비교 연산자 

비교 연산자가 제일 쉽습니다. 좌측과 우측에 있는 값을 비교하는 것이 전부입니다.

아직 MsgBox로 확인할 수는 없고, 쭉 읽고 '그렇구나' 하시고 넘어가시면 됩니다.

  • >
  • <

기본적으로 부등호가 있고요, (a > b)처럼 사용합니다.

 

  • <=
  • >= 

이런식으로 이상과 이하 부등호를 만들 수 있습니다.

 

  • =
  • <>

마지막으로 위는 같다, 아래는 다르다입니다. 외우기도 쉽죠?

 


 요약 

사실 너무 많은 내용을 한 강에 몰아넣은 느낌이 있습니다.

한 번에 이해하지 못하셔도 좋습니다. 마지막으로 이번 강 내용을 요약해보겠습니다.

[대입 연산자]
:= 오른쪽의 값을 왼쪽 변수로 대입한다.
.= 오른쪽의 값을 왼쪽 변수의 값에 이어붙인다.

[산술 연산자]
+ 더하기
- 빼기
* 곱하기
/ 나누기

[산술-대입 연산자]
+= 더해서 대입
-= 빼서 대입
*= 곱해서 대입
/= 나눠서 대입

[비교 연산자]
> 왼쪽이 오른쪽보다 더 크다.
< 오른쪽이 왼쪽보다 더 크다.
>= 왼쪽이 오른쪽보다 크거나 같다.
<= 오른쪽이 왼쪽보다 크거나 같다.
= 같다
<> 다르다

수고하셨습니다.

 

아마 전 강좌를 손꼽아서 이번 강이 제일 어려웠을 것 같습니다.

 

다음 강엔 논리 연산자와 증감 연산자입니다. 이번 강보다 쉽습니다. 

 


| 10. 연산자의 종류 (상) |